17935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/* 27935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 37935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Copyright (C) 2002-2014, International Business Machines Corporation and 47935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * others. All Rights Reserved. 57935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert ******************************************************************************* 67935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert */ 77935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 87935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert/** 97935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Port From: ICU4C v2.1 : Collate/CollationFrenchTest 107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert * Source File: $ICU4CRoot/source/test/intltest/frcoll.cpp 117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert **/ 127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpackage com.ibm.icu.dev.test.collator; 147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport java.util.Locale; 167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.dev.test.TestFmwk; 187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.CollationKey; 197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.Collator; 207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertimport com.ibm.icu.text.RuleBasedCollator; 217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubertpublic class CollationFrenchTest extends TestFmwk{ 237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public static void main(String[] args) throws Exception { 247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert new CollationFrenchTest().run(args); 257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static char[][] testSourceCases = { 287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0061/*'a'*/, 0x0062/*'b'*/, 0x0063/*'c'*/}, 297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0043/*'C'*/, 0x004f/*'O'*/, 0x0054/*'T'*/, 0x0045/*'E'*/}, 307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0063/*'c'*/, 0x006f/*'o'*/, 0x002d/*'-'*/, 0x006f/*'o'*/, 0x0070/*'p'*/}, 317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/}, 327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/}, 337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/}, 347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/}, 357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0048/*'H'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x006f/*'o'*/}, 367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x01f1}, 377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0xfb00}, 387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x01fa}, 397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0101} 407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static char[][] testTargetCases = { 437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0041/*'A'*/, 0x0042/*'B'*/, 0x0043/*'C'*/}, 447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0063/*'c'*/, 0x00f4, 0x0074/*'t'*/, 0x0065/*'e'*/}, 457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0043/*'C'*/, 0x004f/*'O'*/, 0x004f/*'O'*/, 0x0050/*'P'*/}, 467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x00E9}, 477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0070/*'p'*/, 0x00E9, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x00E9}, 487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/}, 497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0070/*'p'*/, 0x00EA, 0x0063/*'c'*/, 0x0068/*'h'*/, 0x0065/*'e'*/, 0x0072/*'r'*/}, 507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0068/*'h'*/, 0x0065/*'e'*/, 0x006c/*'l'*/, 0x006c/*'l'*/, 0x004f/*'O'*/}, 517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x01ee}, 527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x25ca}, 537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x00e0}, 547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x01df} 557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static int[] results = { 587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, /*Collator::GREATER,*/ 617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1, 637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1, 647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1, 667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, /*Collator::GREATER,*/ 677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1, 687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1, 697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert -1 707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // 0x0300 is grave, 0x0301 is acute 737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // the order of elements in this array must be different than the order in CollationEnglishTest 747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static char[][] testAcute = { 757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*00*/ {0x0065/*'e'*/, 0x0065/*'e'*/}, 767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*01*/ {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/}, 777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*02*/ {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/}, 787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*03*/ {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/}, 797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*04*/ {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/}, 807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*05*/ {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0301}, 817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*06*/ {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0301}, 827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*07*/ {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0301}, 837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*08*/ {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0301}, 847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*09*/ {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301}, 857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*0a*/ {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0300, 0x0301}, 867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*0b*/ {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0300, 0x0301}, 877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*0c*/ {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0300, 0x0301}, 887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*0d*/ {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0300, 0x0301}, 897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*0e*/ {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0300, 0x0301}, 907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*0f*/ {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0300}, 917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*10*/ {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0300}, 927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*11*/ {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0300}, 937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*12*/ {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0300}, 947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*13*/ {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0300}, 957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*14*/ {0x0065/*'e'*/, 0x0065/*'e'*/, 0x0301, 0x0300}, 967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*15*/ {0x0065/*'e'*/, 0x0301, 0x0065/*'e'*/, 0x0301, 0x0300}, 977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*16*/ {0x0065/*'e'*/, 0x0300, 0x0301, 0x0065/*'e'*/, 0x0301, 0x0300}, 987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*17*/ {0x0065/*'e'*/, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300}, 997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert /*18*/ {0x0065/*'e'*/, 0x0301, 0x0300, 0x0065/*'e'*/, 0x0301, 0x0300} 1007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 1017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private static char[][] testBugs = { 1037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0061/*'a'*/}, 1047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0041/*'A'*/}, 1057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0065/*'e'*/}, 1067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0045/*'E'*/}, 1077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x00e9}, 1087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x00e8}, 1097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x00ea}, 1107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x00eb}, 1117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0065/*'e'*/, 0x0061/*'a'*/}, 1127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert {0x0078/*'x'*/} 1137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert }; 1147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private Collator myCollation = null; 1177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public CollationFrenchTest() { 1197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert protected void init()throws Exception{ 1227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert myCollation = Collator.getInstance(Locale.CANADA_FRENCH); 1237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // perform tests with strength TERTIARY 1267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestTertiary() { 1277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int i = 0; 1287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert myCollation.setStrength(Collator.TERTIARY); 1297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (i = 0; i < 12 ; i++) { 1317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testSourceCases[i], testTargetCases[i], results[i]); 1327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // perform tests with strength SECONDARY 1367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestSecondary() { 1377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert //test acute and grave ordering 1387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int i = 0; 1397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int j; 1407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int expected; 1417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert myCollation.setStrength(Collator.SECONDARY); 1437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (i = 0; i < testAcute.length; i++) { 1457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (j = 0; j < testAcute.length; j++) { 1467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (i < j) { 1477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert expected = -1; 1487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else if (i == j) { 1497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert expected = 0; 1507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 1517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert expected = 1; 1527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testAcute[i], testAcute[j], expected ); 1547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1557935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1567935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1577935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1587935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // perform extra tests 1597935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestExtra() { 1607935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int i, j; 1617935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert myCollation.setStrength(Collator.TERTIARY); 1627935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (i = 0; i < 9 ; i++) { 1637935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert for (j = i + 1; j < 10; j += 1) { 1647935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert doTest(testBugs[i], testBugs[j], -1); 1657935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1667935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1677935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1687935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1697935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert public void TestContinuationReordering() 1707935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert { 1717935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String rule = "&0x2f00 << 0x2f01"; 1727935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert try { 1737935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert RuleBasedCollator collator = new RuleBasedCollator(rule); 1747935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert collator.setFrenchCollation(true); 1757935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert CollationKey key1 1767935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert = collator.getCollationKey("a\u0325\u2f00\u2f01b\u0325"); 1777935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert CollationKey key2 1787935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert = collator.getCollationKey("a\u0325\u2f01\u2f01b\u0325"); 1797935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (key1.compareTo(key2) >= 0) { 1807935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("Error comparing continuation strings"); 1817935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1827935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } catch (Exception e) { 1837935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(e.toString()); 1847935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1857935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1867935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1877935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert // main test routine, test rules specific to the french locale 1887935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void doTest(char[] source, char[] target, int result) { 1897935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String s = new String(source); 1907935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String t = new String(target); 1917935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int compareResult = myCollation.compare(s, t); 1927935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert CollationKey sortKey1, sortKey2; 1937935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sortKey1 = myCollation.getCollationKey(s); 1947935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sortKey2 = myCollation.getCollationKey(t); 1957935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int keyResult = sortKey1.compareTo(sortKey2); 1967935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert reportCResult(s, t, sortKey1, sortKey2, compareResult, keyResult, compareResult, result); 1977935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 1987935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 1997935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert private void reportCResult( String source, String target, CollationKey sourceKey, CollationKey targetKey, 2007935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert int compareResult, int keyResult, int incResult, int expectedResult ) { 2017935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (expectedResult < -1 || expectedResult > 1) { 2027935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln("***** invalid call to reportCResult ****"); 2037935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return; 2047935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2057935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2067935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean ok1 = (compareResult == expectedResult); 2077935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean ok2 = (keyResult == expectedResult); 2087935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert boolean ok3 = (incResult == expectedResult); 2097935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2107935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (ok1 && ok2 && ok3 && !isVerbose()) { 2117935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert return; 2127935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 2137935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String msg1 = ok1? "Ok: compare(\"" : "FAIL: compare(\""; 2147935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String msg2 = "\", \""; 2157935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String msg3 = "\") returned "; 2167935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String msg4 = "; expected "; 2177935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2187935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String sExpect = new String(""); 2197935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert String sResult = new String(""); 2207935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sResult = CollationTest.appendCompareResult(compareResult, sResult); 2217935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sExpect = CollationTest.appendCompareResult(expectedResult, sExpect); 2227935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (ok1) { 2237935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(msg1 + source + msg2 + target + msg3 + sResult); 2247935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 2257935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect); 2267935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2277935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2287935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg1 = ok2 ? "Ok: key(\"" : "FAIL: key(\""; 2297935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg2 = "\").compareTo(key(\""; 2307935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg3 = "\")) returned "; 2317935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sResult = CollationTest.appendCompareResult(keyResult, sResult); 2327935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (ok2) { 2337935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(msg1 + source + msg2 + target + msg3 + sResult); 2347935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 2357935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect); 2367935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg1 = " "; 2377935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg2 = " vs. "; 2387935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(msg1 + CollationTest.prettify(sourceKey) + msg2 + CollationTest.prettify(targetKey)); 2397935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2407935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2417935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg1 = ok3 ? "Ok: incCompare(\"" : "FAIL: incCompare(\""; 2427935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg2 = "\", \""; 2437935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert msg3 = "\") returned "; 2447935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2457935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert sResult = CollationTest.appendCompareResult(incResult, sResult); 2467935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert 2477935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert if (ok3) { 2487935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert logln(msg1 + source + msg2 + target + msg3 + sResult); 2497935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } else { 2507935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert errln(msg1 + source + msg2 + target + msg3 + sResult + msg4 + sExpect); 2517935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2527935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2537935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert } 2547935b1839a081ed19ae0d33029ad3c09632a2caaFredrik Roubert} 255