]> git.saurik.com Git - apple/icu.git/blame - icuSources/test/intltest/usettest.h
ICU-66108.tar.gz
[apple/icu.git] / icuSources / test / intltest / usettest.h
CommitLineData
f3c0d7a5
A
1// © 2016 and later: Unicode, Inc. and others.
2// License & terms of use: http://www.unicode.org/copyright.html
b75a7d8f
A
3
4/********************************************************************
5 * COPYRIGHT:
2ca993e8 6 * Copyright (c) 1997-2015, International Business Machines Corporation and
b75a7d8f
A
7 * others. All Rights Reserved.
8 ********************************************************************
9**********************************************************************
10* Date Name Description
11* 10/20/99 alan Creation.
12* 03/22/2000 Madhu Added additional tests
13**********************************************************************
14*/
15
16#ifndef _TESTUNISET
17#define _TESTUNISET
18
19#include "unicode/unistr.h"
20#include "unicode/uniset.h"
46f4442e 21#include "unicode/ucnv_err.h"
b75a7d8f 22#include "intltest.h"
2ca993e8 23#include "cmemory.h"
b75a7d8f 24
46f4442e
A
25class UnicodeSetWithStrings;
26
b75a7d8f
A
27/**
28 * UnicodeSet test
29 */
30class UnicodeSetTest: public IntlTest {
46f4442e
A
31public:
32 UnicodeSetTest();
33 ~UnicodeSetTest();
b75a7d8f 34
b75a7d8f 35private:
46f4442e 36 void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL);
b75a7d8f
A
37
38 void Testj2268();
39
40 /**
41 * Test that toPattern() round trips with syntax characters and
42 * whitespace.
43 */
44 void TestToPattern();
45
46 void TestPatterns(void);
47 void TestCategories(void);
48 void TestAddRemove(void);
49 void TestCloneEqualHash(void);
50
51 /**
52 * Make sure minimal representation is maintained.
53 */
54 void TestMinimalRep(void);
55
56 void TestAPI(void);
57
73c04bcf
A
58 void TestIteration(void);
59
b75a7d8f
A
60 void TestStrings(void);
61
b75a7d8f
A
62 void TestScriptSet(void);
63
64 /**
65 * Test the [:Latin:] syntax.
66 */
67 void TestPropertySet(void);
68
69 void TestClone(void);
70
71 void TestIndexOf(void);
72
73 void TestExhaustive(void);
74
75 void TestCloseOver(void);
76
77 void TestEscapePattern(void);
78
79 void TestInvalidCodePoint(void);
80
374ca955
A
81 void TestSymbolTable(void);
82
83 void TestSurrogate();
84
73c04bcf
A
85 void TestPosixClasses();
86
46f4442e
A
87 void TestFreezable();
88
89 void TestSpan();
90
91 void TestStringSpan();
92
2ca993e8 93 void TestUCAUnsafeBackwards();
0f5d89e8
A
94 void TestIntOverflow();
95 void TestUnusedCcc();
96 void TestDeepPattern();
2ca993e8 97
b75a7d8f
A
98private:
99
100 UBool toPatternAux(UChar32 start, UChar32 end);
101
102 UBool checkPat(const UnicodeString& source,
103 const UnicodeSet& testSet);
104
105 UBool checkPat(const UnicodeString& source, const UnicodeSet& testSet, const UnicodeString& pat);
106
107 void _testComplement(int32_t a, UnicodeSet&, UnicodeSet&);
108
109 void _testAdd(int32_t a, int32_t b, UnicodeSet&, UnicodeSet&, UnicodeSet&);
110
111 void _testRetain(int32_t a, int32_t b, UnicodeSet&, UnicodeSet&, UnicodeSet&);
112
113 void _testRemove(int32_t a, int32_t b, UnicodeSet&, UnicodeSet&, UnicodeSet&);
114
115 void _testXor(int32_t a, int32_t b, UnicodeSet&, UnicodeSet&, UnicodeSet&);
116
117 /**
118 * Check that ranges are monotonically increasing and non-
119 * overlapping.
120 */
121 void checkCanonicalRep(const UnicodeSet& set, const UnicodeString& msg);
122
123 /**
124 * Convert a bitmask to a UnicodeSet.
125 */
126 static UnicodeSet& bitsToSet(int32_t a, UnicodeSet&);
127
128 /**
129 * Convert a UnicodeSet to a bitmask. Only the characters
130 * U+0000 to U+0020 are represented in the bitmask.
131 */
132 static int32_t setToBits(const UnicodeSet& x);
133
134 /**
135 * Return the representation of an inversion list based UnicodeSet
136 * as a pairs list. Ranges are listed in ascending Unicode order.
137 * For example, the set [a-zA-M3] is represented as "33AMaz".
138 */
139 static UnicodeString getPairs(const UnicodeSet& set);
140
141 /**
142 * Basic consistency check for a few items.
143 * That the iterator works, and that we can create a pattern and
144 * get the same thing back
145 */
146 void checkRoundTrip(const UnicodeSet& s);
2ca993e8
A
147
148 void checkSerializeRoundTrip(const UnicodeSet& s, UErrorCode &ec);
b75a7d8f
A
149
150 void copyWithIterator(UnicodeSet& t, const UnicodeSet& s, UBool withRange);
151
152 UBool checkEqual(const UnicodeSet& s, const UnicodeSet& t, const char* message);
153
154 void expectContainment(const UnicodeString& pat,
155 const UnicodeString& charsIn,
156 const UnicodeString& charsOut);
157 void expectContainment(const UnicodeSet& set,
158 const UnicodeString& charsIn,
159 const UnicodeString& charsOut);
160 void expectContainment(const UnicodeSet& set,
161 const UnicodeString& setName,
162 const UnicodeString& charsIn,
163 const UnicodeString& charsOut);
164 void expectPattern(UnicodeSet& set,
165 const UnicodeString& pattern,
166 const UnicodeString& expectedPairs);
167 void expectPairs(const UnicodeSet& set,
168 const UnicodeString& expectedPairs);
169 void expectToPattern(const UnicodeSet& set,
170 const UnicodeString& expPat,
171 const char** expStrings);
172 void expectRange(const UnicodeString& label,
173 const UnicodeSet& set,
174 UChar32 start, UChar32 end);
175 void doAssert(UBool, const char*);
46f4442e
A
176
177 void testSpan(const UnicodeSetWithStrings *sets[4], const void *s, int32_t length, UBool isUTF16,
178 uint32_t whichSpans,
179 int32_t expectLimits[], int32_t &expectCount,
180 const char *testName, int32_t index);
181 void testSpan(const UnicodeSetWithStrings *sets[4], const void *s, int32_t length, UBool isUTF16,
182 uint32_t whichSpans,
183 const char *testName, int32_t index);
184 void testSpanBothUTFs(const UnicodeSetWithStrings *sets[4],
185 const UChar *s16, int32_t length16,
186 uint32_t whichSpans,
187 const char *testName, int32_t index);
188 void testSpanContents(const UnicodeSetWithStrings *sets[4], uint32_t whichSpans, const char *testName);
189 void testSpanUTF16String(const UnicodeSetWithStrings *sets[4], uint32_t whichSpans, const char *testName);
190 void testSpanUTF8String(const UnicodeSetWithStrings *sets[4], uint32_t whichSpans, const char *testName);
191
192 UConverter *openUTF8Converter();
193
194 UConverter *utf8Cnv;
195
2ca993e8
A
196 MaybeStackArray<uint16_t, 16> serializeBuffer;
197
b75a7d8f
A
198public:
199 static UnicodeString escape(const UnicodeString& s);
200};
201
202#endif