blob: 6cfd4b43887438df57c002fa47de10629b1fa80e [file] [log] [blame]
duke6e45e102007-12-01 00:00:00 +00001/*
2 * Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 */
23
24/*
25 * @test
26 * @bug 4625418
27 * @summary Tests XML <a href="http://download.java.net/jdk6/docs/technotes/guides/intl/encoding.doc.html">encoding</a>
28 * @author Sergey Malenkov
29 *
30 * @run main Test4625418 ASCII
31 * @run main Test4625418 Big5
32 * ?run main Test4625418 Big5-HKSCS
33 * ?run main Test4625418 Big5_HKSCS
34 * @run main Test4625418 Big5_Solaris
35 * ?run main Test4625418 Cp037
36 * @run main Test4625418 Cp1006
37 * ?run main Test4625418 Cp1025
38 * -run main Test4625418 Cp1026
39 * @run main Test4625418 Cp1046
40 * @run main Test4625418 Cp1047
41 * @run main Test4625418 Cp1097
42 * @run main Test4625418 Cp1098
43 * ?run main Test4625418 Cp1112
44 * ?run main Test4625418 Cp1122
45 * ?run main Test4625418 Cp1123
46 * @run main Test4625418 Cp1124
47 * ?run main Test4625418 Cp1140
48 * ?run main Test4625418 Cp1141
49 * ?run main Test4625418 Cp1142
50 * ?run main Test4625418 Cp1143
51 * ?run main Test4625418 Cp1144
52 * ?run main Test4625418 Cp1145
53 * ?run main Test4625418 Cp1146
54 * ?run main Test4625418 Cp1147
55 * ?run main Test4625418 Cp1148
56 * ?run main Test4625418 Cp1149
57 * @run main Test4625418 Cp1250
58 * @run main Test4625418 Cp1251
59 * @run main Test4625418 Cp1252
60 * @run main Test4625418 Cp1253
61 * @run main Test4625418 Cp1254
62 * @run main Test4625418 Cp1255
63 * @run main Test4625418 Cp1256
64 * @run main Test4625418 Cp1257
65 * @run main Test4625418 Cp1258
66 * ?run main Test4625418 Cp1381
67 * ?run main Test4625418 Cp1383
68 * ?run main Test4625418 Cp273
69 * ?run main Test4625418 Cp277
70 * ?run main Test4625418 Cp278
71 * ?run main Test4625418 Cp280
72 * ?run main Test4625418 Cp284
73 * ?run main Test4625418 Cp285
74 * ?run main Test4625418 Cp297
75 * ?run main Test4625418 Cp33722
76 * ?run main Test4625418 Cp420
77 * ?run main Test4625418 Cp424
78 * @run main Test4625418 Cp437
79 * ?run main Test4625418 Cp500
80 * ?run main Test4625418 Cp50220
81 * ?run main Test4625418 Cp50221
82 * @run main Test4625418 Cp737
83 * @run main Test4625418 Cp775
84 * -run main Test4625418 Cp834
85 * ?run main Test4625418 Cp838
86 * @run main Test4625418 Cp850
87 * @run main Test4625418 Cp852
88 * @run main Test4625418 Cp855
89 * @run main Test4625418 Cp856
90 * @run main Test4625418 Cp857
91 * @run main Test4625418 Cp858
92 * @run main Test4625418 Cp860
93 * @run main Test4625418 Cp861
94 * @run main Test4625418 Cp862
95 * @run main Test4625418 Cp863
96 * @run main Test4625418 Cp864
97 * @run main Test4625418 Cp865
98 * @run main Test4625418 Cp866
99 * @run main Test4625418 Cp868
100 * @run main Test4625418 Cp869
101 * ?run main Test4625418 Cp870
102 * ?run main Test4625418 Cp871
103 * @run main Test4625418 Cp874
104 * ?run main Test4625418 Cp875
105 * ?run main Test4625418 Cp918
106 * @run main Test4625418 Cp921
107 * @run main Test4625418 Cp922
108 * -run main Test4625418 Cp930
109 * @run main Test4625418 Cp933
110 * ?run main Test4625418 Cp935
111 * ?run main Test4625418 Cp937
112 * ?run main Test4625418 Cp939
113 * ?run main Test4625418 Cp942
114 * ?run main Test4625418 Cp942C
115 * @run main Test4625418 Cp943
116 * ?run main Test4625418 Cp943C
117 * @run main Test4625418 Cp948
118 * @run main Test4625418 Cp949
119 * ?run main Test4625418 Cp949C
120 * @run main Test4625418 Cp950
121 * @run main Test4625418 Cp964
122 * ?run main Test4625418 Cp970
123 * ?run main Test4625418 EUC-JP
124 * @run main Test4625418 EUC-KR
125 * @run main Test4625418 EUC_CN
126 * ?run main Test4625418 EUC_JP
127 * ?run main Test4625418 EUC_JP_LINUX
128 * ?run main Test4625418 EUC_JP_Solaris
129 * @run main Test4625418 EUC_KR
130 * ?run main Test4625418 EUC_TW
131 * @run main Test4625418 GB18030
132 * @run main Test4625418 GB2312
133 * @run main Test4625418 GBK
134 * ?run main Test4625418 IBM-Thai
135 * @run main Test4625418 IBM00858
136 * ?run main Test4625418 IBM01140
137 * ?run main Test4625418 IBM01141
138 * ?run main Test4625418 IBM01142
139 * ?run main Test4625418 IBM01143
140 * ?run main Test4625418 IBM01144
141 * ?run main Test4625418 IBM01145
142 * ?run main Test4625418 IBM01146
143 * ?run main Test4625418 IBM01147
144 * ?run main Test4625418 IBM01148
145 * ?run main Test4625418 IBM01149
146 * ?run main Test4625418 IBM037
147 * -run main Test4625418 IBM1026
148 * @run main Test4625418 IBM1047
149 * ?run main Test4625418 IBM273
150 * ?run main Test4625418 IBM277
151 * ?run main Test4625418 IBM278
152 * ?run main Test4625418 IBM280
153 * ?run main Test4625418 IBM284
154 * ?run main Test4625418 IBM285
155 * ?run main Test4625418 IBM297
156 * ?run main Test4625418 IBM420
157 * ?run main Test4625418 IBM424
158 * @run main Test4625418 IBM437
159 * ?run main Test4625418 IBM500
160 * @run main Test4625418 IBM775
161 * @run main Test4625418 IBM850
162 * @run main Test4625418 IBM852
163 * @run main Test4625418 IBM855
164 * @run main Test4625418 IBM857
165 * @run main Test4625418 IBM860
166 * @run main Test4625418 IBM861
167 * @run main Test4625418 IBM862
168 * @run main Test4625418 IBM863
169 * @run main Test4625418 IBM864
170 * @run main Test4625418 IBM865
171 * @run main Test4625418 IBM866
172 * @run main Test4625418 IBM868
173 * @run main Test4625418 IBM869
174 * ?run main Test4625418 IBM870
175 * ?run main Test4625418 IBM871
176 * ?run main Test4625418 IBM918
177 * ?run main Test4625418 ISCII91
178 * -run main Test4625418 ISO-2022-CN
179 * @run main Test4625418 ISO-2022-JP
180 * @run main Test4625418 ISO-2022-KR
181 * @run main Test4625418 ISO-8859-1
182 * @run main Test4625418 ISO-8859-13
183 * @run main Test4625418 ISO-8859-15
184 * @run main Test4625418 ISO-8859-2
185 * @run main Test4625418 ISO-8859-3
186 * @run main Test4625418 ISO-8859-4
187 * @run main Test4625418 ISO-8859-5
188 * @run main Test4625418 ISO-8859-6
189 * @run main Test4625418 ISO-8859-7
190 * @run main Test4625418 ISO-8859-8
191 * @run main Test4625418 ISO-8859-9
192 * -run main Test4625418 ISO2022CN
193 * @run main Test4625418 ISO2022JP
194 * @run main Test4625418 ISO2022KR
195 * -run main Test4625418 ISO2022_CN_CNS
196 * -run main Test4625418 ISO2022_CN_GB
197 * @run main Test4625418 ISO8859_1
198 * @run main Test4625418 ISO8859_13
199 * @run main Test4625418 ISO8859_15
200 * @run main Test4625418 ISO8859_2
201 * @run main Test4625418 ISO8859_3
202 * @run main Test4625418 ISO8859_4
203 * @run main Test4625418 ISO8859_5
204 * @run main Test4625418 ISO8859_6
205 * @run main Test4625418 ISO8859_7
206 * @run main Test4625418 ISO8859_8
207 * @run main Test4625418 ISO8859_9
208 * -run main Test4625418 JISAutoDetect
209 * ?run main Test4625418 JIS_X0201
210 * -run main Test4625418 JIS_X0212-1990
211 * @run main Test4625418 KOI8-R
212 * @run main Test4625418 KOI8-U
213 * @run main Test4625418 KOI8_R
214 * @run main Test4625418 KOI8_U
215 * @run main Test4625418 MS874
216 * ?run main Test4625418 MS932
217 * ?run main Test4625418 MS936
218 * @run main Test4625418 MS949
219 * @run main Test4625418 MS950
220 * ?run main Test4625418 MS950_HKSCS
221 * @run main Test4625418 MacArabic
222 * @run main Test4625418 MacCentralEurope
223 * @run main Test4625418 MacCroatian
224 * @run main Test4625418 MacCyrillic
225 * -run main Test4625418 MacDingbat
226 * @run main Test4625418 MacGreek
227 * @run main Test4625418 MacHebrew
228 * @run main Test4625418 MacIceland
229 * @run main Test4625418 MacRoman
230 * @run main Test4625418 MacRomania
231 * -run main Test4625418 MacSymbol
232 * @run main Test4625418 MacThai
233 * @run main Test4625418 MacTurkish
234 * @run main Test4625418 MacUkraine
235 * ?run main Test4625418 PCK
236 * ?run main Test4625418 SJIS
237 * ?run main Test4625418 Shift_JIS
238 * @run main Test4625418 TIS-620
239 * @run main Test4625418 TIS620
240 * @run main Test4625418 US-ASCII
241 * @run main Test4625418 UTF-16
242 * @run main Test4625418 UTF-16BE
243 * @run main Test4625418 UTF-16LE
244 * @run main Test4625418 UTF-32
245 * @run main Test4625418 UTF-32BE
246 * @run main Test4625418 UTF-32LE
247 * @run main Test4625418 UTF-8
248 * @run main Test4625418 UTF8
249 * @run main Test4625418 UTF_32
250 * @run main Test4625418 UTF_32BE
251 * -run main Test4625418 UTF_32BE_BOM
252 * @run main Test4625418 UTF_32LE
253 * -run main Test4625418 UTF_32LE_BOM
254 * @run main Test4625418 UnicodeBig
255 * @run main Test4625418 UnicodeBigUnmarked
256 * @run main Test4625418 UnicodeLittle
257 * @run main Test4625418 UnicodeLittleUnmarked
258 * @run main Test4625418 windows-1250
259 * @run main Test4625418 windows-1251
260 * @run main Test4625418 windows-1252
261 * @run main Test4625418 windows-1253
262 * @run main Test4625418 windows-1254
263 * @run main Test4625418 windows-1255
264 * @run main Test4625418 windows-1256
265 * @run main Test4625418 windows-1257
266 * @run main Test4625418 windows-1258
267 * ?run main Test4625418 windows-31j
268 * -run main Test4625418 x-Big5_Solaris
269 * ?run main Test4625418 x-EUC-TW
270 * @run main Test4625418 x-IBM1006
271 * ?run main Test4625418 x-IBM1025
272 * @run main Test4625418 x-IBM1046
273 * @run main Test4625418 x-IBM1097
274 * @run main Test4625418 x-IBM1098
275 * ?run main Test4625418 x-IBM1112
276 * ?run main Test4625418 x-IBM1122
277 * ?run main Test4625418 x-IBM1123
278 * @run main Test4625418 x-IBM1124
279 * ?run main Test4625418 x-IBM1381
280 * ?run main Test4625418 x-IBM1383
281 * ?run main Test4625418 x-IBM33722
282 * @run main Test4625418 x-IBM737
283 * -run main Test4625418 x-IBM834
284 * @run main Test4625418 x-IBM856
285 * @run main Test4625418 x-IBM874
286 * ?run main Test4625418 x-IBM875
287 * @run main Test4625418 x-IBM921
288 * @run main Test4625418 x-IBM922
289 * -run main Test4625418 x-IBM930
290 * @run main Test4625418 x-IBM933
291 * ?run main Test4625418 x-IBM935
292 * ?run main Test4625418 x-IBM937
293 * ?run main Test4625418 x-IBM939
294 * ?run main Test4625418 x-IBM942
295 * ?run main Test4625418 x-IBM942C
296 * @run main Test4625418 x-IBM943
297 * ?run main Test4625418 x-IBM943C
298 * @run main Test4625418 x-IBM948
299 * @run main Test4625418 x-IBM949
300 * ?run main Test4625418 x-IBM949C
301 * @run main Test4625418 x-IBM950
302 * @run main Test4625418 x-IBM964
303 * ?run main Test4625418 x-IBM970
304 * ?run main Test4625418 x-ISCII91
305 * -run main Test4625418 x-ISO2022-CN-CNS
306 * -run main Test4625418 x-ISO2022-CN-GB
307 * -run main Test4625418 x-JIS0208
308 * -run main Test4625418 x-JISAutoDetect
309 * @run main Test4625418 x-Johab
310 * ?run main Test4625418 x-MS950-HKSCS
311 * @run main Test4625418 x-MacArabic
312 * @run main Test4625418 x-MacCentralEurope
313 * @run main Test4625418 x-MacCroatian
314 * @run main Test4625418 x-MacCyrillic
315 * -run main Test4625418 x-MacDingbat
316 * @run main Test4625418 x-MacGreek
317 * @run main Test4625418 x-MacHebrew
318 * @run main Test4625418 x-MacIceland
319 * @run main Test4625418 x-MacRoman
320 * @run main Test4625418 x-MacRomania
321 * -run main Test4625418 x-MacSymbol
322 * @run main Test4625418 x-MacThai
323 * @run main Test4625418 x-MacTurkish
324 * @run main Test4625418 x-MacUkraine
325 * ?run main Test4625418 x-PCK
326 * @run main Test4625418 x-UTF-16LE-BOM
327 * -run main Test4625418 x-UTF-32BE-BOM
328 * -run main Test4625418 x-UTF-32LE-BOM
329 * ?run main Test4625418 x-euc-jp-linux
330 * ?run main Test4625418 x-eucJP-Open
331 * @run main Test4625418 x-iso-8859-11
332 * @run main Test4625418 x-mswin-936
333 * ?run main Test4625418 x-windows-50220
334 * ?run main Test4625418 x-windows-50221
335 * @run main Test4625418 x-windows-874
336 * @run main Test4625418 x-windows-949
337 * @run main Test4625418 x-windows-950
338 * ?run main Test4625418 x-windows-iso2022jp
339 */
340
341import java.beans.ExceptionListener;
342import java.beans.XMLDecoder;
343import java.beans.XMLEncoder;
344import java.io.File;
345import java.io.FileInputStream;
346import java.io.FileNotFoundException;
347import java.io.FileOutputStream;
348import java.nio.charset.IllegalCharsetNameException;
349import java.nio.charset.UnsupportedCharsetException;
350
351public final class Test4625418 implements ExceptionListener {
352 public static void main(String[] args) {
353 new Test4625418(args[0]).test(createString(0x10000));
354 System.out.println("Test passed: " + args[0]);
355 }
356
357 private static String createString(int length) {
358 StringBuilder sb = new StringBuilder(length);
359 while (0 < length--)
360 sb.append((char) length);
361
362 return sb.toString();
363 }
364
365 private final String encoding;
366
367 private Test4625418(String encoding) {
368 this.encoding = encoding;
369 }
370
371 private void test(String string) {
372 try {
373 File file = new File("4625418." + this.encoding + ".xml");
374
375 FileOutputStream output = new FileOutputStream(file);
376 XMLEncoder encoder = new XMLEncoder(output, this.encoding, true, 0);
377 encoder.setExceptionListener(this);
378 encoder.writeObject(string);
379 encoder.close();
380
381 FileInputStream input = new FileInputStream(file);
382 XMLDecoder decoder = new XMLDecoder(input);
383 decoder.setExceptionListener(this);
384 Object object = decoder.readObject();
385 decoder.close();
386
387 if (!string.equals(object))
388 throw new Error(this.encoding + " - can't read properly");
389
390 file.delete();
391 }
392 catch (FileNotFoundException exception) {
393 throw new Error(this.encoding + " - file not found", exception);
394 }
395 catch (IllegalCharsetNameException exception) {
396 throw new Error(this.encoding + " - illegal charset name", exception);
397 }
398 catch (UnsupportedCharsetException exception) {
399 throw new Error(this.encoding + " - unsupported charset", exception);
400 }
401 catch (UnsupportedOperationException exception) {
402 throw new Error(this.encoding + " - unsupported encoder", exception);
403 }
404 }
405
406 public void exceptionThrown(Exception exception) {
407 throw new Error(this.encoding + " - internal", exception);
408 }
409}