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