| 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 |