1 /*
   2  * Copyright (c) 2006, 2007, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * 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 }