NIOJISAutoDetectTest.java revision 2362
98N/A * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved. 910N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 98N/A * This code is free software; you can redistribute it and/or modify it 98N/A * under the terms of the GNU General Public License version 2 only, as 98N/A * published by the Free Software Foundation. 98N/A * This code is distributed in the hope that it will be useful, but WITHOUT 98N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 98N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 98N/A * version 2 for more details (a copy is included in the LICENSE file that 98N/A * accompanied this code). 98N/A * You should have received a copy of the GNU General Public License version 98N/A * 2 along with this work; if not, write to the Free Software Foundation, 98N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 98N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 98N/A * or visit www.oracle.com if you need additional information or have any 98N/A * @bug 4831163 5053096 5056440 98N/A * @summary NIO charset basic verification of JISAutodetect decoder 98N/A * @author Martin Buchholz 98N/A (
byte)
0xcf, (
byte)
0xb2});
851N/A (
byte)
0xa4, (
byte)
0xe9});
851N/A //---------------------------------------------------------------- 493N/A // Test special public methods of CharsetDecoder while we're here 231N/A //---------------------------------------------------------------- 606N/A //---------------------------------------------------------------- 493N/A // Used to throw BufferOverflowException 606N/A //---------------------------------------------------------------- 493N/A //---------------------------------------------------------------- 98N/A // InputStreamReader(...JISAutoDetect) used to infloop 493N/A //---------------------------------------------------------------- 98N/A // used to return "ABCD" on second and subsequent reads 606N/A //---------------------------------------------------------------- 98N/A // Check all Japanese chars for sanity 98N/A //---------------------------------------------------------------- 606N/A for (
char c =
'\u0000'; c <
'\uffff'; c++) {
606N/A if (c ==
'\u001b' ||
// ESC 231N/A c ==
'\u2014')
// Em-Dash? 98N/A //---------------------------------------------------------------- 98N/A // JISAutoDetect can handle all chars that EUC-JP can, // unless there is an ambiguity with SJIS. //---------------------------------------------------------------- fail(
"Autodetection agrees with neither EUC nor SJIS");
continue;
// Optimization //---------------------------------------------------------------- // JISAutoDetect can handle all chars that ISO-2022-JP can. //---------------------------------------------------------------- "ISO2022 autodetection");
//---------------------------------------------------------------- // JISAutoDetect can handle almost all chars that SJIS can. //---------------------------------------------------------------- out.
printf(
"There are %d characters that are " +
"misdetected as SJIS after being EUC-encoded.%n",
cntBAD);
//---------------------------------------------------------------- // tests for specific byte sequences //---------------------------------------------------------------- test(
"ISO-2022-JP",
new byte[] {
'A',
'B',
'C'});
test(
"EUC-JP",
new byte[] {
'A',
'B',
'C'});
test(
"SJIS",
new byte[] {
'A',
'B',
'C'});
new byte[] {
'C',
'o',
'p',
'y',
'r',
'i',
'g',
'h',
't',
' ', (
byte)
0xa9,
' ',
'1',
'9',
'9',
'8' });
new byte[] { (
byte)
0xbb, (
byte)
0xdd, (
byte)
0xcf, (
byte)
0xb2,
(
byte)
0xb8, (
byte)
0xdb, (
byte)
0xbc, (
byte)
0xbd,
(
byte)
0xc3, (
byte)
0xd1, (
byte)
0xbd, (
byte)
0xde,
(
byte)
0x82, (
byte)
0xc5, (
byte)
0x82, (
byte)
0xb7 });
new byte[] { (
byte)
0xa4, (
byte)
0xd2, (
byte)
0xa4, (
byte)
0xe9,
(
byte)
0xa4, (
byte)
0xac, (
byte)
0xa4, (
byte)
0xca });
new byte[] { (
byte)
0xbb, (
byte)
0xdd, (
byte)
0xcf, (
byte)
0xb2,
(
byte)
0xb8, (
byte)
0xdb, (
byte)
0xbc, (
byte)
0xbd,
(
byte)
0xc3, (
byte)
0xd1, (
byte)
0xbd, (
byte)
0xde});
new byte[] { (
byte)
0xbb, (
byte)
0xdd, (
byte)
0xcf, (
byte)
0xb2,
(
byte)
0xb8, (
byte)
0xdb, (
byte)
0xbc, (
byte)
0xbd,
(
byte)
0xc3, (
byte)
0xd1, (
byte)
0xbd });
new byte[] { (
byte)
0x8f, (
byte)
0xa1, (
byte)
0xaa });
new byte[] { (
byte)
0x8f, (
byte)
0xc5, (
byte)
0xe0, (
byte)
0x20});
new byte[] { (
byte)
0xbb, (
byte)
0xdd, (
byte)
0xcf, (
byte)
0xb2,
(
byte)
0xb8, (
byte)
0xdb, (
byte)
0xbc, (
byte)
0xbd,
(
byte)
0xc3, (
byte)
0xd1, (
byte)
0xbd, (
byte)
0xde,
(
byte)
0xa4, (
byte)
0xc7, (
byte)
0xa4, (
byte)
0xb9 });
new byte[] {
0x1b,
'$',
'B',
'#',
'4',
'$',
'5',
0x1b,
'(',
'B' });
//---------------------------------------------------------------- // Check handling of ambiguous end-of-input in middle of first char //---------------------------------------------------------------- "Unexpected coder result: " +
result);