duke | 6e45e10 | 2007-12-01 00:00:00 +0000 | [diff] [blame^] | 1 | /* |
| 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 | |
| 341 | import java.beans.ExceptionListener; |
| 342 | import java.beans.XMLDecoder; |
| 343 | import java.beans.XMLEncoder; |
| 344 | import java.io.File; |
| 345 | import java.io.FileInputStream; |
| 346 | import java.io.FileNotFoundException; |
| 347 | import java.io.FileOutputStream; |
| 348 | import java.nio.charset.IllegalCharsetNameException; |
| 349 | import java.nio.charset.UnsupportedCharsetException; |
| 350 | |
| 351 | public 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 | } |