--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/java/text/Collator/G7Test.java Tue Sep 12 19:03:39 2017 +0200
@@ -0,0 +1,295 @@
+/*
+ * Copyright (c) 1997, 2016, 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
+ * @library /java/text/testlib
+ * @summary test G7 Collation
+ * @modules jdk.localedata
+ */
+/*
+ *
+ *
+ * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1996, 1997 - All Rights Reserved
+ *
+ * Portions copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved.
+ *
+ * The original version of this source code and documentation is copyrighted
+ * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These
+ * materials are provided under terms of a License Agreement between Taligent
+ * and Sun. This technology is protected by multiple US and International
+ * patents. This notice and attribution to Taligent may not be removed.
+ * Taligent is a registered trademark of Taligent, Inc.
+ *
+*/
+
+/**
+ * G7 Test cases
+ *
+ * @author Helena Shih
+ */
+
+import java.text.Collator;
+import java.text.RuleBasedCollator;
+import java.util.Locale;
+
+// G7 test program for printing out test results
+
+public class G7Test extends CollatorTest {
+
+ public static void main(String[] args) throws Exception {
+ new G7Test().run(args);
+ }
+
+ private static final String testCases[] = {
+ "black-birds", // 0
+ "Pat", // 1
+ "p\u00E9ch\u00E9", // 2
+ "p\u00EAche", // 3
+ "p\u00E9cher", // 4
+ "p\u00EAcher", // 5
+ "Tod", // 6
+ "T\u00F6ne", // 7
+ "Tofu", // 8
+ "blackbirds", // 9
+ "Ton", // 10
+ "PAT", // 11
+ "blackbird", // 12
+ "black-bird", // 13
+ "pat", // 14
+ // Additional tests
+ "czar", // 15
+ "churo", // 16
+ "cat", // 17
+ "darn", // 18
+ "?", // 19
+ "quick", // 20
+ "#", // 21
+ "&", // 22
+ "aardvark", // 23
+ "a-rdvark", // 24
+ "abbot", // 25
+ "coop", // 26
+ "co-p", // 27
+ "cop", // 28
+ "zebra" // 29
+ };
+
+ // loop to TOTALTESTSET
+ private static final int[][] G7Results = {
+ { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4,
+ 5, 6, 8, 10, 7, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // en_US
+ { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4,
+ 5, 6, 8, 10, 7, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // en_GB
+ { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4,
+ 5, 6, 8, 10, 7, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // en_CA
+ { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4,
+ 5, 6, 8, 10, 7, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // fr_FR
+ { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4,
+ 5, 6, 8, 10, 7, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // fr_CA
+ { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4,
+ 5, 6, 8, 10, 7, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // de_DE
+ { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4,
+ 5, 6, 8, 10, 7, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // it_IT
+ { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4,
+ 5, 6, 8, 10, 7, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // ja_JP
+ };
+
+ // new table collation with rules "& Z < p, P"
+ // loop to FIXEDTESTSET
+ private static final int[] Test1Results = {
+ 12, 13, 9, 0, 6, 8, 10, 7, 14, 1,
+ 11, 2, 3, 4, 5, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31
+ };
+
+ // new table collation with rules "& C < ch , cH, Ch, CH "
+ // loop to TOTALTESTSET
+ private static final int[] Test2Results = {
+ 19, 22, 21, 23, 25, 24, 12, 13, 9, 0,
+ 17, 26, 28, 27, 15, 16, 18, 14, 1, 11,
+ 2, 3, 4, 5, 20, 6, 8, 10, 7, 29
+ };
+
+ // new table collation with rules
+ // "& Question-mark ; ? & Hash-mark ; # & Ampersand ; '&' "
+ // loop to TOTALTESTSET
+ private static final int[] Test3Results = {
+ 23, 25, 22, 24, 12, 13, 9, 0, 17, 16,
+ 26, 28, 27, 15, 18, 21, 14, 1, 11, 2,
+ 3, 4, 5, 19, 20, 6, 8, 10, 7, 29
+ };
+
+ // analogous to Japanese rules
+ // " & aa ; a- & ee ; e- & ii ; i- & oo ; o- & uu ; u- "
+ // loop to TOTALTESTSET
+ private static final int[] Test4Results = {
+ 19, 22, 21, 23, 24, 25, 12, 13, 9, 0,
+ 17, 16, 26, 27, 28, 15, 18, 14, 1, 11,
+ 2, 3, 4, 5, 20, 6, 8, 10, 7, 29
+ };
+
+ public void TestG7Data() {
+ for (int i = 0; i < locales.length; i++) {
+ Collator myCollation= null;
+ RuleBasedCollator tblColl1 = null;
+
+ try {
+ myCollation = Collator.getInstance(locales[i]);
+ tblColl1 = new RuleBasedCollator(((RuleBasedCollator)myCollation).getRules());
+ } catch (Exception foo) {
+ errln("Exception: " + foo.getMessage() +
+ " Locale : " + locales[i].getDisplayName() +
+ " getRules failed\n");
+ continue;
+ }
+ for (int j = 0; j < FIXEDTESTSET; j++) {
+ for (int n = j+1; n < FIXEDTESTSET; n++) {
+ doTest(tblColl1, testCases[G7Results[i][j]],
+ testCases[G7Results[i][n]], -1);
+ }
+ }
+ myCollation = null;
+ }
+ }
+
+ /*
+ * Demo Test 1 : Create a new table collation with rules "& Z < p, P"
+ */
+ public void TestDemoTest1() {
+ int j = 0;
+ final Collator myCollation = Collator.getInstance(Locale.US);
+ final String defRules = ((RuleBasedCollator)myCollation).getRules();
+ RuleBasedCollator tblColl = null;
+ String newRules = defRules + " & Z < p, P";
+
+ try {
+ tblColl = new RuleBasedCollator(newRules);
+ for (j = 0; j < FIXEDTESTSET; j++) {
+ for (int n = j+1; n < FIXEDTESTSET; n++) {
+ doTest(tblColl, testCases[Test1Results[j]],
+ testCases[Test1Results[n]], -1);
+ }
+ }
+ tblColl = null;
+ } catch (Exception foo) {
+ errln("Exception: " + foo.getMessage() +
+ "\nDemo Test 1 Table Collation object creation failed.");
+ }
+ }
+
+ /*
+ * Demo Test 2 : Create a new table collation with rules
+ * "& C < ch , cH, Ch, CH"
+ */
+ public void TestDemoTest2() {
+ final Collator myCollation = Collator.getInstance(Locale.US);
+ final String defRules = ((RuleBasedCollator)myCollation).getRules();
+ String newRules = defRules + "& C < ch , cH, Ch, CH";
+
+ try {
+ RuleBasedCollator tblColl = new RuleBasedCollator(newRules);
+ for (int j = 0; j < TOTALTESTSET; j++) {
+ for (int n = j+1; n < TOTALTESTSET; n++) {
+ doTest(tblColl, testCases[Test2Results[j]],
+ testCases[Test2Results[n]], -1);
+ }
+ }
+ } catch (Exception foo) {
+ errln("Exception: " + foo.getMessage() +
+ "\nDemo Test 2 Table Collation object creation failed.\n");
+ }
+ }
+
+ /*
+ * Demo Test 3 : Create a new table collation with rules
+ * "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'"
+ */
+ public void TestDemoTest3() {
+ final Collator myCollation = Collator.getInstance(Locale.US);
+ final String defRules = ((RuleBasedCollator)myCollation).getRules();
+ RuleBasedCollator tblColl = null;
+ String newRules = defRules + "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&";
+
+ try {
+ tblColl = new RuleBasedCollator(newRules);
+ for (int j = 0; j < TOTALTESTSET; j++) {
+ for (int n = j+1; n < TOTALTESTSET; n++) {
+ doTest(tblColl, testCases[Test3Results[j]],
+ testCases[Test3Results[n]], -1);
+ }
+ }
+ } catch (Exception foo) {
+ errln("Exception: " + foo.getMessage() +
+ "\nDemo Test 3 Table Collation object creation failed.");
+ }
+ }
+
+ /*
+ * Demo Test 4 : Create a new table collation with rules
+ * " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' "
+ */
+ public void TestDemoTest4() {
+ final Collator myCollation = Collator.getInstance(Locale.US);
+ final String defRules = ((RuleBasedCollator)myCollation).getRules();
+ RuleBasedCollator tblColl = null;
+ String newRules = defRules + " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' ";
+
+ try {
+ tblColl = new RuleBasedCollator(newRules);
+ for (int j = 0; j < TOTALTESTSET; j++) {
+ for (int n = j+1; n < TOTALTESTSET; n++) {
+ doTest(tblColl, testCases[Test4Results[j]],
+ testCases[Test4Results[n]], -1);
+ }
+ }
+ } catch (Exception foo) {
+ errln("Exception: " + foo.getMessage() +
+ "\nDemo Test 4 Table Collation object creation failed.");
+ }
+ tblColl = null;
+ }
+
+ private static final int FIXEDTESTSET = 15;
+ private static final int TOTALTESTSET = 30;
+
+ private static final Locale locales[] = {
+ Locale.US,
+ Locale.UK,
+ Locale.CANADA,
+ Locale.FRANCE,
+ Locale.CANADA_FRENCH,
+ Locale.GERMANY,
+ Locale.JAPAN,
+ Locale.ITALY
+ };
+}