1 /* 2 * Copyright (c) 1997, 2016, 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 /* 25 * @test 26 * @library /java/text/testlib 27 * @summary test G7 Collation 28 * @modules jdk.localedata 29 */ 30 /* 31 * 32 * 33 * (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved 34 * (C) Copyright IBM Corp. 1996, 1997 - All Rights Reserved 35 * 36 * Portions copyright (c) 2007 Sun Microsystems, Inc. All Rights Reserved. 37 * 38 * The original version of this source code and documentation is copyrighted 39 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These 40 * materials are provided under terms of a License Agreement between Taligent 41 * and Sun. This technology is protected by multiple US and International 42 * patents. This notice and attribution to Taligent may not be removed. 43 * Taligent is a registered trademark of Taligent, Inc. 44 * 45 */ 46 47 /** 48 * G7 Test cases 49 * 50 * @author Helena Shih 51 */ 52 53 import java.text.Collator; 54 import java.text.RuleBasedCollator; 55 import java.util.Locale; 56 57 // G7 test program for printing out test results 58 59 public class G7Test extends CollatorTest { 60 61 public static void main(String[] args) throws Exception { 62 new G7Test().run(args); 63 } 64 65 private static final String testCases[] = { 66 "black-birds", // 0 67 "Pat", // 1 68 "p\u00E9ch\u00E9", // 2 69 "p\u00EAche", // 3 70 "p\u00E9cher", // 4 71 "p\u00EAcher", // 5 72 "Tod", // 6 73 "T\u00F6ne", // 7 74 "Tofu", // 8 75 "blackbirds", // 9 76 "Ton", // 10 77 "PAT", // 11 78 "blackbird", // 12 79 "black-bird", // 13 80 "pat", // 14 81 // Additional tests 82 "czar", // 15 83 "churo", // 16 84 "cat", // 17 85 "darn", // 18 86 "?", // 19 87 "quick", // 20 88 "#", // 21 89 "&", // 22 90 "aardvark", // 23 91 "a-rdvark", // 24 92 "abbot", // 25 93 "coop", // 26 94 "co-p", // 27 95 "cop", // 28 96 "zebra" // 29 97 }; 98 99 // loop to TOTALTESTSET 100 private static final int[][] G7Results = { 101 { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 102 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 103 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // en_US 104 { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 105 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 106 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // en_GB 107 { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 108 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 109 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // en_CA 110 { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4, 111 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 112 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // fr_FR 113 { 12, 13, 9, 0, 14, 1, 11, 3, 2, 4, 114 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 115 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // fr_CA 116 { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 117 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 118 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // de_DE 119 { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 120 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 121 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // it_IT 122 { 12, 13, 9, 0, 14, 1, 11, 2, 3, 4, 123 5, 6, 8, 10, 7, 31, 31, 31, 31, 31, 124 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }, // ja_JP 125 }; 126 127 // new table collation with rules "& Z < p, P" 128 // loop to FIXEDTESTSET 129 private static final int[] Test1Results = { 130 12, 13, 9, 0, 6, 8, 10, 7, 14, 1, 131 11, 2, 3, 4, 5, 31, 31, 31, 31, 31, 132 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 133 }; 134 135 // new table collation with rules "& C < ch , cH, Ch, CH " 136 // loop to TOTALTESTSET 137 private static final int[] Test2Results = { 138 19, 22, 21, 23, 25, 24, 12, 13, 9, 0, 139 17, 26, 28, 27, 15, 16, 18, 14, 1, 11, 140 2, 3, 4, 5, 20, 6, 8, 10, 7, 29 141 }; 142 143 // new table collation with rules 144 // "& Question-mark ; ? & Hash-mark ; # & Ampersand ; '&' " 145 // loop to TOTALTESTSET 146 private static final int[] Test3Results = { 147 23, 25, 22, 24, 12, 13, 9, 0, 17, 16, 148 26, 28, 27, 15, 18, 21, 14, 1, 11, 2, 149 3, 4, 5, 19, 20, 6, 8, 10, 7, 29 150 }; 151 152 // analogous to Japanese rules 153 // " & aa ; a- & ee ; e- & ii ; i- & oo ; o- & uu ; u- " 154 // loop to TOTALTESTSET 155 private static final int[] Test4Results = { 156 19, 22, 21, 23, 24, 25, 12, 13, 9, 0, 157 17, 16, 26, 27, 28, 15, 18, 14, 1, 11, 158 2, 3, 4, 5, 20, 6, 8, 10, 7, 29 159 }; 160 161 public void TestG7Data() { 162 for (int i = 0; i < locales.length; i++) { 163 Collator myCollation= null; 164 RuleBasedCollator tblColl1 = null; 165 166 try { 167 myCollation = Collator.getInstance(locales[i]); 168 tblColl1 = new RuleBasedCollator(((RuleBasedCollator)myCollation).getRules()); 169 } catch (Exception foo) { 170 errln("Exception: " + foo.getMessage() + 171 " Locale : " + locales[i].getDisplayName() + 172 " getRules failed\n"); 173 continue; 174 } 175 for (int j = 0; j < FIXEDTESTSET; j++) { 176 for (int n = j+1; n < FIXEDTESTSET; n++) { 177 doTest(tblColl1, testCases[G7Results[i][j]], 178 testCases[G7Results[i][n]], -1); 179 } 180 } 181 myCollation = null; 182 } 183 } 184 185 /* 186 * Demo Test 1 : Create a new table collation with rules "& Z < p, P" 187 */ 188 public void TestDemoTest1() { 189 int j = 0; 190 final Collator myCollation = Collator.getInstance(Locale.US); 191 final String defRules = ((RuleBasedCollator)myCollation).getRules(); 192 RuleBasedCollator tblColl = null; 193 String newRules = defRules + " & Z < p, P"; 194 195 try { 196 tblColl = new RuleBasedCollator(newRules); 197 for (j = 0; j < FIXEDTESTSET; j++) { 198 for (int n = j+1; n < FIXEDTESTSET; n++) { 199 doTest(tblColl, testCases[Test1Results[j]], 200 testCases[Test1Results[n]], -1); 201 } 202 } 203 tblColl = null; 204 } catch (Exception foo) { 205 errln("Exception: " + foo.getMessage() + 206 "\nDemo Test 1 Table Collation object creation failed."); 207 } 208 } 209 210 /* 211 * Demo Test 2 : Create a new table collation with rules 212 * "& C < ch , cH, Ch, CH" 213 */ 214 public void TestDemoTest2() { 215 final Collator myCollation = Collator.getInstance(Locale.US); 216 final String defRules = ((RuleBasedCollator)myCollation).getRules(); 217 String newRules = defRules + "& C < ch , cH, Ch, CH"; 218 219 try { 220 RuleBasedCollator tblColl = new RuleBasedCollator(newRules); 221 for (int j = 0; j < TOTALTESTSET; j++) { 222 for (int n = j+1; n < TOTALTESTSET; n++) { 223 doTest(tblColl, testCases[Test2Results[j]], 224 testCases[Test2Results[n]], -1); 225 } 226 } 227 } catch (Exception foo) { 228 errln("Exception: " + foo.getMessage() + 229 "\nDemo Test 2 Table Collation object creation failed.\n"); 230 } 231 } 232 233 /* 234 * Demo Test 3 : Create a new table collation with rules 235 * "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&'" 236 */ 237 public void TestDemoTest3() { 238 final Collator myCollation = Collator.getInstance(Locale.US); 239 final String defRules = ((RuleBasedCollator)myCollation).getRules(); 240 RuleBasedCollator tblColl = null; 241 String newRules = defRules + "& Question'-'mark ; '?' & Hash'-'mark ; '#' & Ampersand ; '&"; 242 243 try { 244 tblColl = new RuleBasedCollator(newRules); 245 for (int j = 0; j < TOTALTESTSET; j++) { 246 for (int n = j+1; n < TOTALTESTSET; n++) { 247 doTest(tblColl, testCases[Test3Results[j]], 248 testCases[Test3Results[n]], -1); 249 } 250 } 251 } catch (Exception foo) { 252 errln("Exception: " + foo.getMessage() + 253 "\nDemo Test 3 Table Collation object creation failed."); 254 } 255 } 256 257 /* 258 * Demo Test 4 : Create a new table collation with rules 259 * " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' " 260 */ 261 public void TestDemoTest4() { 262 final Collator myCollation = Collator.getInstance(Locale.US); 263 final String defRules = ((RuleBasedCollator)myCollation).getRules(); 264 RuleBasedCollator tblColl = null; 265 String newRules = defRules + " & aa ; a'-' & ee ; e'-' & ii ; i'-' & oo ; o'-' & uu ; u'-' "; 266 267 try { 268 tblColl = new RuleBasedCollator(newRules); 269 for (int j = 0; j < TOTALTESTSET; j++) { 270 for (int n = j+1; n < TOTALTESTSET; n++) { 271 doTest(tblColl, testCases[Test4Results[j]], 272 testCases[Test4Results[n]], -1); 273 } 274 } 275 } catch (Exception foo) { 276 errln("Exception: " + foo.getMessage() + 277 "\nDemo Test 4 Table Collation object creation failed."); 278 } 279 tblColl = null; 280 } 281 282 private static final int FIXEDTESTSET = 15; 283 private static final int TOTALTESTSET = 30; 284 285 private static final Locale locales[] = { 286 Locale.US, 287 Locale.UK, 288 Locale.CANADA, 289 Locale.FRANCE, 290 Locale.CANADA_FRENCH, 291 Locale.GERMANY, 292 Locale.JAPAN, 293 Locale.ITALY 294 }; 295 }