/* * 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 }; }