/* * Copyright (c) 2020, 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 8232161 * @summary Those test data confirm the preferred b2c irreversible mappings defined in MS950.nr file.
*/
// Data is listed from MS950.map // Col1 should be in MS950.nr // (Only check col2 and col3) privatefinalstatic String[] MS950C2B= new String[] { "0xF9FA -> u256D -> 0xA27E", "0xF9FB -> u256E -> 0xA2A1", "0xF9FC -> u2570 -> 0xA2A2", "0xF9FD -> u256F -> 0xA2A3", "0xA2CC -> u5341 -> 0xA451", "0xA2CE -> u5345 -> 0xA4CA", "0xA2A4 -> u2550 -> 0xF9F9", "0xA2A5 -> u255E -> 0xF9E9", "0xA2A6 -> u256A -> 0xF9EA", "0xA2A7 -> u2561 -> 0xF9EB",
};
// Convert Hex string to byte array privatestaticbyte[] hex2ba(String s) { byte[] ba; if (s.startsWith("0x")) {
s = s.substring(2);
} try {
ByteBuffer bb = ByteBuffer.allocate((int)(s.length()/2));
StringBuilder sb = new StringBuilder(s.substring(0, bb.limit() * 2)); while (sb.length() > 0) {
bb.put((byte)Integer.parseInt(sb.substring(0, 2), 16));
sb.delete(0, 2);
}
ba = bb.array();
} catch (NumberFormatException nfe) {
ba = newbyte[0];
} return ba;
}
// Convert Hex string to string privatestatic String hex2s(String s) { char[] ca; if (s.startsWith("0x")) {
s = s.substring(2);
} elseif (s.startsWith("u")) {
s = s.substring(1);
} try {
CharBuffer cb = CharBuffer.allocate((int)(s.length()/4));
StringBuilder sb = new StringBuilder(s.substring(0, cb.limit() * 4)); while (sb.length() > 0) {
cb.put((char)Integer.parseInt(sb.substring(0, 4), 16));
sb.delete(0,4);
}
ca = cb.array();
} catch (NumberFormatException nfe) {
ca = newchar[0];
} returnnew String(ca);
}
publicstaticvoid main(String[] args) throws Exception {
Charset cs = Charset.forName("MS950"); int diffs = 0; // Check b2c side: Duplicated entries for(int i = 0; i < MS950B2C.length; ++i) {
String[] sa = MS950B2C[i].split("\\s+");
String s = new String(hex2ba(sa[0]), cs); if (!s.equals(hex2s(sa[1]))) {
++diffs;
System.out.printf("b2c: %s, expected:%s, result:0x", sa[0], sa[1]); for (char ch : s.toCharArray()) {
System.out.printf("%04X", (int)ch);
}
System.out.println();
}
} // Check c2b side: round-trip entries for(int i = 0; i < MS950C2B.length; ++i) {
String[] sa = MS950C2B[i].split("\\s+->\\s+"); byte[] ba = hex2s(sa[1]).getBytes(cs); if (!Arrays.equals(ba, hex2ba(sa[2]))) {
++diffs;
System.out.printf("c2b: %s, expected:%s, result:0x", sa[1], sa[2]); for (byte b : ba) {
System.out.printf("%02X", (int)b & 0xFF);
}
System.out.println();
}
} if (diffs > 0) { thrownew Exception("Failed");
}
}
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.14Bemerkung:
(vorverarbeitet am 2026-04-30)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.