]> granicus.if.org Git - onig/commitdiff
update test cases for absent functions
authorK.Kosako <kkosako0@gmail.com>
Sun, 23 Jul 2017 03:12:59 +0000 (12:12 +0900)
committerK.Kosako <kkosako0@gmail.com>
Sun, 23 Jul 2017 03:12:59 +0000 (12:12 +0900)
test/testc.c

index 6fe0b49ecc5a5fd7e9bca545a4645d28ad2947d0..5d2c7d474ffb2da5f5a83397e339bd0f09e0c202 100644 (file)
@@ -623,44 +623,48 @@ extern int main(int argc, char* argv[])
   x2("(a\\Kb|ac\\Kd)", "acd", 2, 3);
   x2("(a\\Kb|\\Kac\\K)*", "acababacab", 9, 10);
 
-  n("(?~)", "");
-  n("(?~)", "A");
-  n("aaaaa(?~)", "aaaaaaaaaa");
-  n("(?~(?:|aaa))", "aaa");
-  n("(?~aaa|)", "aaa");
-  x2("a(?~(?~))z", "abcdefghijklmnopqrstuvwxyz", 0, 26);
+  x2("(?~)", "", 0, 0);
+  x2("(?~)", "A", 0, 0);
+  x2("aaaaa(?~)", "aaaaaaaaaa", 0, 5);
+  x2("(?~(?:|aaa))", "aaa", 0, 0);
+  x2("(?~aaa|)", "aaa", 0, 0);
+  x2("a(?~(?~)).", "abcdefghijklmnopqrstuvwxyz", 0, 26); // !!!
   x2("/\\*(?~\\*/)\\*/", "/* */ */", 0, 5);
   x2("(?~\\w+)zzzzz", "zzzzz", 0, 5);
-  n("(?~\\w*)zzzzz", "zzzzz");
-  x2("(?~A.C|B)", "ABC", 0, 1);
+  x2("(?~\\w*)zzzzz", "zzzzz", 0, 5);
+  x2("(?~A.C|B)", "ABC", 0, 0);
   x2("(?~XYZ|ABC)a", "ABCa", 1, 4);
   x2("(?~XYZ|ABC)a", "aABCa", 0, 1);
   x2("<[^>]*>(?~[<>])</[^>]*>", "<a>vvv</a>   <b>  </b>", 0, 10);
-  x2("(?~ab)", "ccc\ndab", 0, 6);
-  x2("(?m:(?~ab))", "ccc\ndab", 0, 6);
-  x2("(?-m:(?~ab))", "ccc\ndab", 0, 6);
-
-  // absent group with generator
-  x2("(?~|\\d*|78)", "123456789", 0, 7);
-  x2("(?~|(?:abc|de|f){0,100}|def)", "abcdedeabcfdefabc", 0, 13);
-  x2("(?~|.*|ab)", "ccc\nddd", 0, 3);
-  x2("(?~|\\O*|ab)", "ccc\ndab", 0, 6);
-  x2("(?~|\\O{2,10}|ab)", "ccc\ndab", 0, 6);
-  x2("(?~|\\O{1,10}|ab)", "ab", 0, 1);
-  n("(?~|\\O{2,10}|ab)", "ab");
-  x2("(?~|\\O{1,10}|ab)|abc", "abc", 0, 1);
-  x2("(?~|\\O{5,10}|ab)|abc", "abc", 0, 3);
-  x2("(?~|\\O{1,10}|ab)", "cccccccccccab", 0, 10);
-  // n("(?~|aaa|)", "aaa");  invalid absent group generator pattern
-  n("(?~|a*|)", "aaaaaa");
-  //n("(?~|a*?|)", "aaaaaa");  invalid absent group generator pattern
-  //n("(a)(?~|\\1*|)", "aaaaaa");  invalid absent group generator pattern
-  n("(a)(?~|(?:a\\1)*|)", "aaaaaa");
-  x2("(b|c)(?~|(?:a\\1)*|abac)", "abababacabab", 1, 6);
-  n("(?~|a*+|c)a", "aaaaa");   // possessive generator
-  x2("(?~|a*+|aaaaaa)", "aaaaa", 0, 5);
-  x2("(?~|a*+|aaaaaa)", "aaaaaa", 0, 5);
-  x2("(?~|a*+|aaaaaa)b", "aaaaaab", 1, 7);
+  x2("(?~ab)", "ccc\ndab", 0, 5);
+  x2("(?m:(?~ab))", "ccc\ndab", 0, 5);
+  x2("(?-m:(?~ab))", "ccc\ndab", 0, 5);
+
+  // absent with expr
+  x2("(?~|78|\\d*)", "123456789", 0, 6);
+  x2("(?~|def|(?:abc|de|f){0,100})", "abcdedeabcfdefabc", 0, 11);
+  x2("(?~|ab|.*)", "ccc\nddd", 0, 3);
+  x2("(?~|ab|\\O*)", "ccc\ndab", 0, 5);
+  x2("(?~|ab|\\O{2,10})", "ccc\ndab", 0, 5);
+  x2("(?~|ab|\\O{1,10})", "ab", 1, 2);
+  n("(?~|ab|\\O{2,10})", "ab");
+  x2("(?~|abc|\\O{1,10})", "abc", 1, 3);
+  x2("(?~|ab|\\O{5,10})|abc", "abc", 0, 3);
+  x2("(?~|ab|\\O{1,10})", "cccccccccccab", 0, 10);
+  x2("(?~|aaa|)", "aaa", 0, 0);
+  x2("(?~||a*)", "aaaaaa", 0, 0);
+  x2("(?~||a*?)", "aaaaaa", 0, 0);
+  x2("(a)(?~|b|\\1)", "aaaaaa", 0, 2);
+  x2("(a)(?~|bb|(?:a\\1)*)", "aaaaaa", 0, 5);
+  x2("(b|c)(?~|abac|(?:a\\1)*)", "abababacabab", 1, 4);
+  n("(?~|c|a*+)a", "aaaaa");
+  x2("(?~|aaaaa|a*+)", "aaaaa", 0, 0);
+  x2("(?~|aaaaaa|a*+)b", "aaaaaab", 1, 7);
+
+  // absent range cutter
+  x2("(?~|abc)a*", "aaaaaabc", 0, 5);
+  x2("(?~|abc)a*z|aaaaaabc", "aaaaaabc", 0, 8);
+  x2("(?~|aaaaaa)a*", "aaaaaa", 0, 0);
 
   /*
     < ifndef IGNORE_EUC_JP >