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