| |
| /******************************************************************** |
| * COPYRIGHT: |
| * Copyright (c) 1997-2015, International Business Machines Corporation and |
| * others. All Rights Reserved. |
| ******************************************************************** |
| ********************************************************************** |
| * Date Name Description |
| * 10/20/99 alan Creation. |
| * 03/22/2000 Madhu Added additional tests |
| ********************************************************************** |
| */ |
| |
| #ifndef _TESTUNISET |
| #define _TESTUNISET |
| |
| #include "unicode/unistr.h" |
| #include "unicode/uniset.h" |
| #include "unicode/ucnv_err.h" |
| #include "intltest.h" |
| #include "cmemory.h" |
| |
| class UnicodeSetWithStrings; |
| |
| /** |
| * UnicodeSet test |
| */ |
| class UnicodeSetTest: public IntlTest { |
| public: |
| UnicodeSetTest(); |
| ~UnicodeSetTest(); |
| |
| private: |
| void runIndexedTest(int32_t index, UBool exec, const char* &name, char* par=NULL); |
| |
| void Testj2268(); |
| |
| /** |
| * Test that toPattern() round trips with syntax characters and |
| * whitespace. |
| */ |
| void TestToPattern(); |
| |
| void TestPatterns(void); |
| void TestCategories(void); |
| void TestAddRemove(void); |
| void TestCloneEqualHash(void); |
| |
| /** |
| * Make sure minimal representation is maintained. |
| */ |
| void TestMinimalRep(void); |
| |
| void TestAPI(void); |
| |
| void TestIteration(void); |
| |
| void TestStrings(void); |
| |
| void TestScriptSet(void); |
| |
| /** |
| * Test the [:Latin:] syntax. |
| */ |
| void TestPropertySet(void); |
| |
| void TestClone(void); |
| |
| void TestIndexOf(void); |
| |
| void TestExhaustive(void); |
| |
| void TestCloseOver(void); |
| |
| void TestEscapePattern(void); |
| |
| void TestInvalidCodePoint(void); |
| |
| void TestSymbolTable(void); |
| |
| void TestSurrogate(); |
| |
| void TestPosixClasses(); |
| |
| void TestFreezable(); |
| |
| void TestSpan(); |
| |
| void TestStringSpan(); |
| |
| void TestUCAUnsafeBackwards(); |
| |
| private: |
| |
| UBool toPatternAux(UChar32 start, UChar32 end); |
| |
| UBool checkPat(const UnicodeString& source, |
| const UnicodeSet& testSet); |
| |
| UBool checkPat(const UnicodeString& source, const UnicodeSet& testSet, const UnicodeString& pat); |
| |
| void _testComplement(int32_t a, UnicodeSet&, UnicodeSet&); |
| |
| void _testAdd(int32_t a, int32_t b, UnicodeSet&, UnicodeSet&, UnicodeSet&); |
| |
| void _testRetain(int32_t a, int32_t b, UnicodeSet&, UnicodeSet&, UnicodeSet&); |
| |
| void _testRemove(int32_t a, int32_t b, UnicodeSet&, UnicodeSet&, UnicodeSet&); |
| |
| void _testXor(int32_t a, int32_t b, UnicodeSet&, UnicodeSet&, UnicodeSet&); |
| |
| /** |
| * Check that ranges are monotonically increasing and non- |
| * overlapping. |
| */ |
| void checkCanonicalRep(const UnicodeSet& set, const UnicodeString& msg); |
| |
| /** |
| * Convert a bitmask to a UnicodeSet. |
| */ |
| static UnicodeSet& bitsToSet(int32_t a, UnicodeSet&); |
| |
| /** |
| * Convert a UnicodeSet to a bitmask. Only the characters |
| * U+0000 to U+0020 are represented in the bitmask. |
| */ |
| static int32_t setToBits(const UnicodeSet& x); |
| |
| /** |
| * Return the representation of an inversion list based UnicodeSet |
| * as a pairs list. Ranges are listed in ascending Unicode order. |
| * For example, the set [a-zA-M3] is represented as "33AMaz". |
| */ |
| static UnicodeString getPairs(const UnicodeSet& set); |
| |
| /** |
| * Basic consistency check for a few items. |
| * That the iterator works, and that we can create a pattern and |
| * get the same thing back |
| */ |
| void checkRoundTrip(const UnicodeSet& s); |
| |
| void checkSerializeRoundTrip(const UnicodeSet& s, UErrorCode &ec); |
| |
| void copyWithIterator(UnicodeSet& t, const UnicodeSet& s, UBool withRange); |
| |
| UBool checkEqual(const UnicodeSet& s, const UnicodeSet& t, const char* message); |
| |
| void expectContainment(const UnicodeString& pat, |
| const UnicodeString& charsIn, |
| const UnicodeString& charsOut); |
| void expectContainment(const UnicodeSet& set, |
| const UnicodeString& charsIn, |
| const UnicodeString& charsOut); |
| void expectContainment(const UnicodeSet& set, |
| const UnicodeString& setName, |
| const UnicodeString& charsIn, |
| const UnicodeString& charsOut); |
| void expectPattern(UnicodeSet& set, |
| const UnicodeString& pattern, |
| const UnicodeString& expectedPairs); |
| void expectPairs(const UnicodeSet& set, |
| const UnicodeString& expectedPairs); |
| void expectToPattern(const UnicodeSet& set, |
| const UnicodeString& expPat, |
| const char** expStrings); |
| void expectRange(const UnicodeString& label, |
| const UnicodeSet& set, |
| UChar32 start, UChar32 end); |
| void doAssert(UBool, const char*); |
| |
| void testSpan(const UnicodeSetWithStrings *sets[4], const void *s, int32_t length, UBool isUTF16, |
| uint32_t whichSpans, |
| int32_t expectLimits[], int32_t &expectCount, |
| const char *testName, int32_t index); |
| void testSpan(const UnicodeSetWithStrings *sets[4], const void *s, int32_t length, UBool isUTF16, |
| uint32_t whichSpans, |
| const char *testName, int32_t index); |
| void testSpanBothUTFs(const UnicodeSetWithStrings *sets[4], |
| const UChar *s16, int32_t length16, |
| uint32_t whichSpans, |
| const char *testName, int32_t index); |
| void testSpanContents(const UnicodeSetWithStrings *sets[4], uint32_t whichSpans, const char *testName); |
| void testSpanUTF16String(const UnicodeSetWithStrings *sets[4], uint32_t whichSpans, const char *testName); |
| void testSpanUTF8String(const UnicodeSetWithStrings *sets[4], uint32_t whichSpans, const char *testName); |
| |
| UConverter *openUTF8Converter(); |
| |
| UConverter *utf8Cnv; |
| |
| MaybeStackArray<uint16_t, 16> serializeBuffer; |
| |
| public: |
| static UnicodeString escape(const UnicodeString& s); |
| }; |
| |
| #endif |