]>
git.saurik.com Git - apple/icu.git/blob - icuSources/test/intltest/usettest.h
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
4 /********************************************************************
6 * Copyright (c) 1997-2015, International Business Machines Corporation and
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 **********************************************************************
19 #include "unicode/unistr.h"
20 #include "unicode/uniset.h"
21 #include "unicode/ucnv_err.h"
25 class UnicodeSetWithStrings
;
30 class UnicodeSetTest
: public IntlTest
{
36 void runIndexedTest(int32_t index
, UBool exec
, const char* &name
, char* par
=NULL
);
41 * Test that toPattern() round trips with syntax characters and
46 void TestPatterns(void);
47 void TestCategories(void);
48 void TestAddRemove(void);
49 void TestCloneEqualHash(void);
52 * Make sure minimal representation is maintained.
54 void TestMinimalRep(void);
58 void TestIteration(void);
60 void TestStrings(void);
62 void TestScriptSet(void);
65 * Test the [:Latin:] syntax.
67 void TestPropertySet(void);
71 void TestIndexOf(void);
73 void TestExhaustive(void);
75 void TestCloseOver(void);
77 void TestEscapePattern(void);
79 void TestInvalidCodePoint(void);
81 void TestSymbolTable(void);
85 void TestPosixClasses();
91 void TestStringSpan();
93 void TestUCAUnsafeBackwards();
97 UBool
toPatternAux(UChar32 start
, UChar32 end
);
99 UBool
checkPat(const UnicodeString
& source
,
100 const UnicodeSet
& testSet
);
102 UBool
checkPat(const UnicodeString
& source
, const UnicodeSet
& testSet
, const UnicodeString
& pat
);
104 void _testComplement(int32_t a
, UnicodeSet
&, UnicodeSet
&);
106 void _testAdd(int32_t a
, int32_t b
, UnicodeSet
&, UnicodeSet
&, UnicodeSet
&);
108 void _testRetain(int32_t a
, int32_t b
, UnicodeSet
&, UnicodeSet
&, UnicodeSet
&);
110 void _testRemove(int32_t a
, int32_t b
, UnicodeSet
&, UnicodeSet
&, UnicodeSet
&);
112 void _testXor(int32_t a
, int32_t b
, UnicodeSet
&, UnicodeSet
&, UnicodeSet
&);
115 * Check that ranges are monotonically increasing and non-
118 void checkCanonicalRep(const UnicodeSet
& set
, const UnicodeString
& msg
);
121 * Convert a bitmask to a UnicodeSet.
123 static UnicodeSet
& bitsToSet(int32_t a
, UnicodeSet
&);
126 * Convert a UnicodeSet to a bitmask. Only the characters
127 * U+0000 to U+0020 are represented in the bitmask.
129 static int32_t setToBits(const UnicodeSet
& x
);
132 * Return the representation of an inversion list based UnicodeSet
133 * as a pairs list. Ranges are listed in ascending Unicode order.
134 * For example, the set [a-zA-M3] is represented as "33AMaz".
136 static UnicodeString
getPairs(const UnicodeSet
& set
);
139 * Basic consistency check for a few items.
140 * That the iterator works, and that we can create a pattern and
141 * get the same thing back
143 void checkRoundTrip(const UnicodeSet
& s
);
145 void checkSerializeRoundTrip(const UnicodeSet
& s
, UErrorCode
&ec
);
147 void copyWithIterator(UnicodeSet
& t
, const UnicodeSet
& s
, UBool withRange
);
149 UBool
checkEqual(const UnicodeSet
& s
, const UnicodeSet
& t
, const char* message
);
151 void expectContainment(const UnicodeString
& pat
,
152 const UnicodeString
& charsIn
,
153 const UnicodeString
& charsOut
);
154 void expectContainment(const UnicodeSet
& set
,
155 const UnicodeString
& charsIn
,
156 const UnicodeString
& charsOut
);
157 void expectContainment(const UnicodeSet
& set
,
158 const UnicodeString
& setName
,
159 const UnicodeString
& charsIn
,
160 const UnicodeString
& charsOut
);
161 void expectPattern(UnicodeSet
& set
,
162 const UnicodeString
& pattern
,
163 const UnicodeString
& expectedPairs
);
164 void expectPairs(const UnicodeSet
& set
,
165 const UnicodeString
& expectedPairs
);
166 void expectToPattern(const UnicodeSet
& set
,
167 const UnicodeString
& expPat
,
168 const char** expStrings
);
169 void expectRange(const UnicodeString
& label
,
170 const UnicodeSet
& set
,
171 UChar32 start
, UChar32 end
);
172 void doAssert(UBool
, const char*);
174 void testSpan(const UnicodeSetWithStrings
*sets
[4], const void *s
, int32_t length
, UBool isUTF16
,
176 int32_t expectLimits
[], int32_t &expectCount
,
177 const char *testName
, int32_t index
);
178 void testSpan(const UnicodeSetWithStrings
*sets
[4], const void *s
, int32_t length
, UBool isUTF16
,
180 const char *testName
, int32_t index
);
181 void testSpanBothUTFs(const UnicodeSetWithStrings
*sets
[4],
182 const UChar
*s16
, int32_t length16
,
184 const char *testName
, int32_t index
);
185 void testSpanContents(const UnicodeSetWithStrings
*sets
[4], uint32_t whichSpans
, const char *testName
);
186 void testSpanUTF16String(const UnicodeSetWithStrings
*sets
[4], uint32_t whichSpans
, const char *testName
);
187 void testSpanUTF8String(const UnicodeSetWithStrings
*sets
[4], uint32_t whichSpans
, const char *testName
);
189 UConverter
*openUTF8Converter();
193 MaybeStackArray
<uint16_t, 16> serializeBuffer
;
196 static UnicodeString
escape(const UnicodeString
& s
);