1 // Copyright (C) 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 3 /* 4 ********************************************************************** 5 * Copyright (C) 1999-2003, International Business Machines 6 * Corporation and others. All Rights Reserved. 7 ********************************************************************** 8 * Date Name Description 9 * 12/09/99 aliu Ported from Java. 10 ********************************************************************** 11 */ 12 13 #ifndef COLLATIONTHAITEST_H 14 #define COLLATIONTHAITEST_H 15 16 #include "unicode/utypes.h" 17 18 #if !UCONFIG_NO_COLLATION 19 20 #include "tscoll.h" 21 22 class CollationThaiTest : public IntlTestCollator { 23 Collator* coll; // Thai collator 24 25 public: 26 27 CollationThaiTest(); 28 virtual ~CollationThaiTest(); 29 30 void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); 31 32 private: 33 34 /** 35 * Read the external dictionary file, which is already in proper 36 * sorted order, and confirm that the collator compares each line as 37 * preceding the following line. 38 */ 39 void TestDictionary(void); 40 41 /** 42 * Odd corner conditions taken from "How to Sort Thai Without Rewriting Sort", 43 * by Doug Cooper, http://seasrc.th.net/paper/thaisort.zip 44 */ 45 void TestCornerCases(void); 46 47 /** 48 * Read the external names list, and confirms that the collator 49 * gets the same results when comparing lines one to another 50 * using regular and iterative comparison. 51 */ 52 void TestNamesList(void); 53 54 /** 55 * test that invalid Thai sorts properly 56 */ 57 void TestInvalidThai(void); 58 59 /** 60 * test that reording is done properly 61 */ 62 void TestReordering(void); 63 64 private: 65 66 void compareArray(Collator& c, const char* tests[], 67 int32_t testsLength); 68 69 int8_t sign(int32_t i); 70 71 /** 72 * Set a UnicodeString corresponding to the given string. Use 73 * UnicodeString and the default converter, unless we see the sequence 74 * "\\u", in which case we interpret the subsequent escape. 75 */ 76 UnicodeString& parseChars(UnicodeString& result, 77 const char* chars); 78 }; 79 80 #endif /* #if !UCONFIG_NO_COLLATION */ 81 82 #endif 83