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