2 *******************************************************************************
\r
3 * Copyright (C) 2009, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.dev.test.stringprep;
\r
9 import com.ibm.icu.dev.test.TestFmwk;
\r
10 import com.ibm.icu.text.StringPrep;
\r
11 import com.ibm.icu.text.StringPrepParseException;
\r
14 * @author Michael Ow
\r
17 public class TestStringPrepProfiles extends TestFmwk {
\r
18 public static void main(String[] args) throws Exception {
\r
19 new TestStringPrepProfiles().run(args);
\r
23 * The format of the test cases should be the following:
\r
33 * *Note: For expected failures add FAIL to beginning of the source string and for expected result use "FAIL".
\r
35 private static String[][] testCases = {
\r
38 "user:\u00A0\u0AC6\u1680\u00ADpassword1",
\r
39 "user: \u0AC6 password1"
\r
43 "Policy\u034F\u200DBase\u0020d\u1806\u200C",
\r
48 "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD",
\r
49 "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD"
\r
53 "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing",
\r
58 "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing12345",
\r
59 "ldapfitest ing12345"
\r
62 "RFC3920_RESOURCEPREP",
\r
63 "ServerXM\u2060\uFE00\uFE09PP s p ",
\r
68 "Server\u200DXMPPGreEK\u03D0",
\r
69 "serverxmppgreek\u03B2"
\r
73 "InternetSmallComputer\uFB01\u0032\u2075Interface",
\r
74 "internetsmallcomputerfi25interface",
\r
75 "FAILThisShouldFailBecauseOfThis\u002F",
\r
79 "RFC3530_NFS4_CS_PREP",
\r
80 "\u00ADUser\u2060Name@ \u06DDDOMAIN.com",
\r
81 "UserName@ \u06DDDOMAIN.com"
\r
84 "RFC3530_NFS4_CS_PREP_CI",
\r
85 "\u00ADUser\u2060Name@ \u06DDDOMAIN.com",
\r
86 "username@ \u06DDdomain.com"
\r
89 "RFC3530_NFS4_CIS_PREP",
\r
90 "AA\u200C\u200D @@DomAin.org",
\r
94 "RFC3530_NFS4_MIXED_PREP_PREFIX",
\r
95 "PrefixUser \u007F\uFB01End",
\r
96 "PrefixUser \u007FfiEnd"
\r
99 "RFC3530_NFS4_MIXED_PREP_SUFFIX",
\r
100 "SuffixDomain \u007F\uFB01EnD",
\r
101 "suffixdomain \u007Ffiend"
\r
105 private int getOptionFromProfileName(String profileName) {
\r
106 if (profileName.equals("RFC4013_SASLPREP")) {
\r
107 return StringPrep.RFC4013_SASLPREP;
\r
108 } else if (profileName.equals("RFC4011_MIB")) {
\r
109 return StringPrep.RFC4011_MIB;
\r
110 } else if (profileName.equals("RFC4505_TRACE")) {
\r
111 return StringPrep.RFC4505_TRACE;
\r
112 } else if (profileName.equals("RFC4518_LDAP")) {
\r
113 return StringPrep.RFC4518_LDAP;
\r
114 } else if (profileName.equals("RFC4518_LDAP_CI")) {
\r
115 return StringPrep.RFC4518_LDAP_CI;
\r
116 } else if (profileName.equals("RFC3920_RESOURCEPREP")) {
\r
117 return StringPrep.RFC3920_RESOURCEPREP;
\r
118 } else if (profileName.equals("RFC3920_NODEPREP")) {
\r
119 return StringPrep.RFC3920_NODEPREP;
\r
120 } else if (profileName.equals("RFC3722_ISCSI")) {
\r
121 return StringPrep.RFC3722_ISCSI;
\r
122 } else if (profileName.equals("RFC3530_NFS4_CS_PREP")) {
\r
123 return StringPrep.RFC3530_NFS4_CS_PREP;
\r
124 } else if (profileName.equals("RFC3530_NFS4_CS_PREP_CI")) {
\r
125 return StringPrep.RFC3530_NFS4_CS_PREP_CI;
\r
126 } else if (profileName.equals("RFC3530_NFS4_CIS_PREP")) {
\r
127 return StringPrep.RFC3530_NFS4_CIS_PREP;
\r
128 } else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_PREFIX")) {
\r
129 return StringPrep.RFC3530_NFS4_MIXED_PREP_PREFIX;
\r
130 } else if (profileName.equals("RFC3530_NFS4_MIXED_PREP_SUFFIX")) {
\r
131 return StringPrep.RFC3530_NFS4_MIXED_PREP_SUFFIX;
\r
134 // Should not happen.
\r
138 public void TestProfiles() {
\r
139 String profileName = null;
\r
140 StringPrep sprep = null;
\r
141 String result = null;
\r
143 String expected = null;
\r
145 for (int i = 0; i < testCases.length; i++) {
\r
146 for (int j = 0; j < testCases[i].length; j++) {
\r
148 profileName = testCases[i][j];
\r
150 sprep = StringPrep.getInstance(getOptionFromProfileName(profileName));
\r
152 src = testCases[i][j];
\r
153 expected = testCases[i][++j];
\r
155 result = sprep.prepare(src, StringPrep.ALLOW_UNASSIGNED);
\r
156 if (src.startsWith("FAIL")) {
\r
157 errln("Failed: Expected error for Test[" + i +"] Profile: " + profileName);
\r
158 } else if (!result.equals(expected)) {
\r
159 errln("Failed: Test[" + i + "] Result string does not match expected string for StringPrep test for profile: " + profileName);
\r
161 } catch (StringPrepParseException ex) {
\r
162 if (!src.startsWith("FAIL")) {
\r
163 errln("Failed: Test[" + i + "] StringPrep profile " + profileName + " got error: " + ex);
\r