mirror of
https://github.com/unicode-org/icu.git
synced 2025-04-21 12:40:02 +00:00
ICU-199 add category tests for new UnicodeSet pattern parser
X-SVN-Rev: 548
This commit is contained in:
parent
13955b6ce2
commit
f84644f895
2 changed files with 53 additions and 1 deletions
|
@ -27,7 +27,7 @@ UnicodeSetTest::runIndexedTest(int32_t index, bool_t exec,
|
|||
switch (index) {
|
||||
CASE(0,TestPatterns)
|
||||
CASE(1,TestAddRemove)
|
||||
|
||||
CASE(2,TestCategories)
|
||||
default: name = ""; break;
|
||||
}
|
||||
}
|
||||
|
@ -49,6 +49,18 @@ UnicodeSetTest::TestPatterns(void) {
|
|||
expectPairs(set, exp);
|
||||
}
|
||||
|
||||
void
|
||||
UnicodeSetTest::TestCategories(void) {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
const char* pat = " [:Lu:] "; // Whitespace ok outside [:..:]
|
||||
UnicodeSet set(pat, status);
|
||||
if (U_FAILURE(status)) {
|
||||
errln((UnicodeString)"Fail: Can't construct set with " + pat);
|
||||
} else {
|
||||
expectContainment(set, pat, "ABC", "abc");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
UnicodeSetTest::TestAddRemove(void) {
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
|
@ -91,6 +103,41 @@ UnicodeSetTest::TestAddRemove(void) {
|
|||
expectPairs(set, "aacehort");
|
||||
}
|
||||
|
||||
void
|
||||
UnicodeSetTest::expectContainment(const UnicodeSet& set,
|
||||
const UnicodeString& setName,
|
||||
const UnicodeString& charsIn,
|
||||
const UnicodeString& charsOut) {
|
||||
UnicodeString bad;
|
||||
int32_t i;
|
||||
for (i=0; i<charsIn.length(); ++i) {
|
||||
UChar c = charsIn.charAt(i);
|
||||
if (!set.contains(c)) {
|
||||
bad.append(c);
|
||||
}
|
||||
}
|
||||
if (bad.length() > 0) {
|
||||
logln((UnicodeString)"Fail: set " + setName + " does not contain " + bad +
|
||||
", expected containment of " + charsIn);
|
||||
} else {
|
||||
logln((UnicodeString)"Ok: set " + setName + " contains " + charsIn);
|
||||
}
|
||||
|
||||
bad.truncate(0);
|
||||
for (i=0; i<charsOut.length(); ++i) {
|
||||
UChar c = charsOut.charAt(i);
|
||||
if (set.contains(c)) {
|
||||
bad.append(c);
|
||||
}
|
||||
}
|
||||
if (bad.length() > 0) {
|
||||
logln((UnicodeString)"Fail: set " + setName + " contains " + bad +
|
||||
", expected non-containment of " + charsOut);
|
||||
} else {
|
||||
logln((UnicodeString)"Ok: set " + setName + " does not contain " + charsOut);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
UnicodeSetTest::expectPattern(UnicodeSet& set,
|
||||
const UnicodeString& pattern,
|
||||
|
|
|
@ -26,8 +26,13 @@ class UnicodeSetTest: public IntlTest {
|
|||
private:
|
||||
|
||||
void TestPatterns(void);
|
||||
void TestCategories(void);
|
||||
void TestAddRemove(void);
|
||||
|
||||
void expectContainment(const UnicodeSet& set,
|
||||
const UnicodeString& setName,
|
||||
const UnicodeString& charsIn,
|
||||
const UnicodeString& charsOut);
|
||||
void expectPattern(UnicodeSet& set,
|
||||
const UnicodeString& pattern,
|
||||
const UnicodeString& expectedPairs);
|
||||
|
|
Loading…
Add table
Reference in a new issue