]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestData.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / core / src / com / ibm / icu / dev / test / stringprep / TestData.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2003-2006, 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.text.IDNA;\r
10 import com.ibm.icu.text.StringPrepParseException;\r
11 \r
12 /**\r
13  * @author ram\r
14  *\r
15  * To change the template for this generated type comment go to\r
16  * Window>Preferences>Java>Code Generation>Code and Comments\r
17  */\r
18 public class TestData {\r
19     public static final char[][] unicodeIn ={\r
20         { \r
21             0x0644, 0x064A, 0x0647, 0x0645, 0x0627, 0x0628, 0x062A, 0x0643, 0x0644,\r
22             0x0645, 0x0648, 0x0634, 0x0639, 0x0631, 0x0628, 0x064A, 0x061F\r
23         },\r
24         {\r
25             0x4ED6, 0x4EEC, 0x4E3A, 0x4EC0, 0x4E48, 0x4E0D, 0x8BF4, 0x4E2D, 0x6587, \r
26            \r
27         },\r
28         {\r
29             0x0050, 0x0072, 0x006F, 0x010D, 0x0070, 0x0072, 0x006F, 0x0073, 0x0074,\r
30             0x011B, 0x006E, 0x0065, 0x006D, 0x006C, 0x0075, 0x0076, 0x00ED, 0x010D,\r
31             0x0065, 0x0073, 0x006B, 0x0079,\r
32         },\r
33         {\r
34             0x05DC, 0x05DE, 0x05D4, 0x05D4, 0x05DD, 0x05E4, 0x05E9, 0x05D5, 0x05D8,\r
35             0x05DC, 0x05D0, 0x05DE, 0x05D3, 0x05D1, 0x05E8, 0x05D9, 0x05DD, 0x05E2,\r
36             0x05D1, 0x05E8, 0x05D9, 0x05EA,\r
37         },\r
38         {\r
39             0x092F, 0x0939, 0x0932, 0x094B, 0x0917, 0x0939, 0x093F, 0x0928, 0x094D,\r
40             0x0926, 0x0940, 0x0915, 0x094D, 0x092F, 0x094B, 0x0902, 0x0928, 0x0939,\r
41             0x0940, 0x0902, 0x092C, 0x094B, 0x0932, 0x0938, 0x0915, 0x0924, 0x0947,\r
42             0x0939, 0x0948, 0x0902,\r
43         },\r
44         {\r
45             0x306A, 0x305C, 0x307F, 0x3093, 0x306A, 0x65E5, 0x672C, 0x8A9E, 0x3092,\r
46             0x8A71, 0x3057, 0x3066, 0x304F, 0x308C, 0x306A, 0x3044, 0x306E, 0x304B,\r
47            \r
48         },\r
49     /*  \r
50         {\r
51             0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,\r
52             0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,\r
53             0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C,\r
54         },\r
55     */\r
56         {   \r
57             0x043F, 0x043E, 0x0447, 0x0435, 0x043C, 0x0443, 0x0436, 0x0435, 0x043E,\r
58             0x043D, 0x0438, 0x043D, 0x0435, 0x0433, 0x043E, 0x0432, 0x043E, 0x0440,\r
59             0x044F, 0x0442, 0x043F, 0x043E, 0x0440, 0x0443, 0x0441, 0x0441, 0x043A,\r
60             0x0438,\r
61         },\r
62         {\r
63             0x0050, 0x006F, 0x0072, 0x0071, 0x0075, 0x00E9, 0x006E, 0x006F, 0x0070,\r
64             0x0075, 0x0065, 0x0064, 0x0065, 0x006E, 0x0073, 0x0069, 0x006D, 0x0070,\r
65             0x006C, 0x0065, 0x006D, 0x0065, 0x006E, 0x0074, 0x0065, 0x0068, 0x0061,\r
66             0x0062, 0x006C, 0x0061, 0x0072, 0x0065, 0x006E, 0x0045, 0x0073, 0x0070,\r
67             0x0061, 0x00F1, 0x006F, 0x006C,\r
68         },\r
69         {\r
70             0x4ED6, 0x5011, 0x7232, 0x4EC0, 0x9EBD, 0x4E0D, 0x8AAA, 0x4E2D, 0x6587,\r
71            \r
72         },\r
73         {\r
74             0x0054, 0x1EA1, 0x0069, 0x0073, 0x0061, 0x006F, 0x0068, 0x1ECD, 0x006B,\r
75             0x0068, 0x00F4, 0x006E, 0x0067, 0x0074, 0x0068, 0x1EC3, 0x0063, 0x0068,\r
76             0x1EC9, 0x006E, 0x00F3, 0x0069, 0x0074, 0x0069, 0x1EBF, 0x006E, 0x0067,\r
77             0x0056, 0x0069, 0x1EC7, 0x0074,\r
78         },\r
79         {\r
80             0x0033, 0x5E74, 0x0042, 0x7D44, 0x91D1, 0x516B, 0x5148, 0x751F,\r
81         },\r
82         {\r
83             0x5B89, 0x5BA4, 0x5948, 0x7F8E, 0x6075, 0x002D, 0x0077, 0x0069, 0x0074,\r
84             0x0068, 0x002D, 0x0053, 0x0055, 0x0050, 0x0045, 0x0052, 0x002D, 0x004D,\r
85             0x004F, 0x004E, 0x004B, 0x0045, 0x0059, 0x0053,\r
86         },\r
87         {\r
88             0x0048, 0x0065, 0x006C, 0x006C, 0x006F, 0x002D, 0x0041, 0x006E, 0x006F,\r
89             0x0074, 0x0068, 0x0065, 0x0072, 0x002D, 0x0057, 0x0061, 0x0079, 0x002D,\r
90             0x305D, 0x308C, 0x305E, 0x308C, 0x306E, 0x5834, 0x6240,\r
91         },\r
92         {\r
93             0x3072, 0x3068, 0x3064, 0x5C4B, 0x6839, 0x306E, 0x4E0B, 0x0032,\r
94         },\r
95         {\r
96             0x004D, 0x0061, 0x006A, 0x0069, 0x3067, 0x004B, 0x006F, 0x0069, 0x3059,\r
97             0x308B, 0x0035, 0x79D2, 0x524D,\r
98         },\r
99         {\r
100             0x30D1, 0x30D5, 0x30A3, 0x30FC, 0x0064, 0x0065, 0x30EB, 0x30F3, 0x30D0,\r
101            \r
102         },\r
103         {\r
104             0x305D, 0x306E, 0x30B9, 0x30D4, 0x30FC, 0x30C9, 0x3067,\r
105         },\r
106         // test non-BMP code points\r
107         {    \r
108             0xD800, 0xDF00, 0xD800, 0xDF01, 0xD800, 0xDF02, 0xD800, 0xDF03, 0xD800, 0xDF05,\r
109             0xD800, 0xDF06, 0xD800, 0xDF07, 0xD800, 0xDF09, 0xD800, 0xDF0A, 0xD800, 0xDF0B,\r
110            \r
111         },\r
112         {\r
113             0xD800, 0xDF0D, 0xD800, 0xDF0C, 0xD800, 0xDF1E, 0xD800, 0xDF0F, 0xD800, 0xDF16,\r
114             0xD800, 0xDF15, 0xD800, 0xDF14, 0xD800, 0xDF12, 0xD800, 0xDF10, 0xD800, 0xDF20,\r
115             0xD800, 0xDF21,\r
116            \r
117         },\r
118         // Greek\r
119         {\r
120             0x03b5, 0x03bb, 0x03bb, 0x03b7, 0x03bd, 0x03b9, 0x03ba, 0x03ac\r
121         },\r
122         // Maltese\r
123         {\r
124             0x0062, 0x006f, 0x006e, 0x0121, 0x0075, 0x0073, 0x0061, 0x0127,\r
125             0x0127, 0x0061\r
126         },\r
127         // Russian\r
128         {\r
129             0x043f, 0x043e, 0x0447, 0x0435, 0x043c, 0x0443, 0x0436, 0x0435,\r
130             0x043e, 0x043d, 0x0438, 0x043d, 0x0435, 0x0433, 0x043e, 0x0432,\r
131             0x043e, 0x0440, 0x044f, 0x0442, 0x043f, 0x043e, 0x0440, 0x0443,\r
132             0x0441, 0x0441, 0x043a, 0x0438\r
133         },\r
134    \r
135     };\r
136 \r
137     public static final String[] asciiIn = {\r
138         "xn--egbpdaj6bu4bxfgehfvwxn",\r
139         "xn--ihqwcrb4cv8a8dqg056pqjye",\r
140         "xn--Proprostnemluvesky-uyb24dma41a",\r
141         "xn--4dbcagdahymbxekheh6e0a7fei0b",\r
142         "xn--i1baa7eci9glrd9b2ae1bj0hfcgg6iyaf8o0a1dig0cd",\r
143         "xn--n8jok5ay5dzabd5bym9f0cm5685rrjetr6pdxa",\r
144     /*  "xn--989aomsvi5e83db1d2a355cv1e0vak1dwrv93d5xbh15a0dt30a5jpsd879ccm6fea98c",*/\r
145         "xn--b1abfaaepdrnnbgefbaDotcwatmq2g4l",\r
146         "xn--PorqunopuedensimplementehablarenEspaol-fmd56a",\r
147         "xn--ihqwctvzc91f659drss3x8bo0yb",\r
148         "xn--TisaohkhngthchnitingVit-kjcr8268qyxafd2f1b9g",\r
149         "xn--3B-ww4c5e180e575a65lsy2b",\r
150         "xn---with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n",\r
151         "xn--Hello-Another-Way--fc4qua05auwb3674vfr0b",\r
152         "xn--2-u9tlzr9756bt3uc0v",\r
153         "xn--MajiKoi5-783gue6qz075azm5e",\r
154         "xn--de-jg4avhby1noc0d",\r
155         "xn--d9juau41awczczp",\r
156         "XN--097CCDEKGHQJK",\r
157         "XN--db8CBHEJLGH4E0AL",\r
158         "xn--hxargifdar",                       // Greek\r
159         "xn--bonusaa-5bb1da",                   // Maltese\r
160         "xn--b1abfaaepdrnnbgefbadotcwatmq2g4l", // Russian (Cyrillic)\r
161        };\r
162 \r
163     public static final String[] domainNames = {\r
164         "slip129-37-118-146.nc.us.ibm.net",\r
165         "saratoga.pe.utexas.edu",\r
166         "dial-120-45.ots.utexas.edu",\r
167         "woo-085.dorms.waller.net",\r
168         "hd30-049.hil.compuserve.com",\r
169         "pem203-31.pe.ttu.edu",\r
170         "56K-227.MaxTNT3.pdq.net",\r
171         "dial-36-2.ots.utexas.edu",\r
172         "slip129-37-23-152.ga.us.ibm.net",\r
173         "ts45ip119.cadvision.com",\r
174         "sdn-ts-004txaustP05.dialsprint.net",\r
175         "bar-tnt1s66.erols.com",\r
176         "101.st-louis-15.mo.dial-access.att.net",\r
177         "h92-245.Arco.COM",\r
178         "dial-13-2.ots.utexas.edu",\r
179         "net-redynet29.datamarkets.com.ar",\r
180         "ccs-shiva28.reacciun.net.ve",\r
181         "7.houston-11.tx.dial-access.att.net",\r
182         "ingw129-37-120-26.mo.us.ibm.net",\r
183         "dialup6.austintx.com",\r
184         "dns2.tpao.gov.tr",\r
185         "slip129-37-119-194.nc.us.ibm.net",\r
186         "cs7.dillons.co.uk.203.119.193.in-addr.arpa",\r
187         "swprd1.innovplace.saskatoon.sk.ca",\r
188         "bikini.bologna.maraut.it",\r
189         "node91.subnet159-198-79.baxter.com",\r
190         "cust19.max5.new-york.ny.ms.uu.net",\r
191         "balexander.slip.andrew.cmu.edu",\r
192         "pool029.max2.denver.co.dynip.alter.net",\r
193         "cust49.max9.new-york.ny.ms.uu.net",\r
194         "s61.abq-dialin2.hollyberry.com",\r
195 \r
196     };\r
197     \r
198     public static final String[] domainNames1Uni = {\r
199         "\u0917\u0928\u0947\u0936.sanjose.ibm.com",\r
200         "www.\u0121.com",\r
201         //"www.\u00E0\u00B3\u00AF.com",\r
202         "www.\u00C2\u00A4.com",\r
203         "www.\u00C2\u00A3.com",\r
204         // "\\u0025", //'%' (0x0025) produces U_IDNA_STD3_ASCII_RULES_ERROR\r
205         // "\\u005C\\u005C", //'\' (0x005C) produces U_IDNA_STD3_ASCII_RULES_ERROR\r
206         //"@",\r
207         //"\\u002F",\r
208         //"www.\\u0021.com",\r
209         //"www.\\u0024.com",\r
210         //"\\u003f",\r
211         // These yeild U_IDNA_PROHIBITED_ERROR\r
212         //"\\u00CF\\u0082.com",\r
213         //"\\u00CE\\u00B2\\u00C3\\u009Fss.com",\r
214         //"\\u00E2\\u0098\\u00BA.com",\r
215         "\u00C3\u00BC.com"\r
216     };\r
217     public static final String[] domainNamesToASCIIOut = {\r
218         "xn--31b8a2bwd.sanjose.ibm.com",\r
219         "www.xn--vea.com",\r
220         //"www.xn--3 -iia80t.com",\r
221         "www.xn--bba7j.com",\r
222         "www.xn--9a9j.com",\r
223        // "\u0025",\r
224        // "\u005C\u005C",\r
225        // "@",\r
226        // "\u002F",\r
227        // "www.\u0021.com",\r
228        // "www.\u0024.com",\r
229        // "\u003f",\r
230         "xn--14-ria7423a.com"\r
231         \r
232     };\r
233 \r
234     public static final String[] domainNamesToUnicodeOut = {\r
235         "\u0917\u0928\u0947\u0936.sanjose.ibm.com",\r
236         "www.\u0121.com",\r
237         //"www.\u00E0\u0033\u0020\u0304.com",\r
238         "www.\u00E2\u00A4.com",\r
239         "www.\u00E2\u00A3.com",\r
240        // "\u0025",\r
241        // "\u005C\u005C",\r
242        // "@",\r
243        // "\u002F",\r
244        // "www.\u0021.com",\r
245        // "www.\u0024.com",\r
246        // "\u003f",\r
247         "\u00E3\u0031\u2044\u0034.com"\r
248         \r
249     };\r
250 \r
251 \r
252     public static class ErrorCase{\r
253 \r
254         public char[] unicode;\r
255         public String ascii;\r
256         public Exception expected;\r
257         public boolean useSTD3ASCIIRules;\r
258         public boolean testToUnicode;\r
259         public boolean testLabel;\r
260         ErrorCase(char[] uniIn, String asciiIn, Exception ex,\r
261                    boolean std3, boolean testToUni, boolean testlabel){\r
262             unicode = uniIn;\r
263             ascii = asciiIn;\r
264             expected = ex;\r
265             useSTD3ASCIIRules = std3;\r
266             testToUnicode = testToUni;\r
267             testLabel = testlabel; \r
268             \r
269         }\r
270     }\r
271     public static final ErrorCase[] errorCases = {\r
272           \r
273         \r
274         new ErrorCase( new char[]{ \r
275             0x0077, 0x0077, 0x0077, 0x002e, /* www. */\r
276             0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,\r
277             0x070F,/*prohibited*/\r
278             0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,\r
279             0x002e, 0x0063, 0x006f, 0x006d, /* com. */\r
280            \r
281         },\r
282         "www.xn--8mb5595fsoa28orucya378bqre2tcwop06c5qbw82a1rffmae0361dea96b.com",\r
283         new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR),\r
284         false, true, true),\r
285 \r
286         new ErrorCase( new char[]{ \r
287                 0x0077, 0x0077, 0x0077, 0x002e, /* www. */\r
288                 0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,\r
289                 0x0221, 0x0234/*Unassigned code points*/,\r
290                 0x002e, 0x0063, 0x006f, 0x006d, /* com. */\r
291                \r
292             },\r
293             "www.xn--6la2bz548fj1gua391bf1gb1n59ab29a7ia.com",\r
294 \r
295             new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR),\r
296             false, true, true\r
297         ),\r
298        new ErrorCase( new char[]{ \r
299                 0x0077, 0x0077, 0x0077, 0x002e, /* www. */\r
300                 0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,\r
301                 0x0644, 0x064A, 0x0647,/*Arabic code points. Cannot mix RTL with LTR*/\r
302                 0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,\r
303                 0x002e, 0x0063, 0x006f, 0x006d, /* com. */\r
304                \r
305             },\r
306             "www.xn--ghBGI4851OiyA33VqrD6Az86C4qF83CtRv93D5xBk15AzfG0nAgA0578DeA71C.com",\r
307             new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR),\r
308             false, true, true\r
309         ),\r
310         new ErrorCase( new char[]{ \r
311                 0x0077, 0x0077, 0x0077, 0x002e, /* www. */\r
312                 /* labels cannot begin with an HYPHEN */\r
313                 0x002D, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,\r
314                 0x002E, \r
315                 0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,\r
316                 0x002e, 0x0063, 0x006f, 0x006d, /* com. */\r
317                \r
318             \r
319             },\r
320             "www.xn----b95Ew8SqA315Ao5FbuMlnNmhA.com",\r
321             new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),\r
322             true, true, false\r
323         ),\r
324         new ErrorCase( new char[]{ \r
325                 /* correct ACE-prefix followed by unicode */\r
326                 0x0077, 0x0077, 0x0077, 0x002e, /* www. */\r
327                 0x0078, 0x006e, 0x002d,0x002d,  /* ACE Prefix */\r
328                 0x002D, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,\r
329                 0x002D, \r
330                 0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,\r
331                 0x002e, 0x0063, 0x006f, 0x006d, /* com. */\r
332                \r
333             \r
334             },\r
335             /* wrong ACE-prefix followed by valid ACE-encoded ASCII */ \r
336             "www.XY-----b91I0V65S96C2A355Cw1E5yCeQr19CsnP1mFfmAE0361DeA96B.com",\r
337             new StringPrepParseException("",StringPrepParseException.ACE_PREFIX_ERROR),\r
338             false, false, false\r
339         ),\r
340         /* cannot verify U_IDNA_VERIFICATION_ERROR */\r
341 \r
342         new ErrorCase( new char[]{\r
343             0x0077, 0x0077, 0x0077, 0x002e, /* www. */\r
344             0xC138, 0xACC4, 0xC758, 0xBAA8, 0xB4E0, 0xC0AC, 0xB78C, 0xB4E4, 0xC774,\r
345             0xD55C, 0xAD6D, 0xC5B4, 0xB97C, 0xC774, 0xD574, 0xD55C, 0xB2E4, 0xBA74,\r
346             0xC5BC, 0xB9C8, 0xB098, 0xC88B, 0xC744, 0xAE4C, \r
347             0x002e, 0x0063, 0x006f, 0x006d, /* com. */\r
348            \r
349           },\r
350           "www.xn--989AoMsVi5E83Db1D2A355Cv1E0vAk1DwRv93D5xBh15A0Dt30A5JpSD879Ccm6FeA98C.com",\r
351           new StringPrepParseException("",StringPrepParseException.LABEL_TOO_LONG_ERROR),\r
352           false, true, true\r
353         ),  \r
354         new ErrorCase( new char[]{\r
355             0x0077, 0x0077, 0x0077, 0x002e, /* www. */\r
356             0x0030, 0x0644, 0x064A, 0x0647, 0x0031, /* Arabic code points squashed between EN codepoints */\r
357             0x002e, 0x0063, 0x006f, 0x006d, /* com. */\r
358            \r
359           },\r
360           "www.xn--01-tvdmo.com",\r
361           new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR),\r
362           false, true, true\r
363         ),  \r
364     \r
365         new ErrorCase( new char[]{\r
366             0x0077, 0x0077, 0x0077, 0x002e, // www. \r
367             0x206C, 0x0644, 0x064A, 0x0647, 0x206D, // Arabic code points squashed between BN codepoints \r
368             0x002e, 0x0063, 0x006f, 0x006d, // com. \r
369            \r
370           },\r
371           "www.XN--ghbgi278xia.com",\r
372           new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR),\r
373           false, true, true\r
374         ),\r
375         new ErrorCase( new char[] {\r
376             0x0077, 0x0077, 0x0077, 0x002e, // www. \r
377             0x002D, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, // HYPHEN at the start of label \r
378             0x002e, 0x0063, 0x006f, 0x006d, // com. \r
379            \r
380           },\r
381           "www.-abcde.com",\r
382           new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),\r
383           true, true, false\r
384         ),\r
385         new ErrorCase( new char[] {\r
386             0x0077, 0x0077, 0x0077, 0x002e, // www. \r
387             0x0041, 0x0042, 0x0043, 0x0044, 0x0045,0x002D, // HYPHEN at the end of the label\r
388             0x002e, 0x0063, 0x006f, 0x006d, // com. \r
389            \r
390           },\r
391           "www.abcde-.com",\r
392           new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),\r
393           true, true, false\r
394         ),\r
395         new ErrorCase( new char[]{\r
396             0x0077, 0x0077, 0x0077, 0x002e, // www. \r
397             0x0041, 0x0042, 0x0043, 0x0044, 0x0045,0x0040, // Containing non LDH code point\r
398             0x002e, 0x0063, 0x006f, 0x006d, // com. \r
399            \r
400           },\r
401           "www.abcde@.com",\r
402           new StringPrepParseException("",StringPrepParseException.STD3_ASCII_RULES_ERROR),\r
403           true, true, false\r
404         ),\r
405         new ErrorCase( new char[]{\r
406             0x0077, 0x0077, 0x0077, 0x002e, // www. \r
407              // zero length label\r
408             0x002e, 0x0063, 0x006f, 0x006d, // com. \r
409           },\r
410           "www..com",\r
411           new StringPrepParseException("",StringPrepParseException.ZERO_LENGTH_LABEL),\r
412           true, true, false\r
413         ),\r
414     };\r
415 \r
416 \r
417      public static final class ConformanceTestCase{\r
418          String comment;\r
419          String input;\r
420          String output;\r
421          String profile;\r
422          int flags;\r
423          Exception expected;\r
424          private static byte[] getBytes(String in){\r
425              if(in==null){\r
426                  return null;\r
427              }\r
428              byte[] bytes = new byte[in.length()];\r
429              for(int i=0; i < in.length();i++){\r
430                  bytes[i] = (byte)in.charAt(i);\r
431              }\r
432              return bytes;\r
433          }\r
434          ConformanceTestCase(String comt, String in, String out,\r
435                               String prof, int flg, Exception ex)\r
436                               {\r
437                                   \r
438              try{\r
439                  comment = comt;\r
440                  byte[] bytes = getBytes(in);\r
441                  input = new String(bytes,"UTF-8");\r
442                  bytes = getBytes(out);\r
443                  output = (bytes==null)? null : new String(bytes,"UTF-8");\r
444                  profile = prof;\r
445                  flags = flg;\r
446                  expected = ex;\r
447              }catch (Exception e){\r
448                  e.printStackTrace();\r
449                  throw new RuntimeException();\r
450              }\r
451          }\r
452        }\r
453        \r
454        public static final ConformanceTestCase[] conformanceTestCases =\r
455        {\r
456   \r
457          new ConformanceTestCase(\r
458            "Case folding ASCII U+0043 U+0041 U+0046 U+0045",\r
459            "\u0043\u0041\u0046\u0045", "\u0063\u0061\u0066\u0065",\r
460            "Nameprep", IDNA.DEFAULT, \r
461            null\r
462 \r
463          ),\r
464          new ConformanceTestCase(\r
465            "Case folding 8bit U+00DF (german sharp s)",\r
466            "\u00C3\u009F", "\u0073\u0073", \r
467            "Nameprep", IDNA.DEFAULT, \r
468            null\r
469          ),\r
470          new ConformanceTestCase(\r
471            "Non-ASCII multibyte space character U+1680",\r
472            "\u00E1\u009A\u0080", null, \r
473            "Nameprep", IDNA.DEFAULT,\r
474            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
475          ),\r
476          new ConformanceTestCase(\r
477            "Non-ASCII 8bit control character U+0085",\r
478            "\u00C2\u0085", null, \r
479            "Nameprep", IDNA.DEFAULT,\r
480            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
481          ),\r
482          new ConformanceTestCase(\r
483            "Non-ASCII multibyte control character U+180E",\r
484            "\u00E1\u00A0\u008E", null, \r
485            "Nameprep", IDNA.DEFAULT,\r
486            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
487          ),\r
488          new ConformanceTestCase(\r
489            "Non-ASCII control character U+1D175",\r
490            "\u00F0\u009D\u0085\u00B5", null, \r
491            "Nameprep", IDNA.DEFAULT,\r
492            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
493          ),\r
494          new ConformanceTestCase(\r
495            "Plane 0 private use character U+F123",\r
496            "\u00EF\u0084\u00A3", null, \r
497            "Nameprep", IDNA.DEFAULT,\r
498            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
499          ),\r
500          new ConformanceTestCase(\r
501            "Plane 15 private use character U+F1234",\r
502            "\u00F3\u00B1\u0088\u00B4", null, \r
503            "Nameprep", IDNA.DEFAULT,\r
504            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
505          ),\r
506          new ConformanceTestCase(\r
507            "Plane 16 private use character U+10F234",\r
508            "\u00F4\u008F\u0088\u00B4", null, \r
509            "Nameprep", IDNA.DEFAULT,\r
510            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
511          ),\r
512          new ConformanceTestCase(\r
513            "Non-character code point U+8FFFE",\r
514            "\u00F2\u008F\u00BF\u00BE", null, \r
515            "Nameprep", IDNA.DEFAULT,\r
516            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
517          ),\r
518          new ConformanceTestCase(\r
519            "Non-character code point U+10FFFF",\r
520            "\u00F4\u008F\u00BF\u00BF", null,\r
521            "Nameprep", IDNA.DEFAULT,\r
522            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
523          ),\r
524      /* \r
525          {\r
526            "Surrogate code U+DF42",\r
527            "\u00ED\u00BD\u0082", null, "Nameprep", InternationalizedDomainNames.DEFAULT,\r
528            U_IDNA_PROHIBITED_ERROR\r
529          },\r
530     */\r
531          new ConformanceTestCase(\r
532            "Non-plain text character U+FFFD",\r
533            "\u00EF\u00BF\u00BD", null, \r
534            "Nameprep", IDNA.DEFAULT,\r
535            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
536          ),\r
537          new ConformanceTestCase(\r
538            "Ideographic description character U+2FF5",\r
539            "\u00E2\u00BF\u00B5", null, \r
540            "Nameprep", IDNA.DEFAULT,\r
541            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
542          ),\r
543          new ConformanceTestCase(\r
544            "Display property character U+0341",\r
545            "\u00CD\u0081", "\u00CC\u0081",\r
546            "Nameprep", IDNA.DEFAULT, \r
547            null\r
548 \r
549          ),\r
550 \r
551          new ConformanceTestCase(\r
552            "Left-to-right mark U+200E",\r
553            "\u00E2\u0080\u008E", "\u00CC\u0081", \r
554            "Nameprep", IDNA.DEFAULT,\r
555            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
556          ),\r
557          new ConformanceTestCase(\r
558 \r
559            "Deprecated U+202A",\r
560            "\u00E2\u0080\u00AA", "\u00CC\u0081", \r
561            "Nameprep", IDNA.DEFAULT,\r
562            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
563          ),\r
564          new ConformanceTestCase(\r
565            "Language tagging character U+E0001",\r
566            "\u00F3\u00A0\u0080\u0081", "\u00CC\u0081", \r
567            "Nameprep", IDNA.DEFAULT,\r
568            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
569          ),\r
570          new ConformanceTestCase(\r
571            "Language tagging character U+E0042",\r
572            "\u00F3\u00A0\u0081\u0082", null, \r
573            "Nameprep", IDNA.DEFAULT,\r
574            new StringPrepParseException("",StringPrepParseException.PROHIBITED_ERROR)\r
575          ),\r
576          new ConformanceTestCase(\r
577            "Bidi: RandALCat character U+05BE and LCat characters",\r
578            "\u0066\u006F\u006F\u00D6\u00BE\u0062\u0061\u0072", null, \r
579            "Nameprep", IDNA.DEFAULT,\r
580            new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)\r
581          ),\r
582          new ConformanceTestCase(\r
583            "Bidi: RandALCat character U+FD50 and LCat characters",\r
584            "\u0066\u006F\u006F\u00EF\u00B5\u0090\u0062\u0061\u0072", null,\r
585            "Nameprep",IDNA.DEFAULT ,\r
586            new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)\r
587          ),\r
588          new ConformanceTestCase(\r
589            "Bidi: RandALCat character U+FB38 and LCat characters",\r
590            "\u0066\u006F\u006F\u00EF\u00B9\u00B6\u0062\u0061\u0072", "\u0066\u006F\u006F \u00d9\u008e\u0062\u0061\u0072",\r
591            "Nameprep", IDNA.DEFAULT,\r
592            null\r
593          ),\r
594          new ConformanceTestCase(\r
595            "Bidi: RandALCat without trailing RandALCat U+0627 U+0031",\r
596            "\u00D8\u00A7\u0031", null, \r
597            "Nameprep", IDNA.DEFAULT,\r
598            new StringPrepParseException("",StringPrepParseException.CHECK_BIDI_ERROR)\r
599          ),\r
600          new ConformanceTestCase(\r
601            "Bidi: RandALCat character U+0627 U+0031 U+0628",\r
602            "\u00D8\u00A7\u0031\u00D8\u00A8", "\u00D8\u00A7\u0031\u00D8\u00A8",\r
603            "Nameprep", IDNA.DEFAULT,\r
604            null\r
605          ),\r
606          new ConformanceTestCase(\r
607            "Unassigned code point U+E0002",\r
608            "\u00F3\u00A0\u0080\u0082", null, \r
609            "Nameprep", IDNA.DEFAULT,\r
610            new StringPrepParseException("",StringPrepParseException.UNASSIGNED_ERROR)\r
611          ),\r
612 \r
613     /*  // Invalid UTF-8\r
614          {\r
615            "Larger test (shrinking)",\r
616            "X\u00C2\u00AD\u00C3\u00DF\u00C4\u00B0\u00E2\u0084\u00A1\u006a\u00cc\u008c\u00c2\u00a0\u00c2"\r
617            "\u00aa\u00ce\u00b0\u00e2\u0080\u0080", "xssi\u00cc\u0087""tel\u00c7\u00b0 a\u00ce\u00b0 ",\r
618            "Nameprep",\r
619            InternationalizedDomainNames.DEFAULT, U_ZERO_ERROR\r
620          },\r
621         {\r
622 \r
623            "Larger test (expanding)",\r
624            "X\u00C3\u00DF\u00e3\u008c\u0096\u00C4\u00B0\u00E2\u0084\u00A1\u00E2\u0092\u009F\u00E3\u008c\u0080",\r
625            "xss\u00e3\u0082\u00ad\u00e3\u0083\u00ad\u00e3\u0083\u00a1\u00e3\u0083\u00bc\u00e3\u0083\u0088"\r
626            "\u00e3\u0083\u00ab""i\u00cc\u0087""tel\u0028""d\u0029\u00e3\u0082\u00a2\u00e3\u0083\u0091"\r
627            "\u00e3\u0083\u00bc\u00e3\u0083\u0088"\r
628            "Nameprep",\r
629            InternationalizedDomainNames.DEFAULT, U_ZERO_ERROR\r
630          },\r
631       */\r
632     };\r
633 }\r