diff options
Diffstat (limited to 'test/test_utf8.c')
| -rw-r--r-- | test/test_utf8.c | 86 | 
1 files changed, 86 insertions, 0 deletions
| diff --git a/test/test_utf8.c b/test/test_utf8.c index 75392e8..77149d7 100644 --- a/test/test_utf8.c +++ b/test/test_utf8.c @@ -226,6 +226,27 @@ extern int main(int argc, char* argv[])    x2("[*[:xdigit:]+]", "-@^+", 3, 4);    n("[[:upper]]", "A");    x2("[[:upper]]", ":", 0, 1); +  n("[[:upper:]]", "a"); +  x2("[[:^upper:]]", "a", 0, 1); +  n("[[:lower:]]", "A"); +  x2("[[:^lower:]]", "A", 0, 1); + +  // Issue #253 +  e("[[:::]",   ":[", ONIGERR_PREMATURE_END_OF_CHAR_CLASS); +  e("[[:\\]:]", ":]", ONIGERR_PREMATURE_END_OF_CHAR_CLASS); +  e("[[:\\[:]", ":[", ONIGERR_PREMATURE_END_OF_CHAR_CLASS); +  e("[[:\\]]",  ":]", ONIGERR_PREMATURE_END_OF_CHAR_CLASS); +  e("[[:u:]]",      "", ONIGERR_INVALID_POSIX_BRACKET_TYPE); +  e("[[:upp:]]",    "", ONIGERR_INVALID_POSIX_BRACKET_TYPE); +  e("[[:uppers:]]", "", ONIGERR_INVALID_POSIX_BRACKET_TYPE); +  x2("[[:upper\\] :]]",  "]", 0, 1); + +  x2("[[::]]",     ":", 0, 1); +  x2("[[:::]]",    ":", 0, 1); +  x2("[[:\\]:]]*", ":]", 0, 2); +  x2("[[:\\[:]]*", ":[", 0, 2); +  x2("[[:\\]]]*",  ":]", 0, 2); +    x2("[\\044-\\047]", "\046", 0, 1);    x2("[\\x5a-\\x5c]", "\x5b", 0, 1);    x2("[\\x6A-\\x6D]", "\x6c", 0, 1); @@ -1623,6 +1644,8 @@ extern int main(int argc, char* argv[])    e("(?Ii)|(?Ii)", "", ONIGERR_INVALID_GROUP_OPTION);    x2("a*", "aabcaaa", 0, 2);    x2("(?L)a*", "aabcaaa", 4, 7); +  x2("(?L)a{4}|a{3}|b*", "baaaaabbb", 1, 5); +  x2("(?L)a{3}|a{4}|b*", "baaaaabbb", 1, 5);    e("x(?L)xxxxx", "", ONIGERR_INVALID_GROUP_OPTION);    e("(?-L)x", "", ONIGERR_INVALID_GROUP_OPTION);    x3("(..)\\1", "abab", 0, 2, 1); @@ -1630,6 +1653,69 @@ extern int main(int argc, char* argv[])    e("(?-C)", "", ONIGERR_INVALID_GROUP_OPTION);    e("(?C)(.)(.)(.)(?<name>.)\\1", "abcdd", ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED); +  // Issue #264 +  n("(?iI)s", "\xc5\xbf"); +  n("(?iI)[s]", "\xc5\xbf");    // FAIL +  n("(?iI:s)", "\xc5\xbf"); +  n("(?iI:[s])", "\xc5\xbf");    // FAIL +  x2("(?iI)(?:[[:word:]])", "\xc5\xbf", 0, 2); +  n("(?iI)(?W:[[:word:]])", "\xc5\xbf");     // FAIL +  n("(?iI)(?W:\\w)", "\xc5\xbf"); +  n("(?iI)(?W:[\\w])", "\xc5\xbf");     // FAIL +  n("(?iI)(?W:\\p{Word})", "\xc5\xbf"); +  n("(?iI)(?W:[\\p{Word}])", "\xc5\xbf");     // FAIL + +  x2("(?iW:[[:word:]])",  "\xc5\xbf", 0, 2); +  x2("(?iW:[\\p{Word}])", "\xc5\xbf", 0, 2); +  x2("(?iW:[\\w])",       "\xc5\xbf", 0, 2); +  n("(?iW:\\p{Word})",    "\xc5\xbf"); +  n("(?iW:\\w)",          "\xc5\xbf"); +  x2("(?i)\\p{Word}",     "\xc5\xbf", 0, 2); +  x2("(?i)\\w",           "\xc5\xbf", 0, 2); + +  x2("(?iW:[[:^word:]])",  "\xc5\xbf", 0, 2); +  x2("(?iW:[\\P{Word}])",  "\xc5\xbf", 0, 2); +  x2("(?iW:[\\W])",        "\xc5\xbf", 0, 2); +  x2("(?iW:\\P{Word})",    "\xc5\xbf", 0, 2); +  x2("(?iW:\\W)",          "\xc5\xbf", 0, 2); +  n("(?i)\\P{Word}",      "\xc5\xbf"); +  n("(?i)\\W",            "\xc5\xbf"); + +  x2("(?iW:[[:^word:]])",  "s", 0, 1); +  x2("(?iW:[\\P{Word}])",  "s", 0, 1); +  x2("(?iW:[\\W])",        "s", 0, 1); +  n("(?iW:\\P{Word})",     "s"); +  n("(?iW:\\W)",           "s"); +  n("(?i)\\P{Word}",       "s"); +  n("(?i)\\W",             "s"); + +  x2("[[:punct:]]", ":", 0, 1); +  x2("[[:punct:]]", "$", 0, 1); +  x2("[[:punct:]]+", "$+<=>^`|~", 0, 9); +  n("[[:punct:]]", "a"); +  n("[[:punct:]]", "7"); +  x2("\\p{PosixPunct}+", "$¦", 0, 3); + +  x2("\\A.*\\R", "\n", 0, 1); +  x2("\\A\\O*\\R", "\n", 0, 1); +  x2("\\A\\n*\\R", "\n", 0, 1); +  x2("\\A\\R*\\R", "\n", 0, 1); +  x2("\\At*\\R", "\n", 0, 1); + +  x2("\\A.{0,99}\\R", "\n", 0, 1); +  x2("\\A\\O{0,99}\\R", "\n", 0, 1); +  x2("\\A\\n{0,99}\\R", "\n", 0, 1); +  x2("\\A\\R{0,99}\\R", "\n", 0, 1); +  x2("\\At{0,99}\\R", "\n", 0, 1); + +  x2("\\A.*\\n", "\n", 0, 1);       //  \n +  x2("\\A.{0,99}\\n", "\n", 0, 1); +  x2("\\A.*\\O", "\n", 0, 1);       //  \O +  x2("\\A.{0,99}\\O", "\n", 0, 1); +  x2("\\A.*\\s", "\n", 0, 1);       //  \s +  x2("\\A.{0,99}\\s", "\n", 0, 1); + +    n("a(b|)+d", "abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcd"); /* https://www.haijin-boys.com/discussions/5079 */    n("   \xfd", ""); /* https://bugs.php.net/bug.php?id=77370 */    /* can't use \xfc00.. because compiler error: hex escape sequence out of range */ | 
