1 /***********************************************************************
2  * COPYRIGHT:
3  * Copyright (c) 1997-2014, 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     void TestSortKeyOverflow();
117 
118     /**
119      * This tests getMaxExpansion
120      */
121     void TestMaxExpansion();
122 
123     /**
124     * Tests the retrieval of names given a locale
125     */
126     void TestDisplayName();
127 
128     /**
129     * Tests the collator attributes
130     */
131     void TestAttribute();
132 
133     /**
134     * Tests the setters and getters of variable top
135     */
136     void TestVariableTopSetting();
137     void TestMaxVariable();
138 
139     /**
140     * Tests GetLocale for a Collator
141     */
142     void TestGetLocale();
143 
144     /**
145     * Tests bounds API
146     */
147     void TestBounds();
148 
149     /**
150     * Tests getTailoredSet API
151     */
152     void TestGetTailoredSet();
153 
154     /**
155     * Tests the subclassability
156     */
157     void TestSubclass();
158 
159     /**
160     * Tests the dynamic and static ids of collation classes
161     */
162     void TestUClassID();
163 
164     /**
165     * Test NULL
166     */
167     void TestNULLCharTailoring();
168 
169     void TestClone();
170     void TestCloneBinary();
171     void TestIterNumeric();
172     void TestBadKeywords();
173 
174 private:
175     // If this is too small for the test data, just increase it.
176     // Just don't make it too large, otherwise the executable will get too big
177     enum EToken_Len { MAX_TOKEN_LEN = 16 };
178 
179     void dump(UnicodeString msg, RuleBasedCollator* c, UErrorCode& status);
180 
181 };
182 
183 #endif /* #if !UCONFIG_NO_COLLATION */
184 
185 #endif
186