]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestStringPrepProfiles.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / stringprep / TestStringPrepProfiles.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2009, International Business Machines Corporation and         *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.dev.test.stringprep;\r
8 \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
12 \r
13 /**\r
14  * @author Michael Ow\r
15  *\r
16  */\r
17 public class TestStringPrepProfiles extends TestFmwk {\r
18     public static void main(String[] args) throws Exception {\r
19         new TestStringPrepProfiles().run(args);\r
20     }\r
21     \r
22     /*\r
23      * The format of the test cases should be the following:\r
24      * {\r
25      *     Profile name\r
26      *     src string1\r
27      *     expected result1\r
28      *     src string2\r
29      *     expected result2\r
30      *     ...\r
31      * } \r
32      * \r
33      * *Note: For expected failures add FAIL to beginning of the source string and for expected result use "FAIL".\r
34      */\r
35     private static String[][] testCases = {\r
36         {\r
37             "RFC4013_SASLPREP",\r
38             "user:\u00A0\u0AC6\u1680\u00ADpassword1",\r
39             "user: \u0AC6 password1"\r
40         },\r
41         {\r
42             "RFC4011_MIB",\r
43             "Policy\u034F\u200DBase\u0020d\u1806\u200C",\r
44             "PolicyBase d"\r
45         },\r
46         {\r
47             "RFC4505_TRACE",\r
48             "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD",\r
49             "Anony\u0020\u00A0mous\u3000\u0B9D\u034F\u00AD"\r
50         },\r
51         {\r
52             "RFC4518_LDAP",\r
53             "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing",\r
54             "LdapfiTest  ing"\r
55         },\r
56         {\r
57             "RFC4518_LDAP_CI",\r
58             "Ldap\uFB01\u00ADTest\u0020\u00A0\u2062ing12345",\r
59             "ldapfitest  ing12345"\r
60         },\r
61         {\r
62             "RFC3920_RESOURCEPREP",\r
63             "ServerXM\u2060\uFE00\uFE09PP s p ",\r
64             "ServerXMPP s p "\r
65         },\r
66         {\r
67             "RFC3920_NODEPREP",\r
68             "Server\u200DXMPPGreEK\u03D0",\r
69             "serverxmppgreek\u03B2"\r
70         },\r
71         {\r
72             "RFC3722_ISCSI",\r
73             "InternetSmallComputer\uFB01\u0032\u2075Interface",\r
74             "internetsmallcomputerfi25interface",\r
75             "FAILThisShouldFailBecauseOfThis\u002F",\r
76             "FAIL"\r
77         },\r
78         {\r
79             "RFC3530_NFS4_CS_PREP",\r
80             "\u00ADUser\u2060Name@ \u06DDDOMAIN.com",\r
81             "UserName@ \u06DDDOMAIN.com"\r
82         },\r
83         {\r
84             "RFC3530_NFS4_CS_PREP_CI",\r
85             "\u00ADUser\u2060Name@ \u06DDDOMAIN.com",\r
86             "username@ \u06DDdomain.com"\r
87         },\r
88         {\r
89             "RFC3530_NFS4_CIS_PREP",\r
90             "AA\u200C\u200D @@DomAin.org",\r
91             "aa @@domain.org"\r
92         },\r
93         {\r
94             "RFC3530_NFS4_MIXED_PREP_PREFIX",\r
95             "PrefixUser \u007F\uFB01End",\r
96             "PrefixUser \u007FfiEnd"\r
97         },\r
98         {\r
99             "RFC3530_NFS4_MIXED_PREP_SUFFIX",\r
100             "SuffixDomain \u007F\uFB01EnD",\r
101             "suffixdomain \u007Ffiend"\r
102         }\r
103     };\r
104     \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
132         } \r
133         \r
134         // Should not happen.\r
135         return -1;\r
136     }\r
137     \r
138     public void TestProfiles() {\r
139         String profileName = null;\r
140         StringPrep sprep = null;\r
141         String result = null;\r
142         String src = null;\r
143         String expected = null;\r
144         \r
145         for (int i = 0; i < testCases.length; i++) {\r
146             for (int j = 0; j < testCases[i].length; j++) {\r
147                 if (j == 0) {\r
148                     profileName = testCases[i][j];\r
149                     \r
150                     sprep = StringPrep.getInstance(getOptionFromProfileName(profileName));\r
151                 } else {\r
152                     src = testCases[i][j];\r
153                     expected = testCases[i][++j];\r
154                     try {\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
160                         }\r
161                     } catch (StringPrepParseException ex) {\r
162                         if (!src.startsWith("FAIL")) {\r
163                             errln("Failed: Test[" + i + "] StringPrep profile " + profileName + " got error: " + ex);\r
164                         }\r
165                     }\r
166                 }\r
167             }\r
168         }\r
169     }\r
170 }\r