~ubuntu-branches/ubuntu/vivid/icu4j-4.4/vivid

« back to all changes in this revision

Viewing changes to main/tests/core/src/com/ibm/icu/dev/test/stringprep/TestData.java

  • Committer: Bazaar Package Importer
  • Author(s): Niels Thykier
  • Date: 2011-08-02 15:50:33 UTC
  • Revision ID: james.westby@ubuntu.com-20110802155033-itjzsl21y2lqdonn
Tags: upstream-4.4.2
ImportĀ upstreamĀ versionĀ 4.4.2

Show diffs side-by-side

added added

removed removed

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