12d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// © 2016 and later: Unicode, Inc. and others. 22d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html#License 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2002-2014, International Business Machines Corporation and 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Port From: ICU4C v2.1 : Collate/CollationTurkishTest 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Source File: $ICU4CRoot/source/test/intltest/trcoll.cpp 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.collator; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Locale; 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 192d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport org.junit.Before; 202d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubertimport org.junit.Test; 212d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.dev.test.TestFmwk; 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.CollationKey; 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.Collator; 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class CollationTurkishTest extends TestFmwk{ 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static char[][] testSourceCases = { 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x73, 0x0327}, 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x76, 0x00E4, 0x74}, 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x6f, 0x6c, 0x64}, 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x00FC, 0x6f, 0x69, 0x64}, 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x68, 0x011E, 0x61, 0x6c, 0x74}, 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x73, 0x74, 0x72, 0x65, 0x73, 0x015E}, 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x76, 0x6f, 0x0131, 0x64}, 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x69, 0x64, 0x65, 0x61}, 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x00FC, 0x6f, 0x69, 0x64}, 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x76, 0x6f, 0x0131, 0x64}, 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x69, 0x64, 0x65, 0x61} 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static char[][] testTargetCases = { 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x75, 0x0308}, 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x76, 0x62, 0x74}, 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x00D6, 0x61, 0x79}, 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x76, 0x6f, 0x69, 0x64}, 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x68, 0x61, 0x6c, 0x74}, 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x015E, 0x74, 0x72, 0x65, 0x015E, 0x73}, 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x76, 0x6f, 0x69, 0x64}, 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x49, 0x64, 0x65, 0x61}, 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x76, 0x6f, 0x69, 0x64}, 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x76, 0x6f, 0x69, 0x64}, 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x49, 0x64, 0x65, 0x61} 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static int[] results = { 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1, 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1, 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // test priamry > 8 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private Collator myCollation = null; 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public CollationTurkishTest() { 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 752d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert 762d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Before 772d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert public void init()throws Exception{ 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert myCollation = Collator.getInstance(new Locale("tr", "")); 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 812d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Test 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestTertiary() { 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int i = 0; 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert myCollation.setStrength(Collator.TERTIARY); 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (i = 0; i < 8 ; i++) { 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testSourceCases[i], testTargetCases[i], results[i]); 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 902d2bb24f747c65578da13d5b13b82f0669690461Fredrik Roubert @Test 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestPrimary() { 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int i; 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert myCollation.setStrength(Collator.PRIMARY); 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (i = 8; i < 11; i++) { 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testSourceCases[i], testTargetCases[i], results[i]); 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // main test routine, tests rules specific to turkish locale 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void doTest(char[] source, char[] target, int result) { 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s = new String(source); 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String t = new String(target); 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int compareResult = myCollation.compare(s, t); 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert CollationKey sortKey1, sortKey2; 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sortKey1 = myCollation.getCollationKey(s); 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sortKey2 = myCollation.getCollationKey(t); 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int keyResult = sortKey1.compareTo(sortKey2); 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result); 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey, 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int compareResult, int keyResult, int incResult, int expectedResult ) { 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (expectedResult < -1 || expectedResult > 1) { 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("***** invalid call to reportCResult ****"); 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return; 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean ok1 = (compareResult == expectedResult); 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean ok2 = (keyResult == expectedResult); 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean ok3 = (incResult == expectedResult); 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (ok1 && ok2 && ok3 && !isVerbose()) { 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return; 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\""; 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String msg2 = "\", \""; 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String msg3 = "\") returned "; 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String msg4 = "; expected "; 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String sExpect = new String(""); 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String sResult = new String(""); 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sResult = CollationTest.appendCompareResult(compareResult, sResult); 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sExpect = CollationTest.appendCompareResult(expectedResult, sExpect); 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (ok1) { 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(msg1 + source + msg2 + target + msg3 + sResult); 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect); 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\""; 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg2 = "\").compareTo(key(\""; 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg3 = "\")) returned "; 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sResult = CollationTest.appendCompareResult(keyResult, sResult); 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (ok2) { 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(msg1 + source + msg2 + target + msg3 + sResult); 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect); 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg1 = " "; 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg2 = " vs. "; 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(msg1 + CollationTest.prettify(sourceKey) + msg2 + CollationTest.prettify(targetKey)); 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\""; 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg2 = "\", \""; 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg3 = "\") returned "; 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sResult = CollationTest.appendCompareResult(incResult, sResult); 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (ok3) { 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(msg1 + source + msg2 + target + msg3 + sResult); 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect); 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 169