1/* 2 * Copyright (c) 2010, 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/* @test 25 * @summary Unit test for charset containment 26 * @bug 6798572 27 * @modules jdk.charsets 28 */ 29 30import java.nio.charset.*; 31 32 33public class Contains { 34 35 static void ck(Charset cs1, Charset cs2, boolean cont) throws Exception { 36 if ((cs1.contains(cs2)) != cont) 37 throw new Exception("Wrong answer: " 38 + cs1.name() + " contains " + cs2.name()); 39 System.err.println(cs1.name() 40 + (cont ? " contains " : " does not contain ") 41 + cs2.name()); 42 } 43 44 public static void main(String[] args) throws Exception { 45 46 Charset us_ascii = Charset.forName("US-ASCII"); 47 Charset iso_8859_1 = Charset.forName("ISO-8859-1"); 48 Charset iso_8859_15 = Charset.forName("ISO-8859-15"); 49 Charset utf_8 = Charset.forName("UTF-8"); 50 Charset utf_16be = Charset.forName("UTF-16BE"); 51 Charset cp1252 = Charset.forName("CP1252"); 52 53 ck(us_ascii, us_ascii, true); 54 ck(us_ascii, iso_8859_1, false); 55 ck(us_ascii, iso_8859_15, false); 56 ck(us_ascii, utf_8, false); 57 ck(us_ascii, utf_16be, false); 58 ck(us_ascii, cp1252, false); 59 60 ck(iso_8859_1, us_ascii, true); 61 ck(iso_8859_1, iso_8859_1, true); 62 ck(iso_8859_1, iso_8859_15, false); 63 ck(iso_8859_1, utf_8, false); 64 ck(iso_8859_1, utf_16be, false); 65 ck(iso_8859_1, cp1252, false); 66 67 ck(iso_8859_15, us_ascii, true); 68 ck(iso_8859_15, iso_8859_1, false); 69 ck(iso_8859_15, iso_8859_15, true); 70 ck(iso_8859_15, utf_8, false); 71 ck(iso_8859_15, utf_16be, false); 72 ck(iso_8859_15, cp1252, false); 73 74 ck(utf_8, us_ascii, true); 75 ck(utf_8, iso_8859_1, true); 76 ck(utf_8, iso_8859_15, true); 77 ck(utf_8, utf_8, true); 78 ck(utf_8, utf_16be, true); 79 ck(utf_8, cp1252, true); 80 81 ck(utf_16be, us_ascii, true); 82 ck(utf_16be, iso_8859_1, true); 83 ck(utf_16be, iso_8859_15, true); 84 ck(utf_16be, utf_8, true); 85 ck(utf_16be, utf_16be, true); 86 ck(utf_16be, cp1252, true); 87 88 ck(cp1252, us_ascii, true); 89 ck(cp1252, iso_8859_1, false); 90 ck(cp1252, iso_8859_15, false); 91 ck(cp1252, utf_8, false); 92 ck(cp1252, utf_16be, false); 93 ck(cp1252, cp1252, true); 94 95 checkUTF(); 96 } 97 98 static void checkUTF() throws Exception { 99 for (String utfName : utfNames) 100 for (String csName : charsetNames) 101 ck(Charset.forName(utfName), 102 Charset.forName(csName), 103 true); 104 } 105 106 static String[] utfNames = {"utf-16", 107 "utf-8", 108 "utf-16le", 109 "utf-16be", 110 "x-utf-16le-bom"}; 111 112 static String[] charsetNames = { 113 "US-ASCII", 114 "UTF-8", 115 "UTF-16", 116 "UTF-16BE", 117 "UTF-16LE", 118 "x-UTF-16LE-BOM", 119 "GBK", 120 "GB18030", 121 "ISO-8859-1", 122 "ISO-8859-15", 123 "ISO-8859-2", 124 "ISO-8859-3", 125 "ISO-8859-4", 126 "ISO-8859-5", 127 "ISO-8859-6", 128 "ISO-8859-7", 129 "ISO-8859-8", 130 "ISO-8859-9", 131 "ISO-8859-13", 132 "JIS_X0201", 133 "x-JIS0208", 134 "JIS_X0212-1990", 135 "GB2312", 136 "EUC-KR", 137 "x-EUC-TW", 138 "EUC-JP", 139 "x-euc-jp-linux", 140 "KOI8-R", 141 "TIS-620", 142 "x-ISCII91", 143 "windows-1251", 144 "windows-1252", 145 "windows-1253", 146 "windows-1254", 147 "windows-1255", 148 "windows-1256", 149 "windows-1257", 150 "windows-1258", 151 "windows-932", 152 "x-mswin-936", 153 "x-windows-949", 154 "x-windows-950", 155 "windows-31j", 156 "Big5", 157 "Big5-HKSCS", 158 "x-MS950-HKSCS", 159 "ISO-2022-JP", 160 "ISO-2022-KR", 161 "x-ISO-2022-CN-CNS", 162 "x-ISO-2022-CN-GB", 163 "Big5-HKSCS", 164 "x-Johab", 165 "Shift_JIS" 166 }; 167} 168