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