1 /*********************************************************************** 2 * COPYRIGHT: 3 * Copyright (c) 1997-2006, International Business Machines Corporation 4 * and others. All Rights Reserved. 5 ***********************************************************************/ 6 7 /** 8 * CollationAPITest is a third level test class. This test performs API 9 * related tests for the Collation framework. 10 */ 11 12 #ifndef _APICOLL 13 #define _APICOLL 14 15 #include "unicode/utypes.h" 16 17 #if !UCONFIG_NO_COLLATION 18 19 #include "unicode/tblcoll.h" 20 #include "tscoll.h" 21 22 class CollationAPITest: public IntlTestCollator { 23 public: 24 void runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par = NULL */); 25 void doAssert(UBool condition, const char *message); 26 27 /** 28 * This tests the properties of a collator object. 29 * - constructor/destructor 30 * - factory method createInstance 31 * - compare and getCollationKey 32 * - get/set decomposition mode and comparison level 33 * - displayable name in the desired locale 34 */ 35 void TestProperty(/* char* par */); 36 37 /** 38 * This tests the RuleBasedCollator 39 * - constructor/destructor 40 * - getRules 41 */ 42 void TestRuleBasedColl(/* char* par */); 43 44 /** 45 * This tests the RuleBasedCollator 46 * - getRules 47 */ 48 void TestRules(/* char* par */); 49 50 /** 51 * Tests decomposition setting 52 */ 53 void TestDecomposition(); 54 55 /** 56 * SafeClone test 57 */ 58 void TestSafeClone(); 59 60 /** 61 * This tests the properties of a rule based collator object. 62 * - constructor/destructor 63 * - == and != operators 64 * - clone and copy 65 * - collation rules access 66 */ 67 void TestOperators(/* char* par */); 68 69 /** 70 * This tests the duplication of a collator object. 71 */ 72 void TestDuplicate(/* char* par */); 73 74 /** 75 * This tests the comparison convenience methods of a collator object. 76 * - greater than 77 * - greater than or equal to 78 * - equal to 79 */ 80 void TestCompare(/* char* par */); 81 82 /** 83 * This tests the hashCode method of a collator object. 84 */ 85 void TestHashCode(/* char* par */); 86 87 /** 88 * This tests the collation key related APIs. 89 * - constructor/destructor 90 * - Collator::getCollationKey 91 * - == and != operators 92 * - comparison between collation keys 93 * - creating collation key with a byte array and vice versa 94 */ 95 void TestCollationKey(/* char* par */); 96 97 /** 98 * This tests the CollationElementIterator related APIs. 99 * - creation of a CollationElementIterator object 100 * - == and != operators 101 * - iterating forward 102 * - reseting the iterator index 103 * - requesting the order properties(primary, secondary or tertiary) 104 */ 105 void TestElemIter(/* char* par */); 106 107 /** 108 * This tests the list the all available locales. 109 */ 110 void TestGetAll(/* char* par */); 111 112 /** 113 * This tests the sort keys generated by collator 114 */ 115 void TestSortKey(); 116 117 /** 118 * This tests getMaxExpansion 119 */ 120 void TestMaxExpansion(); 121 122 /** 123 * Tests the retrieval of names given a locale 124 */ 125 void TestDisplayName(); 126 127 /** 128 * Tests the collator attributes 129 */ 130 void TestAttribute(); 131 132 /** 133 * Tests the setters and getters of variable top 134 */ 135 void TestVariableTopSetting(); 136 137 /** 138 * Tests GetLocale for a Collator 139 */ 140 void TestGetLocale(); 141 142 /** 143 * Tests bounds API 144 */ 145 void TestBounds(); 146 147 /** 148 * Tests getTailoredSet API 149 */ 150 void TestGetTailoredSet(); 151 152 /** 153 * Tests the subclassability 154 */ 155 void TestSubclass(); 156 157 /** 158 * Tests the dynamic and static ids of collation classes 159 */ 160 void TestUClassID(); 161 162 /** 163 * Test NULL 164 */ 165 void TestNULLCharTailoring(); 166 167 void TestClone(); 168 private: 169 // If this is too small for the test data, just increase it. 170 // Just don't make it too large, otherwise the executable will get too big 171 enum EToken_Len { MAX_TOKEN_LEN = 16 }; 172 173 void dump(UnicodeString msg, RuleBasedCollator* c, UErrorCode& status); 174 175 }; 176 177 #endif /* #if !UCONFIG_NO_COLLATION */ 178 179 #endif 180