]> git.saurik.com Git - apple/icu.git/blob - icuSources/test/intltest/thcoll.h
ICU-64252.0.1.tar.gz
[apple/icu.git] / icuSources / test / intltest / thcoll.h
1 // © 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