16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*********************************************************************** 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * COPYRIGHT: 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (c) 1997-2013, International Business Machines Corporation 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ***********************************************************************/ 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * CollationAPITest is a third level test class. This test performs API 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * related tests for the Collation framework. 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef _APICOLL 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define _APICOLL 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_COLLATION 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/tblcoll.h" 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "tscoll.h" 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass CollationAPITest: public IntlTestCollator { 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = NULL */); 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void doAssert(UBool condition, const char *message); 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the properties of a collator object. 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - constructor/destructor 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - factory method createInstance 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - compare and getCollationKey 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - get/set decomposition mode and comparison level 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - displayable name in the desired locale 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestProperty(/* char* par */); 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the RuleBasedCollator 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - constructor/destructor 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - getRules 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestRuleBasedColl(/* char* par */); 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the RuleBasedCollator 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - getRules 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestRules(/* char* par */); 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests decomposition setting 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestDecomposition(); 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * SafeClone test 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSafeClone(); 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the properties of a rule based collator object. 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - constructor/destructor 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - == and != operators 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - clone and copy 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - collation rules access 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestOperators(/* char* par */); 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the duplication of a collator object. 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestDuplicate(/* char* par */); 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the comparison convenience methods of a collator object. 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - greater than 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - greater than or equal to 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - equal to 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCompare(/* char* par */); 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the hashCode method of a collator object. 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestHashCode(/* char* par */); 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the collation key related APIs. 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - constructor/destructor 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - Collator::getCollationKey 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - == and != operators 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - comparison between collation keys 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - creating collation key with a byte array and vice versa 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestCollationKey(/* char* par */); 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the CollationElementIterator related APIs. 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - creation of a CollationElementIterator object 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - == and != operators 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - iterating forward 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - reseting the iterator index 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * - requesting the order properties(primary, secondary or tertiary) 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestElemIter(/* char* par */); 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the list the all available locales. 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestGetAll(/* char* par */); 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests the sort keys generated by collator 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSortKey(); 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSortKeyOverflow(); 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This tests getMaxExpansion 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestMaxExpansion(); 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests the retrieval of names given a locale 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestDisplayName(); 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests the collator attributes 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestAttribute(); 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests the setters and getters of variable top 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestVariableTopSetting(); 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests GetLocale for a Collator 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestGetLocale(); 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests bounds API 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestBounds(); 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests getTailoredSet API 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestGetTailoredSet(); 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests the subclassability 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestSubclass(); 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Tests the dynamic and static ids of collation classes 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestUClassID(); 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Test NULL 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestNULLCharTailoring(); 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestClone(); 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void TestIterNumeric(); 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // If this is too small for the test data, just increase it. 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Just don't make it too large, otherwise the executable will get too big 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org enum EToken_Len { MAX_TOKEN_LEN = 16 }; 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org void dump(UnicodeString msg, RuleBasedCollator* c, UErrorCode& status); 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_COLLATION */ 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 183