/*
* Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 4625418 8239965 8290488
* @summary Tests XML <a href="http://download.java.net/jdk6/docs/technotes/guides/intl/encoding.doc.html ">encoding</a>
* @author Sergey Malenkov
* @run main/timeout=360 Test4625418
*/
import java.beans.ExceptionListener;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.nio.charset.IllegalCharsetNameException;
import java.nio.charset.UnsupportedCharsetException;
public final class Test4625418 implements ExceptionListener {
private static final String[] encodings = {
"ASCII" ,
"Big5" ,
//"Big5-HKSCS",
//"Big5_HKSCS",
"Big5_Solaris" ,
//"Cp037",
"Cp1006" ,
//"Cp1025",
//"Cp1026",
"Cp1046" ,
"Cp1047" ,
"Cp1097" ,
"Cp1098" ,
//"Cp1112",
//"Cp1122",
//"Cp1123",
"Cp1124" ,
//"Cp1140",
//"Cp1141",
//"Cp1142",
//"Cp1143",
//"Cp1144",
//"Cp1145",
//"Cp1146",
//"Cp1147",
//"Cp1148",
//"Cp1149",
"Cp1250" ,
"Cp1251" ,
"Cp1252" ,
"Cp1253" ,
"Cp1254" ,
"Cp1255" ,
"Cp1256" ,
"Cp1257" ,
"Cp1258" ,
//"Cp1381",
//"Cp1383",
//"Cp273",
//"Cp277",
//"Cp278",
//"Cp280",
//"Cp284",
//"Cp285",
//"Cp297",
//"Cp33722",
//"Cp420",
//"Cp424",
"Cp437" ,
//"Cp500",
//"Cp50220",
//"Cp50221",
"Cp737" ,
"Cp775" ,
//"Cp834",
//"Cp838",
"Cp850" ,
"Cp852" ,
"Cp855" ,
"Cp856" ,
"Cp857" ,
"Cp858" ,
"Cp860" ,
"Cp861" ,
"Cp862" ,
"Cp863" ,
//"Cp864",
"Cp865" ,
"Cp866" ,
"Cp868" ,
"Cp869" ,
//"Cp870",
//"Cp871",
"Cp874" ,
//"Cp875",
//"Cp918",
"Cp921" ,
"Cp922" ,
//"Cp930",
"Cp933" ,
//"Cp935",
//"Cp937",
//"Cp939",
//"Cp942",
//"Cp942C",
//"Cp943",
//"Cp943C",
"Cp948" ,
"Cp949" ,
//"Cp949C",
"Cp950" ,
"Cp964" ,
//"Cp970",
//"EUC-JP",
"EUC-KR" ,
"EUC_CN" ,
//"EUC_JP",
//"EUC_JP_LINUX",
//"EUC_JP_Solaris",
"EUC_KR" ,
//"EUC_TW",
"GB18030" ,
"GB2312" ,
"GBK" ,
//"IBM-Thai",
"IBM00858" ,
//"IBM01140",
//"IBM01141",
//"IBM01142",
//"IBM01143",
//"IBM01144",
//"IBM01145",
//"IBM01146",
//"IBM01147",
//"IBM01148",
//"IBM01149",
//"IBM037",
//"IBM1026",
"IBM1047" ,
//"IBM273",
//"IBM277",
//"IBM278",
//"IBM280",
//"IBM284",
//"IBM285",
//"IBM297",
//"IBM420",
//"IBM424",
"IBM437" ,
//"IBM500",
"IBM775" ,
"IBM850" ,
"IBM852" ,
"IBM855" ,
"IBM857" ,
"IBM860" ,
"IBM861" ,
"IBM862" ,
"IBM863" ,
//"IBM864",
"IBM865" ,
"IBM866" ,
"IBM868" ,
"IBM869" ,
//"IBM870",
//"IBM871",
//"IBM918",
//"ISCII91",
//"ISO-2022-CN",
"ISO-2022-JP" ,
"ISO-2022-KR" ,
"ISO-8859-1" ,
"ISO-8859-13" ,
"ISO-8859-15" ,
"ISO-8859-2" ,
"ISO-8859-3" ,
"ISO-8859-4" ,
"ISO-8859-5" ,
"ISO-8859-6" ,
"ISO-8859-7" ,
"ISO-8859-8" ,
"ISO-8859-9" ,
//"ISO2022CN",
"ISO2022JP" ,
"ISO2022KR" ,
//"ISO2022_CN_CNS",
//"ISO2022_CN_GB",
"ISO8859_1" ,
"ISO8859_13" ,
"ISO8859_15" ,
"ISO8859_2" ,
"ISO8859_3" ,
"ISO8859_4" ,
"ISO8859_5" ,
"ISO8859_6" ,
"ISO8859_7" ,
"ISO8859_8" ,
"ISO8859_9" ,
//"JISAutoDetect",
//"JIS_X0201",
//"JIS_X0212-1990",
"KOI8-R" ,
"KOI8-U" ,
"KOI8_R" ,
"KOI8_U" ,
"MS874" ,
//"MS932",
//"MS936",
"MS949" ,
"MS950" ,
//"MS950_HKSCS",
"MacArabic" ,
"MacCentralEurope" ,
"MacCroatian" ,
"MacCyrillic" ,
//"MacDingbat",
"MacGreek" ,
"MacHebrew" ,
"MacIceland" ,
"MacRoman" ,
"MacRomania" ,
//"MacSymbol",
"MacThai" ,
"MacTurkish" ,
"MacUkraine" ,
//"PCK",
//"SJIS",
//"Shift_JIS",
"TIS-620" ,
"TIS620" ,
"US-ASCII" ,
"UTF-16" ,
"UTF-16BE" ,
"UTF-16LE" ,
"UTF-32" ,
"UTF-32BE" ,
"UTF-32LE" ,
"UTF-8" ,
"UTF8" ,
"UTF_32" ,
"UTF_32BE" ,
//"UTF_32BE_BOM",
"UTF_32LE" ,
//"UTF_32LE_BOM",
"UnicodeBig" ,
"UnicodeBigUnmarked" ,
"UnicodeLittle" ,
"UnicodeLittleUnmarked" ,
"windows-1250" ,
"windows-1251" ,
"windows-1252" ,
"windows-1253" ,
"windows-1254" ,
"windows-1255" ,
"windows-1256" ,
"windows-1257" ,
"windows-1258" ,
//"windows-31j",
//"x-Big5_Solaris",
//"x-EUC-TW",
"x-IBM1006" ,
//"x-IBM1025",
"x-IBM1046" ,
"x-IBM1097" ,
"x-IBM1098" ,
//"x-IBM1112",
//"x-IBM1122",
//"x-IBM1123",
"x-IBM1124" ,
//"x-IBM1381",
//"x-IBM1383",
//"x-IBM33722",
"x-IBM737" ,
//"x-IBM834",
"x-IBM856" ,
"x-IBM874" ,
//"x-IBM875",
"x-IBM921" ,
"x-IBM922" ,
//"x-IBM930",
"x-IBM933" ,
//"x-IBM935",
//"x-IBM937",
//"x-IBM939",
//"x-IBM942",
//"x-IBM942C",
//"x-IBM943",
//"x-IBM943C",
"x-IBM948" ,
"x-IBM949" ,
//"x-IBM949C",
"x-IBM950" ,
"x-IBM964" ,
//"x-IBM970",
//"x-ISCII91",
//"x-ISO2022-CN-CNS",
//"x-ISO2022-CN-GB",
//"x-JIS0208",
//"x-JISAutoDetect",
"x-Johab" ,
//"x-MS950-HKSCS",
"x-MacArabic" ,
"x-MacCentralEurope" ,
"x-MacCroatian" ,
"x-MacCyrillic" ,
//"x-MacDingbat",
"x-MacGreek" ,
"x-MacHebrew" ,
"x-MacIceland" ,
"x-MacRoman" ,
"x-MacRomania" ,
//"x-MacSymbol",
"x-MacThai" ,
"x-MacTurkish" ,
"x-MacUkraine" ,
//"x-PCK",
"x-UTF-16LE-BOM" ,
//"x-UTF-32BE-BOM",
//"x-UTF-32LE-BOM",
//"x-euc-jp-linux",
//"x-eucJP-Open",
"x-iso-8859-11" ,
"x-mswin-936" ,
//"x-windows-50220",
//"x-windows-50221",
"x-windows-874" ,
"x-windows-949" ,
"x-windows-950" ,
//"x-windows-iso2022jp",
};
public static void main(final String[] args) {
final String string = createString(0x10000);
for (String encoding : encodings) {
System.out.println("Test encoding: " + encoding);
new Test4625418(encoding).test(string);
}
}
private static String createString(int length) {
StringBuilder sb = new StringBuilder(length);
while (0 < length--)
sb.append((char ) length);
return sb.toString();
}
private final String encoding;
private Test4625418(final String encoding) {
this .encoding = encoding;
}
private void test(String string) {
try {
ByteArrayOutputStream output = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder(output, this .encoding, true , 0);
encoder.setExceptionListener(this );
encoder.writeObject(string);
encoder.close();
InputStream input = new ByteArrayInputStream(output.toByteArray());
XMLDecoder decoder = new XMLDecoder(input);
decoder.setExceptionListener(this );
Object object = decoder.readObject();
decoder.close();
if (!string.equals(object)) {
throw new Error(this .encoding + " - can't read properly" );
}
}
catch (IllegalCharsetNameException exception) {
throw new Error(this .encoding + " - illegal charset name" , exception);
}
catch (UnsupportedCharsetException exception) {
throw new Error(this .encoding + " - unsupported charset" , exception);
}
catch (UnsupportedOperationException exception) {
throw new Error(this .encoding + " - unsupported encoder" , exception);
}
}
public void exceptionThrown(Exception exception) {
throw new Error(this .encoding + " - internal" , exception);
}
}
quality 96%
¤ Dauer der Verarbeitung: 0.2 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland