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