blob: f28c965a9ccae7c06cf02c3d55c0139f59336c7b [file] [log] [blame]
/*
*******************************************************************************
* Copyright (C) 2009, International Business Machines Corporation and *
* others. All Rights Reserved. *
*******************************************************************************
*/
package com.ibm.icu.dev.test.stringprep;
import com.ibm.icu.dev.test.TestFmwk;
import com.ibm.icu.text.StringPrep;
import com.ibm.icu.text.StringPrepParseException;
/**
* @author Michael Ow
*
*/
public class TestStringPrepProfiles extends TestFmwk {
public static void main(String[] args) throws Exception {
new TestStringPrepProfiles().run(args);
}
/*
* The format of the test cases should be the following:
* {
* Profile name
* src string1
* expected result1
* src string2
* expected result2
* ...
* }
*
* *Note: For expected failures add FAIL to beginning of the source string and for expected result use "FAIL".
*/
private static String[][] testCases = {
{
"RFC4013_SASLPREP",
"user:\u00A0\u0AC6\u1680\u00ADpassword1",
"user: \u0AC6 password1"
},
{
"RFC4011_MIB",
"Policy\u034F\u200DBase\u0020d\u1806\u200C",
"PolicyBase d"
},
{
"RFC4505_TRACE",
"Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD",
"Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD"
},
{
"RFC4518_LDAP",
"Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing",
"LdapfiTest ing"
},
{
"RFC4518_LDAP_CI",
"Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing12345",
"ldapfitest ing12345"
},
{
"RFC3920_RESOURCEPREP",
"ServerXM\u2060\uFE00\uFE09PP s p ",
"ServerXMPP s p "
},
{
"RFC3920_NODEPREP",
"Server\u200DXMPPGreEK\u03D0",
"serverxmppgreek\u03B2"
},
{
"RFC3722_ISCSI",
"InternetSmallComputer\uFB01\u0032\u2075Interface",
"internetsmallcomputerfi25interface",
"FAILThisShouldFailBecauseOfThis\u002F",
"FAIL"
},
{
"RFC3530_NFS4_CS_PREP",
"\u00ADUser\u2060Name@ \u06DDDOMAIN.com",
"UserName@ \u06DDDOMAIN.com"
},
{
"RFC3530_NFS4_CS_PREP_CI",
"\u00ADUser\u2060Name@ \u06DDDOMAIN.com",
"username@ \u06DDdomain.com"
},
{
"RFC3530_NFS4_CIS_PREP",
"AA\u200C\u200D @@DomAin.org",
"aa @@domain.org"
},
{
"RFC3530_NFS4_MIXED_PREP_PREFIX",
"PrefixUser \u007F\uFB01End",
"PrefixUser \u007FfiEnd"
},
{
"RFC3530_NFS4_MIXED_PREP_SUFFIX",
"SuffixDomain \u007F\uFB01EnD",
"suffixdomain \u007Ffiend"
}
};
private int getOptionFromProfileName(String profileName) {
if (profileName.equals("RFC4013_SASLPREP")) {
return StringPrep.RFC4013_SASLPREP;
} else if (profileName.equals("RFC4011_MIB")) {
return StringPrep.RFC4011_MIB;
} else if (profileName.equals("RFC4505_TRACE")) {
return StringPrep.RFC4505_TRACE;
} else if (profileName.equals("RFC4518_LDAP")) {
return StringPrep.RFC4518_LDAP;
} else if (profileName.equals("RFC4518_LDAP_CI")) {
return StringPrep.RFC4518_LDAP_CI;
} else if (profileName.equals("RFC3920_RESOURCEPREP")) {
return StringPrep.RFC3920_RESOURCEPREP;
} else if (profileName.equals("RFC3920_NODEPREP")) {
return StringPrep.RFC3920_NODEPREP;
} else if (profileName.equals("RFC3722_ISCSI")) {
return StringPrep.RFC3722_ISCSI;
} else if (profileName.equals("RFC3530_NFS4_CS_PREP")) {
return StringPrep.RFC3530_NFS4_CS_PREP;
} else if (profileName.equals("RFC3530_NFS4_CS_PREP_CI")) {
return StringPrep.RFC3530_NFS4_CS_PREP_CI;
} else if (profileName.equals("RFC3530_NFS4_CIS_PREP")) {
return StringPrep.RFC3530_NFS4_CIS_PREP;
} else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_PREFIX")) {
return StringPrep.RFC3530_NFS4_MIXED_PREP_PREFIX;
} else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_SUFFIX")) {
return StringPrep.RFC3530_NFS4_MIXED_PREP_SUFFIX;
}
// Should not happen.
return -1;
}
public void TestProfiles() {
String profileName = null;
StringPrep sprep = null;
String result = null;
String src = null;
String expected = null;
for (int i = 0; i < testCases.length; i++) {
for (int j = 0; j < testCases[i].length; j++) {
if (j == 0) {
profileName = testCases[i][j];
sprep = StringPrep.getInstance(getOptionFromProfileName(profileName));
} else {
src = testCases[i][j];
expected = testCases[i][++j];
try {
result = sprep.prepare(src, StringPrep.ALLOW_UNASSIGNED);
if (src.startsWith("FAIL")) {
errln("Failed: Expected error for Test[" + i +"] Profile: " + profileName);
} else if (!result.equals(expected)) {
errln("Failed: Test[" + i + "] Result string does not match expected string for StringPrep test for profile: " + profileName);
}
} catch (StringPrepParseException ex) {
if (!src.startsWith("FAIL")) {
errln("Failed: Test[" + i + "] StringPrep profile " + profileName + " got error: " + ex);
}
}
}
}
}
}
}