Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/sun/nio/cs/LatinCharReplacementTWTest.java
41149 views
1
/*
2
* Copyright (c) 2008, 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
@bug 4658679 4879644
26
@summary Checks replacement logic within EUC-TW decoder
27
*/
28
29
/*
30
* Tests goodness of fix for bugID 4658679: EUC-TW decoder should
31
* perform replacement when it encounters latin chars outside the
32
* normal US-ASCII range. For example: Isolated occurrences of
33
* French accented chars. See bugID: 4658679.
34
*/
35
import java.io.*;
36
public class LatinCharReplacementTWTest {
37
public static void main(String[] args) throws Exception {
38
final String bugID = "4658679";
39
// Attempt to decode
40
byte[] input = { (byte)0xa1,
41
(byte)0xf0,
42
(byte)'r',
43
(byte)'e',
44
(byte)'s',
45
(byte)0xe9, // illegal within EUC-TW
46
(byte)'r',
47
(byte)'v',
48
(byte)0xe9, // illegal within EUC-TW
49
(byte)'s',
50
(byte)0xa2,
51
(byte)0xf8
52
};
53
54
char[] expected = { (char) 0xa7,
55
(char) 'r',
56
(char) 'e',
57
(char) 's',
58
(char) 0xFFFD, // replacement for accented lowercase e
59
(char) 'r',
60
(char) 'v',
61
(char) 0xFFFD, // replacement for accented lowercase e
62
(char) 's',
63
(char) 0xb0 };
64
65
ByteArrayInputStream bais = new ByteArrayInputStream(input);
66
InputStreamReader isr = new InputStreamReader(bais, "x-EUC-TW");
67
68
char[] decoded = new char[128];
69
int numChars = isr.read(decoded);
70
71
if (numChars != expected.length) {
72
throw new Exception("failure of test for bug " + bugID);
73
}
74
75
for (int i = 0 ; i < numChars; i++) {
76
if (decoded[i] != expected[i])
77
throw new Exception("failure of test for bug " + bugID);
78
}
79
}
80
}
81
82