• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /********************************************************************
2  * COPYRIGHT:
3  * Copyright (c) 1997-2001, International Business Machines Corporation and
4  * others. All Rights Reserved.
5  ********************************************************************/
6 
7 /**
8  * Collation Iterator tests.
9  * (Let me reiterate my position...)
10  */
11 
12 #ifndef _ITERCOLL
13 #define _ITERCOLL
14 
15 #include "unicode/utypes.h"
16 
17 #if !UCONFIG_NO_COLLATION
18 
19 #include "unicode/tblcoll.h"
20 #include "unicode/coleitr.h"
21 #include "tscoll.h"
22 
23 class CollationIteratorTest: public IntlTestCollator
24 {
25 public:
26 
27     // If this is too small for the test data, just increase it.
28     // Just don't make it too large, otherwise the executable will get too big
29     enum EToken_Len { MAX_TOKEN_LEN = 16 };
30 
31     CollationIteratorTest();
32     virtual ~CollationIteratorTest();
33 
34     void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par = NULL);
35 
36     /**
37     * Test that results from CollationElementIterator.next is equivalent to
38     * the reversed results from CollationElementIterator.previous, for the set
39     * of BMP characters.
40     */
41     void TestUnicodeChar();
42 
43     /**
44      * Test for CollationElementIterator.previous()
45      *
46      * @bug 4108758 - Make sure it works with contracting characters
47      *
48      */
49     void TestPrevious(/* char* par */);
50 
51     /**
52      * Test for getOffset() and setOffset()
53      */
54     void TestOffset(/* char* par */);
55 
56     /**
57      * Test for setText()
58      */
59     void TestSetText(/* char* par */);
60 
61     /** @bug 4108762
62      * Test for getMaxExpansion()
63      */
64     void TestMaxExpansion(/* char* par */);
65 
66     /*
67      * @bug 4157299
68      */
69     void TestClearBuffers(/* char* par */);
70 
71     /**
72      * Testing the assignment operator
73      */
74     void TestAssignment();
75 
76     /**
77      * Testing the constructors
78      */
79     void TestConstructors();
80 
81     /**
82     * Testing the strength order functionality
83     */
84     void TestStrengthOrder();
85 
86     //------------------------------------------------------------------------
87     // Internal utilities
88     //
89 
90 private:
91 
92     struct ExpansionRecord
93     {
94         UChar character;
95         int32_t count;
96     };
97 
98     /**
99      * Verify that getMaxExpansion works on a given set of collation rules
100      */
101     void verifyExpansion(UnicodeString rules, ExpansionRecord tests[], int32_t testCount);
102 
103     /**
104      * Return a string containing all of the collation orders
105      * returned by calls to next on the specified iterator
106      */
107     UnicodeString &orderString(CollationElementIterator &iter, UnicodeString &target);
108 
109     void assertEqual(CollationElementIterator &i1, CollationElementIterator &i2);
110 
111     RuleBasedCollator *en_us;
112     const UnicodeString test1;
113     const UnicodeString test2;
114 
115 };
116 
117 #endif /* #if !UCONFIG_NO_COLLATION */
118 
119 #endif
120