changeset 60208:9b33b25a7198

8235834: IBM-943 charset encoder needs updating Summary: Apply 34B003AF.RPMAP130 definition into encoder Reviewed-by: naoto
author itakiguchi
date Tue, 25 Feb 2020 22:47:11 +0900
parents 695c6b0986c3
children 9e359ab51ce6
files make/data/charsetmapping/IBM943.c2b test/jdk/sun/nio/cs/TestIBMBugs.java
diffstat 2 files changed, 111 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/make/data/charsetmapping/IBM943.c2b	Tue Feb 25 22:47:11 2020 +0900
@@ -0,0 +1,49 @@
+#
+#    source: 34B003AF.RPMAP130
+#    c->b only entries
+#
+815C	2015
+8160	FF5E
+8161	2225
+817C	FF0D
+88A0	555E
+898B	7130
+89A8	9DD7
+8A9A	5699
+8BA0	4FE0
+8BEB	8EC0
+8C71	7E6B
+8C74	8346
+8CB2	9E7C
+8D8D	9EB4
+8DF2	6805
+8EC6	5C62
+8F4A	7E61
+8FD3	8523
+8FDD	91AC
+90E4	87EC
+917E	6414
+9189	7626
+91CB	9A52
+925C	7C1E
+92CD	6451
+9355	5861
+935E	985A
+9398	79B1
+93C0	7006
+9458	56CA
+948D	525D
+94AC	6F51
+94AE	91B1
+966A	9830
+96CB	9EB5
+9789	840A
+9858	881F
+9BA0	5C5B
+9DB7	6522
+9E94	688E
+E379	7E48
+E445	8141
+E8F6	9839
+FA55	FFE4
+FA59	F86F
--- a/test/jdk/sun/nio/cs/TestIBMBugs.java	Tue Feb 25 12:35:29 2020 +0100
+++ b/test/jdk/sun/nio/cs/TestIBMBugs.java	Tue Feb 25 22:47:11 2020 +0900
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2008, 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
@@ -22,7 +22,8 @@
  */
 
 /* @test
- * @bug 6371437 6371422 6371416 6371619 5058184 6371431 6639450 6569191 6577466 8212794 8220281
+ * @bug 6371437 6371422 6371416 6371619 5058184 6371431 6639450 6569191 6577466
+ *      8212794 8220281 8235834
  * @summary Check if the problems reported in above bugs have been fixed
  * @modules jdk.charsets
  */
@@ -323,6 +324,64 @@
         }
     }
 
+    // Following test data is for 8235834
+    private static final byte[] byteIBM943c2b = new byte[] {
+        (byte)0x81, (byte)0x5C, (byte)0x81, (byte)0x60,
+        (byte)0x81, (byte)0x61, (byte)0x81, (byte)0x7C,
+        (byte)0x88, (byte)0xA0, (byte)0x89, (byte)0x8B,
+        (byte)0x89, (byte)0xA8, (byte)0x8A, (byte)0x9A,
+        (byte)0x8B, (byte)0xA0, (byte)0x8B, (byte)0xEB,
+        (byte)0x8C, (byte)0x71, (byte)0x8C, (byte)0x74,
+        (byte)0x8C, (byte)0xB2, (byte)0x8D, (byte)0x8D,
+        (byte)0x8D, (byte)0xF2, (byte)0x8E, (byte)0xC6,
+        (byte)0x8F, (byte)0x4A, (byte)0x8F, (byte)0xD3,
+        (byte)0x8F, (byte)0xDD, (byte)0x90, (byte)0xE4,
+        (byte)0x91, (byte)0x7E, (byte)0x91, (byte)0x89,
+        (byte)0x91, (byte)0xCB, (byte)0x92, (byte)0x5C,
+        (byte)0x92, (byte)0xCD, (byte)0x93, (byte)0x55,
+        (byte)0x93, (byte)0x5E, (byte)0x93, (byte)0x98,
+        (byte)0x93, (byte)0xC0, (byte)0x94, (byte)0x58,
+        (byte)0x94, (byte)0x8D, (byte)0x94, (byte)0xAC,
+        (byte)0x94, (byte)0xAE, (byte)0x96, (byte)0x6A,
+        (byte)0x96, (byte)0xCB, (byte)0x97, (byte)0x89,
+        (byte)0x98, (byte)0x58, (byte)0x9B, (byte)0xA0,
+        (byte)0x9D, (byte)0xB7, (byte)0x9E, (byte)0x94,
+        (byte)0xE3, (byte)0x79, (byte)0xE4, (byte)0x45,
+        (byte)0xE8, (byte)0xF6, (byte)0xFA, (byte)0x55,
+        (byte)0xFA, (byte)0x59,
+    };
+
+    private static final String strIBM943c2b1 =
+        "\u2015\uFF5E\u2225\uFF0D\u555E\u7130\u9DD7\u5699" +
+        "\u4FE0\u8EC0\u7E6B\u8346\u9E7C\u9EB4\u6805\u5C62" +
+        "\u7E61\u8523\u91AC\u87EC\u6414\u7626\u9A52\u7C1E" +
+        "\u6451\u5861\u985A\u79B1\u7006\u56CA\u525D\u6F51" +
+        "\u91B1\u9830\u9EB5\u840A\u881F\u5C5B\u6522\u688E" +
+        "\u7E48\u8141\u9839\uFFE4\uF86F";
+
+    private static final String strIBM943c2b2 =
+        "\u2014\u301C\u2016\u2212\u5516\u7114\u9D0E\u565B" +
+        "\u4FA0\u8EAF\u7E4B\u834A\u9E78\u9EB9\u67F5\u5C61" +
+        "\u7E4D\u848B\u91A4\u8749\u63BB\u75E9\u9A28\u7BAA" +
+        "\u63B4\u586B\u985B\u7977\u6D9C\u56A2\u5265\u6E8C" +
+        "\u9197\u982C\u9EBA\u83B1\u874B\u5C4F\u6505\u688D" +
+        "\u7E66\u80FC\u983D\u00A6\u2116";
+
+    private static void bug8235834 () throws Exception {
+        // 8235834 affects IBM-943 and IBM-943C encoder.
+        // The decoded results of the corresponding characters of IBM-943
+        // and IBM-943C is the same.
+        for (String csName : new String[] {"x-IBM943", "x-IBM943C"}) {
+            Charset cs = Charset.forName(csName);
+            if (!Arrays.equals(byteIBM943c2b, strIBM943c2b1.getBytes(cs))) {
+                throw new Exception(csName+" failed to encode");
+            }
+            if (!strIBM943c2b2.equals(new String(byteIBM943c2b, cs))) {
+                throw new Exception(csName+" failed to round-trip conversion");
+            }
+        }
+    }
+
     public static void main (String[] args) throws Exception {
         bug6577466();
         // need to be tested before any other IBM949C test case
@@ -337,5 +396,6 @@
         bug8212794();
         bug8213618();
         bug8220281();
+        bug8235834();
     }
 }