ICU-432 fixes for running on a japanese machine

X-SVN-Rev: 2096
This commit is contained in:
Vladimir Weinstein 2000-08-02 19:06:18 +00:00
parent 168fff1af1
commit 0413fcf2dc
11 changed files with 142 additions and 134 deletions

View File

@ -330,7 +330,8 @@ void TestAPI(){
directory= ctest_getTestDirectory();
uprv_strcpy(testdatapath, directory);
uprv_strcat(testdatapath, "testdata");
u_uastrcpy(utestdatapath, testdatapath);
u_charsToUChars(testdatapath, utestdatapath, strlen(testdatapath)+1);
/*u_uastrcpy(utestdatapath, testdatapath);*/
/*Test ures_openU */
log_verbose("Testing ures_openU()......\n");

View File

@ -228,6 +228,8 @@ void TestPUtilAPI(){
udataDir=(UChar*)malloc(sizeof(UChar) * (strlen(dataDirectory) + 1));
u_charsToUChars(dataDirectory, udataDir, (strlen(dataDirectory)+1));
u_uastrcpy(temp, dataDirectory);
/* This cannot really work on a japanese system. u_uastrcpy will have different results than */
/* u_charsToUChars when there is a backslash in the string! */
if(u_strcmp(temp, udataDir) != 0){
log_err("ERROR: u_charsToUChars failed. Expected %s, Got %s\n", austrdup(temp), austrdup(udataDir));
}

View File

@ -146,7 +146,8 @@ void TestFilter() {
}
for (i=0; i<DATA_length; i+=3) {
u_uastrcpy(filt, DATA[i]);
/*u_uastrcpy(filt, DATA[i]);*/
u_charsToUChars(DATA[i], filt, uprv_strlen(DATA[i])+1);
utrans_setFilter(hex, filt, -1, &status);
if (U_FAILURE(status)) {
@ -155,7 +156,8 @@ void TestFilter() {
goto exit;
}
u_uastrcpy(buf, DATA[i+1]);
/*u_uastrcpy(buf, DATA[i+1]);*/
u_charsToUChars(DATA[i+1], buf, uprv_strlen(DATA[i+1])+1);
limit = 5;
utrans_transUChars(hex, buf, NULL, 128, 0, &limit, &status);
@ -165,8 +167,10 @@ void TestFilter() {
goto exit;
}
u_austrcpy(cbuf, buf);
u_uastrcpy(exp, DATA[i+2]);
/*u_austrcpy(cbuf, buf);*/
u_UCharsToChars(buf, cbuf, u_strlen(buf)+1);
/*u_uastrcpy(exp, DATA[i+2]);*/
u_charsToUChars(DATA[i+2], exp, uprv_strlen(DATA[i+2])+1);
if (0 == u_strcmp(buf, exp)) {
log_verbose("Ok: %s | %s -> %s\n", DATA[i+1], DATA[i], cbuf);
} else {

View File

@ -317,7 +317,7 @@ void CompoundTransliteratorTest::TestTransliterate(){
delete ct1;
UnicodeString Data[]={
//ID, input string, transliterated string
"Unicode-Hex;Hex-Unicode;Unicode-Hex", "hello", "\\u0068\\u0065\\u006C\\u006C\\u006F",
"Unicode-Hex;Hex-Unicode;Unicode-Hex", "hello", UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F", ""),
"Unicode-Hex;Hex-Unicode", "hello! How are you?", "hello! How are you?",
"Devanagari-Latin;Latin-Devanagari", CharsToUnicodeString("\\u092D\\u0948'\\u0930'\\u0935"), CharsToUnicodeString("\\u092D\\u0948\\u0930\\u0935"), // quotes lost
"Latin-Cyrillic;Cyrillic-Latin", "a'b'k'd'e'f'g'h'i'j'Shch'shch'zh'h", "abkdefghijShchshchzhh",

View File

@ -206,7 +206,7 @@ void HexToUniTransliteratorTest::TestPattern(){
}
UnicodeString defaultpattern=transdefault->toPattern();
UnicodeString pattern1("\\\\U+0000");
UnicodeString pattern1("\\\\U+0000", "");
HexToUnicodeTransliterator *trans1=new HexToUnicodeTransliterator(pattern1, NULL, status);
if(U_FAILURE(status) ){
errln("HexToUnicodeTransliterator construction failed with pattern =" + pattern1);
@ -215,21 +215,21 @@ void HexToUniTransliteratorTest::TestPattern(){
}
/*test toPattern() */
if(transdefault->toPattern() == trans1->toPattern() ||
transdefault->toPattern() != UnicodeString("\\\\u0000;\\\\U0000;u+0000;U+0000") ||
transdefault->toPattern() != UnicodeString("\\\\u0000;\\\\U0000;u+0000;U+0000", "") ||
trans1->toPattern() != pattern1 ){
errln("Error: toPattern() failed "+ transdefault->toPattern());
}
/*apply patterns for transdefault*/
UnicodeString str("abKf");
expectPattern(*transdefault, pattern1, (UnicodeString)"\\U+0061\\U+0062\\U+004B\\U+0066", str);
expectPattern(*transdefault, (UnicodeString)"\\U##00,", (UnicodeString)"U61,U62,U4B,U66,", str);
expectPattern(*transdefault, defaultpattern, (UnicodeString)"\\u0061\\u0062\\u004B\\u0066", str);
expectPattern(*trans1, (UnicodeString)"\\uni0000", (UnicodeString)"uni0061uni0062uni004Buni0066", str);
expectPattern(*trans1, (UnicodeString)"\\\\S-0000-E", (UnicodeString)"\\S-0061-E\\S-0062-E\\S-004B-E\\S-0066-E", str);
expectPattern(*trans1, (UnicodeString)"\\u##0000", (UnicodeString)"\\u##0061\\u##0062", "FAIL");
expectPattern(*trans1, (UnicodeString)"\\*0000", (UnicodeString)"*0061*0062*004B*0066", str);
expectPattern(*trans1, (UnicodeString)"\\u####", (UnicodeString)"\\u##0061\\u##0062", "FAIL");
expectPattern(*transdefault, pattern1, UnicodeString("\\U+0061\\U+0062\\U+004B\\U+0066", ""), str);
expectPattern(*transdefault, UnicodeString("\\U##00,", ""), UnicodeString("U61,U62,U4B,U66,", ""), str);
expectPattern(*transdefault, defaultpattern, UnicodeString("\\u0061\\u0062\\u004B\\u0066", ""), str);
expectPattern(*trans1, UnicodeString("\\uni0000", ""), UnicodeString("uni0061uni0062uni004Buni0066", ""), str);
expectPattern(*trans1, UnicodeString("\\\\S-0000-E", ""), UnicodeString("\\S-0061-E\\S-0062-E\\S-004B-E\\S-0066-E", ""), str);
expectPattern(*trans1, UnicodeString("\\u##0000", ""), UnicodeString("\\u##0061\\u##0062", ""), "FAIL");
expectPattern(*trans1, UnicodeString("\\*0000", ""), UnicodeString("*0061*0062*004B*0066", ""), str);
expectPattern(*trans1, UnicodeString("\\u####", ""), UnicodeString("\\u##0061\\u##0062", ""), "FAIL");
delete trans1;
delete transdefault;
@ -238,20 +238,20 @@ void HexToUniTransliteratorTest::TestPattern(){
void HexToUniTransliteratorTest::TestSimpleTransliterate(){
logln("Testing the handleTransliterate() API of HexToUnicodeTransliterator");
UErrorCode status=U_ZERO_ERROR;
UnicodeString pattern1("\\\\U+0000");
UnicodeString pattern1("\\\\U+0000", "");
HexToUnicodeTransliterator *trans1=new HexToUnicodeTransliterator(pattern1, NULL, status);
if(U_FAILURE(status)){
errln("HexToUnicodeTransliterator construction failed with pattern =" + pattern1 + "Error: " + (UnicodeString)u_errorName(status));
status=U_ZERO_ERROR;
return;
}
UnicodeString source("He\\U+006C\\U+006C\\U+006F");
UnicodeString source("He\\U+006C\\U+006C\\U+006F", "");
UnicodeString rsource(source);
UTransPosition index={1, source.length(),2,source.length()};
UnicodeString expected("Hello");
trans1->handleTransliterate(rsource, index, FALSE);
expectAux(trans1->getID() + ":handleTransliterator ", source + "-->" + rsource, rsource==expected, expected);
expect(*trans1, "", (UnicodeString)"\\U+0048\\U+0065\\U+006C\\U+006C\\U+006F", expected);
expect(*trans1, "", UnicodeString("\\U+0048\\U+0065\\U+006C\\U+006C\\U+006F", ""), expected);
delete trans1;
HexToUnicodeTransliterator *trans2=new HexToUnicodeTransliterator(new TestHexFilter);
@ -264,12 +264,12 @@ void HexToUniTransliteratorTest::TestTransliterate(){
UErrorCode status=U_ZERO_ERROR;
UnicodeString Data[]={
//pattern, source, index.contextStart, index.contextLimit, index.start, expectedResult,
(UnicodeString)"U+##00", (UnicodeString)"abU+63", "1", "7", "2", (UnicodeString)"abc",
(UnicodeString)"\\\\u0000", (UnicodeString)"a\\u0062c", "1", "7", "1", (UnicodeString)"abc",
(UnicodeString)"Uni0000", (UnicodeString)"abUni0063", "1", "9", "2", (UnicodeString)"abc",
(UnicodeString)"U[0000]", (UnicodeString)"heU[006C]U[006C]o", "0", "16", "2", (UnicodeString)"hello",
(UnicodeString)"prefix-0000-suffix", (UnicodeString)"aprefix-0062-suffixprefix-0063-suffix", "1", "39", "1", (UnicodeString)"abc",
(UnicodeString)"*##00*", (UnicodeString)"hell*6F**74**68**65*re", "1", "20", "4", (UnicodeString)"hellothere",
UnicodeString("U+##00", ""), UnicodeString("abU+63", ""), "1", "7", "2", UnicodeString("abc", ""),
UnicodeString("\\\\u0000", ""), UnicodeString("a\\u0062c", ""), "1", "7", "1", UnicodeString("abc", ""),
UnicodeString("Uni0000", ""), UnicodeString("abUni0063", ""), "1", "9", "2", UnicodeString("abc", ""),
UnicodeString("U[0000]", ""), UnicodeString("heU[006C]U[006C]o", ""), "0", "16", "2", UnicodeString("hello", ""),
UnicodeString("prefix-0000-suffix", ""), UnicodeString("aprefix-0062-suffixprefix-0063-suffix", ""), "1", "39", "1", UnicodeString("abc", ""),
UnicodeString("*##00*", ""), UnicodeString("hell*6F**74**68**65*re", ""), "1", "20", "4", UnicodeString("hellothere", ""),
};
int i;

View File

@ -221,7 +221,7 @@ void TransliteratorAPITest::TestGetDisplayName() {
}
t->getDisplayName(t->getID(), name);
message="Display name for ID:" + t->getID();
doTest(message, name, dispNames[i+1]);
// doTest(message, name, dispNames[i+1]); //!!! This will obviously fail for any locale other than english and its children!!!
name="";
t->getDisplayName(t->getID(), Locale::US, name);
message.remove();
@ -243,9 +243,9 @@ void TransliteratorAPITest::TestTransliterate1(){
UnicodeString Data[]={
//ID, input string, transliterated string
"Unicode-Hex", "hello", "\\u0068\\u0065\\u006C\\u006C\\u006F" ,
"Hex-Unicode", "\\u0068\\u0065\\u006C\\u006C\\u006F", "hello" ,
"Latin-Devanagari", "bhaarata", CharsToUnicodeString("\\u092D\\u093E\\u0930\\u0924") ,
"Unicode-Hex", "hello", UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F", "") ,
"Hex-Unicode", UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F", ""), "hello" ,
"Latin-Devanagari", "bhaarata", CharsToUnicodeString("\\u092D\\u093E\\u0930\\u0924") ,
"Devanagari-Latin", CharsToUnicodeString("\\u092D\\u093E\\u0930\\u0924"), "bhaarata" ,
// "Contracted-Expanded", CharsToUnicodeString("\\u00C0\\u00C1\\u0042"), CharsToUnicodeString("\\u0041\\u0300\\u0041\\u0301\\u0042") ,
// "Expanded-Contracted", CharsToUnicodeString("\\u0041\\u0300\\u0041\\u0301\\u0042"), CharsToUnicodeString("\\u00C0\\u00C1\\u0042") ,
@ -289,8 +289,8 @@ void TransliteratorAPITest::TestTransliterate2(){
//testing tranliterate(String text, int start, int limit, StringBuffer result)
UnicodeString Data2[]={
//ID, input string, start, limit, transliterated string
"Unicode-Hex", "hello! How are you?", "0", "5", "\\u0068\\u0065\\u006C\\u006C\\u006F", "\\u0068\\u0065\\u006C\\u006C\\u006F! How are you?" ,
"Unicode-Hex", "hello! How are you?", "7", "12", "\\u0048\\u006F\\u0077\\u0020\\u0061", "hello! \\u0048\\u006F\\u0077\\u0020\\u0061re you?",
"Unicode-Hex", "hello! How are you?", "0", "5", UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F", ""), UnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F! How are you?", "") ,
"Unicode-Hex", "hello! How are you?", "7", "12", UnicodeString("\\u0048\\u006F\\u0077\\u0020\\u0061", ""), UnicodeString("hello! \\u0048\\u006F\\u0077\\u0020\\u0061re you?", ""),
"Hex-Unicode", CharsToUnicodeString("\\u0068\\u0065\\u006C\\u006C\\u006F\\u0021\\u0020"), "0", "5", "hello", "hello! " ,
// "Contracted-Expanded", CharsToUnicodeString("\\u00C0\\u00C1\\u0042"), "1", "2", CharsToUnicodeString("\\u0041\\u0301"), CharsToUnicodeString("\\u00C0\\u0041\\u0301\\u0042") ,
"Devanagari-Latin", CharsToUnicodeString("\\u092D\\u093E\\u0930\\u0924"), "0", "1", "bha", CharsToUnicodeString("bha\\u093E\\u0930\\u0924") ,
@ -338,9 +338,9 @@ void TransliteratorAPITest::TestTransliterate3(){
UnicodeString rs="This is the replaceable String";
UnicodeString Data[] = {
"0", "0", "This is the replaceable String",
"2", "3", "Th\\u0069s is the replaceable String",
"21", "23", "Th\\u0069s is the repl\\u0061\\u0063eable String",
"14", "17", "Th\\u0069s is t\\u0068\\u0065\\u0020repl\\u0061\\u0063eable String",
"2", "3", UnicodeString("Th\\u0069s is the replaceable String", ""),
"21", "23", UnicodeString("Th\\u0069s is the repl\\u0061\\u0063eable String", ""),
"14", "17", UnicodeString("Th\\u0069s is t\\u0068\\u0065\\u0020repl\\u0061\\u0063eable String", ""),
};
int start, limit;
@ -366,7 +366,7 @@ void TransliteratorAPITest::TestSimpleKeyboardTransliterator(){
UTransPosition index={19,20,20,20};
UnicodeString rs= "Transliterate this-''";
UnicodeString insertion="abc";
UnicodeString expected="Transliterate this-'\\u0061\\u0062\\u0063'";
UnicodeString expected=UnicodeString("Transliterate this-'\\u0061\\u0062\\u0063'", "");
t->transliterate(rs, index, insertion, status);
if(U_FAILURE(status))
errln("FAIL: " + t->getID()+ ".translitere(Replaceable, int[], UnicodeString, UErrorCode)-->" + (UnicodeString)u_errorName(status));
@ -396,16 +396,16 @@ void TransliteratorAPITest::TestSimpleKeyboardTransliterator(){
void TransliteratorAPITest::TestKeyboardTransliterator1(){
UnicodeString Data[]={
//insertion, buffer
"a", "\\u0061" ,
"bbb", "\\u0061\\u0062\\u0062\\u0062" ,
"ca", "\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061" ,
" ", "\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061\\u0020" ,
"", "\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061\\u0020" ,
"a", UnicodeString("\\u0061", "") ,
"bbb", UnicodeString("\\u0061\\u0062\\u0062\\u0062", "") ,
"ca", UnicodeString("\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061", "") ,
" ", UnicodeString("\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061\\u0020", "") ,
"", UnicodeString("\\u0061\\u0062\\u0062\\u0062\\u0063\\u0061\\u0020", "") ,
"a", "\\u0061" ,
"b", "\\u0061\\u0062" ,
"z", "\\u0061\\u0062\\u007A" ,
"", "\\u0061\\u0062\\u007A"
"a", UnicodeString("\\u0061", "") ,
"b", UnicodeString("\\u0061\\u0062", "") ,
"z", UnicodeString("\\u0061\\u0062\\u007A", "") ,
"", UnicodeString("\\u0061\\u0062\\u007A", "")
};
Transliterator* t=Transliterator::createInstance("Unicode-Hex");
@ -460,10 +460,10 @@ void TransliteratorAPITest::TestKeyboardTransliterator2(){
UnicodeString Data[]={
//insertion, buffer, index[START], index[LIMIT], index[CURSOR]
//data for Unicode-Hex
"abc", "Initial String: add-\\u0061\\u0062\\u0063-", "19", "20", "20",
"a", "In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", "2", "3", "2" ,
"b", "\\u0062In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", "0", "0", "0" ,
"", "\\u0062In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", "0", "0", "0" ,
"abc", UnicodeString("Initial String: add-\\u0061\\u0062\\u0063-", ""), "19", "20", "20",
"a", UnicodeString("In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", ""), "2", "3", "2" ,
"b", UnicodeString("\\u0062In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", ""), "0", "0", "0" ,
"", UnicodeString("\\u0062In\\u0069\\u0061tial String: add-\\u0061\\u0062\\u0063-", ""), "0", "0", "0" ,
//data for Latin-Devanagiri
"aa", CharsToUnicodeString("Hindi -\\u0906-"), "6", "7", "6",
"maa", CharsToUnicodeString("Hindi -\\u0906\\u092E\\u093E-"), "7", "8", "7",
@ -507,8 +507,8 @@ void TransliteratorAPITest::TestKeyboardTransliterator3(){
UnicodeString s="This is the main string";
UnicodeString Data[] = {
"0", "0", "0", "This is the main string",
"1", "3", "2", "Th\\u0069s is the main string",
"20", "21", "20", "Th\\u0069s is the mai\\u006E string"
"1", "3", "2", UnicodeString("Th\\u0069s is the main string", ""),
"20", "21", "20", UnicodeString("Th\\u0069s is the mai\\u006E string", "")
};
UErrorCode status=U_ZERO_ERROR;
@ -670,7 +670,7 @@ void TransliteratorAPITest::TestGetAdoptFilter(){
got = data;
t->transliterate(got);
UnicodeString exp="A\\u0042Ca\\u0062c\\u0062\\u0062C\\u0042a";
UnicodeString exp=UnicodeString("A\\u0042Ca\\u0062c\\u0062\\u0062C\\u0042a", "");
message="transliteration after adoptFilter(a,A,c,C) ";
doTest(message, got, exp);
@ -683,7 +683,7 @@ void TransliteratorAPITest::TestGetAdoptFilter(){
got = data;
t->transliterate(got);
exp="\\u0041\\u0042\\u0043\\u0061\\u0062\\u0063\\u0062\\u0062\\u0043\\u0042\\u0061";
exp=UnicodeString("\\u0041\\u0042\\u0043\\u0061\\u0062\\u0063\\u0062\\u0062\\u0043\\u0042\\u0061", "");
message="transliteration after adopting null filter";
doTest(message, got, exp);
message="adoptFilter round trip";
@ -691,28 +691,28 @@ void TransliteratorAPITest::TestGetAdoptFilter(){
t->adoptFilter(new TestFilter2);
data="heelloe";
exp="\\u0068eell\\u006Fe";
exp=UnicodeString("\\u0068eell\\u006Fe", "");
got = data;
t->transliterate(got);
message="transliteration using (e,l) filter";
doTest("transliteration using (e,l) filter", got, exp);
data="are well";
exp="\\u0061\\u0072e\\u0020\\u0077ell";
exp=UnicodeString("\\u0061\\u0072e\\u0020\\u0077ell", "");
got = data;
t->transliterate(got);
doTest(message, got, exp);
t->adoptFilter(new TestFilter3);
data="ho, wow!";
exp="\\u0068o\\u002C\\u0020wow\\u0021";
exp=UnicodeString("\\u0068o\\u002C\\u0020wow\\u0021", "");
got = data;
t->transliterate(got);
message="transliteration using (o,w) filter";
doTest("transliteration using (o,w) filter", got, exp);
data="owl";
exp="ow\\u006C";
exp=UnicodeString("ow\\u006C", "");
got = data;
t->transliterate(got);
doTest("transliteration using (o,w) filter", got, exp);

View File

@ -456,25 +456,25 @@ UBool RTHangulTest::isSource(UChar c) {
void TransliteratorRoundTripTest::TestHiragana() {
RTTest test("Latin-Kana",
TestUtility::LATIN_SCRIPT, TestUtility::HIRAGANA_SCRIPT);
test.test("[a-z]", "[\\u3040-\\u3094]", this);
test.test("[a-z]", UnicodeString("[\\u3040-\\u3094]", ""), this);
}
void TransliteratorRoundTripTest::TestKatakana() {
RTTest test("Latin-Kana",
TestUtility::LATIN_SCRIPT, TestUtility::KATAKANA_SCRIPT);
test.test("[A-Z]", "[\\u30A1-\\u30FA]", this);
test.test("[A-Z]", UnicodeString("[\\u30A1-\\u30FA]", ""), this);
}
void TransliteratorRoundTripTest::TestArabic() {
RTTest test("Latin-Arabic",
TestUtility::LATIN_SCRIPT, TestUtility::ARABIC_SCRIPT);
test.test("[a-z]", "[\\u0620-\\u065F-[\\u0640]]", this);
test.test("[a-z]", UnicodeString("[\\u0620-\\u065F-[\\u0640]]", ""), this);
}
void TransliteratorRoundTripTest::TestHebrew() {
RTTest test("Latin-Hebrew",
TestUtility::LATIN_SCRIPT, TestUtility::HEBREW_SCRIPT);
test.test("", "[\\u05D0-\\u05EF]", this);
test.test("", UnicodeString("[\\u05D0-\\u05EF]", ""), this);
}
void TransliteratorRoundTripTest::TestHangul() {
@ -500,11 +500,11 @@ void TransliteratorRoundTripTest::TestJamoHangul() {
void TransliteratorRoundTripTest::TestGreek() {
RTTest test("Latin-Greek",
TestUtility::LATIN_SCRIPT, TestUtility::GREEK_SCRIPT);
test.test("", "[\\u0380-\\u03CF]", this);
test.test("", UnicodeString("[\\u0380-\\u03CF]", ""), this);
}
void TransliteratorRoundTripTest::TestCyrillic() {
RTTest test("Latin-Cyrillic",
TestUtility::LATIN_SCRIPT, TestUtility::CYRILLIC_SCRIPT);
test.test("", "[\\u0401\\u0410-\\u044F\\u0451]", this);
test.test("", UnicodeString("[\\u0401\\u0410-\\u044F\\u0451]", ""), this);
}

View File

@ -420,12 +420,13 @@ void TransliteratorTest::TestCompoundHex(void) {
delete b;
return;
}
// Do some basic tests of a
expect(*a, "01", UnicodeString("\\u0030\\u0031", ""));
// Do some basic tests of b
expect(*b, UnicodeString("\\u0030\\u0031", ""), "01");
Transliterator* ab = new CompoundTransliterator(transab, 2);
UnicodeString s("abcde");
UnicodeString s("abcde", "");
expect(*ab, s, s);
UnicodeString str(s);
@ -592,7 +593,7 @@ void TransliteratorTest::TestJ243(void) {
"abcd5fx012&#x00033;");
// Try custom Unicode-Hex (default is tested elsewhere)
status = U_ZERO_ERROR;
UnicodeToHexTransliterator hex3("&\\#x###0;", status);
UnicodeToHexTransliterator hex3(UnicodeString("&\\#x###0;", ""), status);
expect(hex3, "012", "&#x30;&#x31;&#x32;");
#endif
}

View File

@ -69,12 +69,12 @@ void UnicodeFilterLogicTest::TestAll(){
UnicodeString source("abcdABCDyzYZ");
//sanity testing wihtout any filter
expect(*t1, "without any Filter", source, "\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A");
expect(*t1, "without any Filter", source, UnicodeString("\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
//sanity testing using the Filter1(acAC) and Filter2(acyzYZ)
t1->adoptFilter(new Filter1);
expect(*t1, "with Filter(acAC)", source, "a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A");
expect(*t1, "with Filter(acAC)", source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
t1->adoptFilter(new Filter2);
expect(*t1, "with Filter2(acyzYZ)", source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ");
expect(*t1, "with Filter2(acyzYZ)", source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ", ""));
UnicodeFilter *filterNOT=UnicodeFilterLogic::createNot(new Filter1);
@ -82,81 +82,81 @@ void UnicodeFilterLogicTest::TestAll(){
UnicodeFilter *filterOR=UnicodeFilterLogic::createOr(new Filter1, new Filter2);
TestNOT(*t1, new Filter1, "Filter(acAC)",
source, "\\u0061b\\u0063d\\u0041B\\u0043DyzYZ");
source, UnicodeString("\\u0061b\\u0063d\\u0041B\\u0043DyzYZ", ""));
TestNOT(*t1, new Filter2, "Filter(acyzYZ)",
source, "\\u0061b\\u0063dABCD\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("\\u0061b\\u0063dABCD\\u0079\\u007A\\u0059\\u005A", ""));
TestNOT(*t1, NULL, "NULL",
source, "abcdABCDyzYZ");
source, UnicodeString("abcdABCDyzYZ", ""));
TestNOT(*t1, filterNOT, "FilterNOT(Fitler1(acAC))",
source, "a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestNOT(*t1, filterAND, "FilterAND(Fitler1(acAC), Filter2(acyzYZ))",
source, "\\u0061b\\u0063d\\u0041B\\u0043D\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("\\u0061b\\u0063d\\u0041B\\u0043D\\u0079\\u007A\\u0059\\u005A", ""));
TestNOT(*t1, filterOR, "FilterOR(Fitler1(acAC), Filter2(acyzYZ))",
source, "\\u0061b\\u0063dABCDyzYZ");
source, UnicodeString("\\u0061b\\u0063dABCDyzYZ", ""));
TestAND(*t1, new Filter1, new Filter2, "Filter1(a,c,A,C), Filter2(acyzYZ)",
source, "a\\u0062c\\u0064A\\u0042C\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044yzYZ", ""));
TestAND(*t1, new Filter2, new Filter1, "Filter2(acyzYZ), Filter1(a,c,A,C), ",
source, "a\\u0062c\\u0064A\\u0042C\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044yzYZ", ""));
TestAND(*t1, new Filter1, NULL, "Filter1(a,c,A,C), NULL",
source, "a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestAND(*t1, NULL, new Filter2, "NULL, Filter2(acyzYZ)",
source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ", ""));
TestAND(*t1, NULL, NULL, "NULL, NULL",
source, "\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestAND(*t1, filterAND, NULL, "FilterAND(Fitler1(acAC), Filter2(acyzYZ)), NULL",
source, "a\\u0062c\\u0064A\\u0042C\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044yzYZ", ""));
TestAND(*t1, filterAND, new Filter1, "FilterAND(Fitler1(acAC), Filter2(acyzYZ)), Filter1(acAC)",
source, "a\\u0062c\\u0064A\\u0042C\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044yzYZ", ""));
TestAND(*t1, filterAND, new Filter2, "FilterAND(Fitler1(acAC), Filter2(acyzYZ)), Filter2(acyzYZ)",
source, "a\\u0062c\\u0064A\\u0042C\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044yzYZ", ""));
TestAND(*t1, new Filter1, filterAND, "Filter1(acAC), FilterAND(Filter1(acAC), Fitler1(acAC))",
source, "a\\u0062c\\u0064A\\u0042C\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044yzYZ", ""));
TestAND(*t1, new Filter2, filterAND, "Filter2(acyzYZ), FilterAND(Filter1(acAC), Fitler1(acAC))",
source, "a\\u0062c\\u0064A\\u0042C\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044yzYZ", ""));
TestAND(*t1, filterOR, NULL, "FilterOR(Fitler1(acAC), Filter2(acyzYZ)), NULL",
source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestAND(*t1, filterOR, new Filter1, "FilterOR(Fitler1(acAC), Filter2(acyzYZ)), Fitler1(acAC)",
source, "a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestAND(*t1, filterOR, new Filter2, "FilterOR(Fitler1(acAC), Filter2(acyzYZ)), Fitler2(acyzYZ)",
source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ", ""));
TestAND(*t1, filterNOT, new Filter1, "FilterNOT(Fitler1(acAC)), Fitler1(acAC)",
source, "abcdABCDyzYZ");
source, UnicodeString("abcdABCDyzYZ", ""));
TestAND(*t1, new Filter1, filterNOT, "Fitler1(acAC), FilterNOT(Fitler1(acAC))",
source, "abcdABCDyzYZ");
source, UnicodeString("abcdABCDyzYZ", ""));
TestAND(*t1, filterNOT, new Filter2, "FilterNOT(Fitler1(acAC)), Fitler2(acyzYZ)",
source, "abcd\\u0041B\\u0043DyzYZ");
source, UnicodeString("abcd\\u0041B\\u0043DyzYZ", ""));
TestAND(*t1, new Filter2, filterNOT, "Fitler2(acyzYZ), FilterNOT(Fitler1(acAC))",
source, "abcd\\u0041B\\u0043DyzYZ");
source, UnicodeString("abcd\\u0041B\\u0043DyzYZ", ""));
TestOR(*t1, new Filter1, new Filter2, "Filter1(a,c,A,C), Filter2(acyzYZ)",
source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestOR(*t1, new Filter2, new Filter1, "Filter2(acyzYZ), Filter1(a,c,A,C)",
source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestOR(*t1, new Filter1, NULL, "Filter1(a,c,A,C), NULL",
source, "a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestOR(*t1, NULL, new Filter2, "NULL, Filter2(acyzYZ)",
source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ", ""));
TestOR(*t1, NULL, NULL, "NULL, NULL",
source, "\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestOR(*t1, filterAND, NULL, "FilterAND(Fitler1(acAC), Filter2(acyzYZ)), NULL",
source, "a\\u0062c\\u0064A\\u0042C\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044yzYZ", ""));
TestOR(*t1, filterAND, new Filter1, "FilterAND(Fitler1(acAC), Filter2(acyzYZ)), Filter1(acAC)",
source, "a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestOR(*t1, filterAND, new Filter2, "FilterAND(Fitler1(acAC), Filter2(acyzYZ)), Filter2(acyzYZ)",
source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ", ""));
TestOR(*t1, new Filter1, filterAND, "Filter1(acAC), FilterAND(Filter1(acAC), Fitler1(acAC))",
source, "a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("a\\u0062c\\u0064A\\u0042C\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestOR(*t1, new Filter2, filterAND, "Filter2(acyzYZ), FilterAND(Filter1(acAC), Fitler1(acAC))",
source, "a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ");
source, UnicodeString("a\\u0062c\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ", ""));
TestOR(*t1, filterNOT, new Filter1, "FilterNOT(Fitler1(acAC)), Fitler1(acAC)",
source, "\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestOR(*t1, new Filter1, filterNOT, "Fitler1(acAC), FilterNOT(Fitler1(acAC))",
source, "\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A");
source, UnicodeString("\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044\\u0079\\u007A\\u0059\\u005A", ""));
TestOR(*t1, filterNOT, new Filter2, "FilterNOT(Fitler1(acAC)), Fitler1(acyzYZ)",
source, "\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ");
source, UnicodeString("\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ", ""));
TestOR(*t1, new Filter2, filterNOT, "Fitler2(acyzYZ), FilterNOT(Fitler1(acAC))",
source, "\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ");
source, UnicodeString("\\u0061\\u0062\\u0063\\u0064\\u0041\\u0042\\u0043\\u0044yzYZ", ""));
delete filterNOT;

View File

@ -213,9 +213,9 @@ void UniToHexTransliteratorTest::TestUpperCase(){
errln("UnicodeToHexTransliterator construction failed");
return;
}
expect(*transdefault, "where uppercase=default", str, UnicodeString("\\u0061\\u0062\\u006B"));
expect(*transdefault, "where uppercase=default", str, UnicodeString("\\u0061\\u0062\\u006B", ""));
UnicodeString pattern("\\\\u0000");
UnicodeString pattern("\\\\u0000", "");
/*transliterator with Uppercase FALSE*/
UnicodeToHexTransliterator *trans1=new UnicodeToHexTransliterator(pattern, FALSE, NULL, status);
if(U_FAILURE(status) && status==U_ILLEGAL_ARGUMENT_ERROR){
@ -223,7 +223,7 @@ void UniToHexTransliteratorTest::TestUpperCase(){
status=U_ZERO_ERROR;
return;
}
expect(*trans1, "where uppercase=FALSE", str, UnicodeString("\\u0061\\u0062\\u006b")); /*doesn't display uppercase*/
expect(*trans1, "where uppercase=FALSE", str, UnicodeString("\\u0061\\u0062\\u006b", "")); /*doesn't display uppercase*/
if(transdefault->isUppercase() != TRUE || trans1->isUppercase() != FALSE ){
errln("isUpperCase() failed");
@ -234,7 +234,7 @@ void UniToHexTransliteratorTest::TestUpperCase(){
errln("setUppercase() failed");
}
/*doesn't ouput uppercase hex, since transdefault's uppercase is set to FALSE using setUppercase*/
expect(*transdefault, "where uppercase=FALSE", str, UnicodeString("\\u0061\\u0062\\u006b"));
expect(*transdefault, "where uppercase=FALSE", str, UnicodeString("\\u0061\\u0062\\u006b", ""));
/*trying round trip*/
transdefault->setUppercase(TRUE);
@ -242,7 +242,7 @@ void UniToHexTransliteratorTest::TestUpperCase(){
errln("setUppercase() failed");
}
/*displays upper case since it is set to TRUE*/
expect(*transdefault, "where uppercase=TRUE", str, UnicodeString("\\u0061\\u0062\\u006B"));
expect(*transdefault, "where uppercase=TRUE", str, UnicodeString("\\u0061\\u0062\\u006B", ""));
delete transdefault;
delete trans1;
@ -259,7 +259,7 @@ void UniToHexTransliteratorTest::TestPattern(){
}
UnicodeString defaultpattern=transdefault->toPattern();
UnicodeString pattern1("\\\\U+0000");
UnicodeString pattern1("\\\\U+0000", "");
UnicodeToHexTransliterator *trans1=new UnicodeToHexTransliterator(pattern1, TRUE, NULL, status);
if(U_FAILURE(status) && status==U_ILLEGAL_ARGUMENT_ERROR){
errln("UnicodeToHexTransliterator construction failed with pattern =" + pattern1);
@ -268,21 +268,21 @@ void UniToHexTransliteratorTest::TestPattern(){
}
/*test toPattern() */
if(transdefault->toPattern() == trans1->toPattern() ||
transdefault->toPattern() != UnicodeString("\\\\u0000") ||
transdefault->toPattern() != UnicodeString("\\\\u0000", "") ||
trans1->toPattern() != pattern1 ){
errln("Error: toPattern() failed");
}
/*apply patterns for transdefault*/
UnicodeString str("abKf");
expectPattern(*transdefault, pattern1, str, "\\U+0061\\U+0062\\U+004B\\U+0066");
expectPattern(*transdefault, "\\U##00,", str, "U61,U62,U4B,U66,");
expectPattern(*transdefault, defaultpattern, str, "\\u0061\\u0062\\u004B\\u0066");
expectPattern(*trans1, "\\uni0000", str, "uni0061uni0062uni004Buni0066");
expectPattern(*trans1, "\\\\S-0000-E", str, "\\S-0061-E\\S-0062-E\\S-004B-E\\S-0066-E");
expectPattern(*trans1, "\\u##0000", str, "FAIL");
expectPattern(*trans1, "\\*0000", str, "*0061*0062*004B*0066");
expectPattern(*trans1, "\\u####", str, "FAIL");
expectPattern(*transdefault, pattern1, str, UnicodeString("\\U+0061\\U+0062\\U+004B\\U+0066", ""));
expectPattern(*transdefault, UnicodeString("\\U##00,", ""), str, UnicodeString("U61,U62,U4B,U66,", ""));
expectPattern(*transdefault, defaultpattern, str, UnicodeString("\\u0061\\u0062\\u004B\\u0066", ""));
expectPattern(*trans1, UnicodeString("\\uni0000", ""), str, UnicodeString("uni0061uni0062uni004Buni0066", ""));
expectPattern(*trans1, UnicodeString("\\\\S-0000-E", ""), str, UnicodeString("\\S-0061-E\\S-0062-E\\S-004B-E\\S-0066-E", ""));
expectPattern(*trans1, UnicodeString("\\u##0000", ""), str, UnicodeString("FAIL", ""));
expectPattern(*trans1, UnicodeString("\\*0000", ""), str, UnicodeString("*0061*0062*004B*0066", ""));
expectPattern(*trans1, UnicodeString("\\u####", ""), str, UnicodeString("FAIL", ""));
delete trans1;
delete transdefault;
@ -290,7 +290,7 @@ void UniToHexTransliteratorTest::TestPattern(){
}
void UniToHexTransliteratorTest::TestSimpleTransliterate(){
UErrorCode status=U_ZERO_ERROR;
UnicodeString pattern1("\\\\U+0000");
UnicodeString pattern1("\\\\U+0000", "");
UnicodeToHexTransliterator *trans1=new UnicodeToHexTransliterator(pattern1, TRUE, NULL, status);
if(U_FAILURE(status) && status==U_ILLEGAL_ARGUMENT_ERROR){
errln("UnicodeToHexTransliterator construction failed with pattern =" + pattern1);
@ -300,7 +300,7 @@ void UniToHexTransliteratorTest::TestSimpleTransliterate(){
UTransPosition index={1,5,2,5};
UnicodeString source("Hello");
UnicodeString rsource(source);
UnicodeString expected("He\\U+006C\\U+006C\\U+006F");
UnicodeString expected("He\\U+006C\\U+006C\\U+006F", "");
trans1->handleTransliterate(rsource, index, FALSE);
expectAux(trans1->getID() + ":handleTransliterator ", source + "-->" + rsource, rsource==expected, expected);
delete trans1;
@ -310,12 +310,12 @@ void UniToHexTransliteratorTest::TestTransliterate(){
UErrorCode status=U_ZERO_ERROR;
UnicodeString Data[]={
//pattern, source, index.contextStart, index.contextLimit, index.start, expectedResult, expectedResult using filter(a, b)
(UnicodeString)"U+##00", (UnicodeString)"abc", "1", "3", "2", (UnicodeString)"abU+63", (UnicodeString)"abc",
(UnicodeString)"\\\\u0000", (UnicodeString)"abc", "1", "2", "1", (UnicodeString)"a\\u0062c", (UnicodeString)"a\\u0062c",
(UnicodeString)"Uni0000", (UnicodeString)"abc", "1", "3", "2", (UnicodeString)"abUni0063", (UnicodeString)"abc",
(UnicodeString)"U[0000]", (UnicodeString)"hello", "0", "4", "2", (UnicodeString)"heU[006C]U[006C]o", (UnicodeString)"heU[006C]U[006C]o",
(UnicodeString)"prefix-0000-suffix", (UnicodeString)"abc", "1", "3", "1", (UnicodeString)"aprefix-0062-suffixprefix-0063-suffix", (UnicodeString)"aprefix-0062-suffixc",
(UnicodeString)"*##00*", (UnicodeString)"hellothere", "1", "8", "4", (UnicodeString)"hell*6F**74**68**65*re", (UnicodeString)"hell*6F**74**68**65*re",
UnicodeString("U+##00", ""), UnicodeString("abc", ""), "1", "3", "2", UnicodeString("abU+63", ""), UnicodeString("abc", ""),
UnicodeString("\\\\u0000", ""), UnicodeString("abc", ""), "1", "2", "1", UnicodeString("a\\u0062c", ""), UnicodeString("a\\u0062c", ""),
UnicodeString("Uni0000", ""), UnicodeString("abc", ""), "1", "3", "2", UnicodeString("abUni0063", ""), UnicodeString("abc", ""),
UnicodeString("U[0000]", ""), UnicodeString("hello", ""), "0", "4", "2", UnicodeString("heU[006C]U[006C]o", ""), UnicodeString("heU[006C]U[006C]o", ""),
UnicodeString("prefix-0000-suffix", ""), UnicodeString("abc", ""), "1", "3", "1", UnicodeString("aprefix-0062-suffixprefix-0063-suffix", ""), UnicodeString("aprefix-0062-suffixc", ""),
UnicodeString("*##00*", ""), UnicodeString("hellothere", ""), "1", "8", "4", UnicodeString("hell*6F**74**68**65*re", ""), UnicodeString("hell*6F**74**68**65*re", ""),
};
int i;

View File

@ -46,12 +46,12 @@ UnicodeSetTest::runIndexedTest(int32_t index, UBool exec,
void
UnicodeSetTest::TestPatterns(void) {
UnicodeSet set;
expectPattern(set, "[[a-m]&[d-z]&[k-y]]", "km");
expectPattern(set, "[[a-z]-[m-y]-[d-r]]", "aczz");
expectPattern(set, "[a\\-z]", "--aazz");
expectPattern(set, "[-az]", "--aazz");
expectPattern(set, "[az-]", "--aazz");
expectPattern(set, "[[[a-z]-[aeiou]i]]", "bdfnptvz");
expectPattern(set, UnicodeString("[[a-m]&[d-z]&[k-y]]", ""), "km");
expectPattern(set, UnicodeString("[[a-z]-[m-y]-[d-r]]", ""), "aczz");
expectPattern(set, UnicodeString("[a\\-z]", ""), "--aazz");
expectPattern(set, UnicodeString("[-az]", ""), "--aazz");
expectPattern(set, UnicodeString("[az-]", ""), "--aazz");
expectPattern(set, UnicodeString("[[[a-z]-[aeiou]i]]", ""), "bdfnptvz");
// Throw in a test of complement
set.complement();