OLD | NEW |
| (Empty) |
1 /******************************************************************** | |
2 * COPYRIGHT: | |
3 * Copyright (c) 1997-2014, International Business Machines Corporation and | |
4 * others. All Rights Reserved. | |
5 ********************************************************************/ | |
6 | |
7 /** | |
8 * Collation regression tests. | |
9 * (So we'll have no regrets later) | |
10 */ | |
11 | |
12 #ifndef _REGCOLL | |
13 #define _REGCOLL | |
14 | |
15 #include "unicode/utypes.h" | |
16 | |
17 #if !UCONFIG_NO_COLLATION | |
18 | |
19 #include "unicode/coleitr.h" | |
20 #include "tscoll.h" | |
21 | |
22 class CollationRegressionTest: public IntlTestCollator | |
23 { | |
24 public: | |
25 | |
26 // If this is too small for the test data, just increase it. | |
27 // Just don't make it too large, otherwise the executable will get too big | |
28 enum EToken_Len { MAX_TOKEN_LEN = 32 }; | |
29 | |
30 CollationRegressionTest(); | |
31 virtual ~CollationRegressionTest(); | |
32 | |
33 void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par
= NULL ); | |
34 | |
35 // @bug 4048446 | |
36 // | |
37 // CollationElementIterator.reset() doesn't work | |
38 // | |
39 void Test4048446(/* char* par */); | |
40 | |
41 // @bug 4051866 | |
42 // | |
43 // Collator -> rules -> Collator round-trip broken for expanding characters | |
44 // | |
45 void Test4051866(/* char* par */); | |
46 | |
47 // @bug 4053636 | |
48 // | |
49 // Collator thinks "black-bird" == "black" | |
50 // | |
51 void Test4053636(/* char* par */); | |
52 | |
53 | |
54 // @bug 4054238 | |
55 // | |
56 // CollationElementIterator will not work correctly if the associated | |
57 // Collator object's mode is changed | |
58 // | |
59 void Test4054238(/* char* par */); | |
60 | |
61 // @bug 4054734 | |
62 // | |
63 // Collator.IDENTICAL documented but not implemented | |
64 // | |
65 void Test4054734(/* char* par */); | |
66 | |
67 // @bug 4054736 | |
68 // | |
69 // Full Decomposition mode not implemented | |
70 // | |
71 void Test4054736(/* char* par */); | |
72 | |
73 // @bug 4058613 | |
74 // | |
75 // Collator.getInstance() causes an ArrayIndexOutofBoundsException for Korea
n | |
76 // | |
77 void Test4058613(/* char* par */); | |
78 | |
79 // @bug 4059820 | |
80 // | |
81 // RuleBasedCollator.getRules does not return the exact pattern as input | |
82 // for expanding character sequences | |
83 // | |
84 void Test4059820(/* char* par */); | |
85 | |
86 // @bug 4060154 | |
87 // | |
88 // MergeCollation::fixEntry broken for "& H < \u0131, \u0130, i, I" | |
89 // | |
90 void Test4060154(/* char* par */); | |
91 | |
92 // @bug 4062418 | |
93 // | |
94 // Secondary/Tertiary comparison incorrect in French Secondary | |
95 // | |
96 void Test4062418(/* char* par */); | |
97 | |
98 // @bug 4065540 | |
99 // | |
100 // Collator.compare() method broken if either string contains spaces | |
101 // | |
102 void Test4065540(/* char* par */); | |
103 | |
104 // @bug 4066189 | |
105 // | |
106 // Unicode characters need to be recursively decomposed to get the | |
107 // correct result. For example, | |
108 // u1EB1 -> \u0103 + \u0300 -> a + \u0306 + \u0300. | |
109 // | |
110 void Test4066189(/* char* par */); | |
111 | |
112 // @bug 4066696 | |
113 // | |
114 // French secondary collation checking at the end of compare iteration fails | |
115 // | |
116 void Test4066696(/* char* par */); | |
117 | |
118 | |
119 // @bug 4076676 | |
120 // | |
121 // Bad canonicalization of same-class combining characters | |
122 // | |
123 void Test4076676(/* char* par */); | |
124 | |
125 | |
126 // @bug 4078588 | |
127 // | |
128 // RuleBasedCollator breaks on "< a < bb" rule | |
129 // | |
130 void Test4078588(/* char* par */); | |
131 | |
132 // @bug 4079231 | |
133 // | |
134 // RuleBasedCollator.equals(null) throws NullPointerException | |
135 // | |
136 void Test4079231(/* char* par */); | |
137 | |
138 // @bug 4081866 | |
139 // | |
140 // Combining characters in different classes not reordered properly. | |
141 // | |
142 void Test4081866(/* char* par */); | |
143 | |
144 // @bug 4087241 | |
145 // | |
146 // string comparison errors in Scandinavian collators | |
147 // | |
148 void Test4087241(/* char* par */); | |
149 | |
150 // @bug 4087243 | |
151 // | |
152 // CollationKey takes ignorable strings into account when it shouldn't | |
153 // | |
154 void Test4087243(/* char* par */); | |
155 | |
156 // @bug 4092260 | |
157 // | |
158 // Mu/micro conflict | |
159 // Micro symbol and greek lowercase letter Mu should sort identically | |
160 // | |
161 void Test4092260(/* char* par */); | |
162 | |
163 // @bug 4095316 | |
164 // | |
165 void Test4095316(/* char* par */); | |
166 | |
167 // @bug 4101940 | |
168 // | |
169 void Test4101940(/* char* par */); | |
170 | |
171 // @bug 4103436 | |
172 // | |
173 // Collator.compare not handling spaces properly | |
174 // | |
175 void Test4103436(/* char* par */); | |
176 | |
177 // @bug 4114076 | |
178 // | |
179 // Collation not Unicode conformant with Hangul syllables | |
180 // | |
181 void Test4114076(/* char* par */); | |
182 | |
183 | |
184 // @bug 4114077 | |
185 // | |
186 // Collation with decomposition off doesn't work for Europe | |
187 // | |
188 void Test4114077(/* char* par */); | |
189 | |
190 // @bug 4124632 | |
191 // | |
192 // Collator.getCollationKey was hanging on certain character sequences | |
193 // | |
194 void Test4124632(/* char* par */); | |
195 | |
196 // @bug 4132736 | |
197 // | |
198 // sort order of french words with multiple accents has errors | |
199 // | |
200 void Test4132736(/* char* par */); | |
201 | |
202 // @bug 4133509 | |
203 // | |
204 // The sorting using java.text.CollationKey is not in the exact order | |
205 // | |
206 void Test4133509(/* char* par */); | |
207 | |
208 // @bug 4139572 | |
209 // | |
210 // getCollationKey throws exception for spanish text | |
211 // Cannot reproduce this bug on 1.2, however it DOES fail on 1.1.6 | |
212 // | |
213 void Test4139572(/* char* par */); | |
214 | |
215 // @bug 4141640 | |
216 // | |
217 // Support for Swedish gone in 1.1.6 (Can't create Swedish collator) | |
218 // | |
219 void Test4141640(/* char* par */); | |
220 | |
221 // @bug 4146160 | |
222 // | |
223 // RuleBasedCollator doesn't use getCollationElementIterator internally | |
224 // | |
225 void Test4146160(/* char* par */); | |
226 | |
227 void Test4179216(); | |
228 | |
229 // Ticket 7189 | |
230 // | |
231 // nextSortKeyPart incorrect for EO_S1 collation | |
232 // | |
233 void TestT7189(); | |
234 | |
235 // Ticket 8624 | |
236 // | |
237 // Tertiary value compression problem with case first option enabled | |
238 // | |
239 void TestCaseFirstCompression(); | |
240 | |
241 void TestTrailingComment(); | |
242 void TestBeforeWithTooStrongAfter(); | |
243 | |
244 private: | |
245 //------------------------------------------------------------------------ | |
246 // Internal utilities | |
247 // | |
248 void compareArray(Collator &c, | |
249 const UChar tests[][CollationRegressionTest::MAX_TOKEN_LEN], | |
250 int32_t testCount); | |
251 | |
252 void assertEqual(CollationElementIterator &i1, CollationElementIterator &i2)
; | |
253 | |
254 | |
255 RuleBasedCollator *en_us; | |
256 | |
257 void caseFirstCompressionSub(Collator *col, UnicodeString opt); | |
258 }; | |
259 | |
260 #endif /* #if !UCONFIG_NO_COLLATION */ | |
261 | |
262 #endif | |
OLD | NEW |