]> granicus.if.org Git - re2c/commitdiff
libre2c test: always run Cox algorithm and skip expected failures.
authorUlya Trofimovich <skvadrik@gmail.com>
Sat, 13 Jul 2019 21:54:59 +0000 (22:54 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Sat, 13 Jul 2019 22:46:00 +0000 (23:46 +0100)
lib/test.cc
lib/test_fail_back_gor1 [deleted file]
lib/test_fail_back_gtop [deleted file]

index 70fe0f835c1708739065d4c07e186253eaf39226..4ff953c7802c93b1b700a3d35318a8a85b709499 100644 (file)
@@ -1,7 +1,6 @@
 #include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 
 #include "lib/regex.h"
 #include "src/util/c99_stdint.h"
@@ -103,22 +102,29 @@ static int test_all_posix(int flags)
 {
     int e = 0;
 
-    T5("(a+(c+))|(b+(d+))",             "ac",              0,2, 0,2, 1,2, -1,-1, -1,-1);
-
-    T2("(aaaa|aaa|a)+",                 "aaaaaaaaaa",      0,10, 9,10);
-    T2("(aaaa|aaa|a){3,}",              "aaaaaaaaaa",      0,10, 9,10);
-    T2("(aaaa|aaa|a){3,4}",             "aaaaaaaaaa",      0,10, 9,10);
-    T2("(aaaaaa|aaaaa|aaaa|aa|a){3,4}", "aaaaaaaaaaaaaaa", 0,15, 14,15);
-
-    T2("(aaaaa?a?|aa?){1,4}",           "aaaaaaaaaaaaaaa", 0,15, 14,15);
-    T5("(((a){3,4}a?)()a|aa?){1,4}",    "aaaaaaaaaaaaaaa", 0,15, 14,15, -1,-1, -1,-1, -1,-1);
-
-    T4("(((aaaa?|a?)){1,4})+",          "aaaaaaaaaa", 0,10, 0,10, 9,10, 9,10);
-    T6("(((((a){3,3}a?|a?)){0,4})?)*",  "aaaaaaaaaa", 0,10, 0,10, 0,10, 9,10, 9,10, -1,-1);
-
-    T9("((((a){2,3}(()|a)(()|a?)a|a?)){2,5})*", "aaaaaaaaaaaaaa", 0,14, 0,14, 13,14, 13,14, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1);
-
-    T10("(((((a){3,4}|a?)){1,4}|((a)+(a|())){1,2}))*", "aaaaaaaaaa", 0,10, 0,10, 0,10, 9,10, 9,10, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1);
+    T5("(a+(c+))|(b+(d+))", "ac", 0,2, 0,2, 1,2, -1,-1, -1,-1);
+
+    T2("(aaaa|aaa|a)+", "aaaaaaaaaa", 0,10, 9,10);
+    T2("(aaaa|aaa|a){3,}", "aaaaaaaaaa", 0,10, 9,10);
+    if (!(flags & REG_BACKWARD)) {
+        // expected failures for Cox algorithm
+        T2("(aaaa|aaa|a){3,4}", "aaaaaaaaaa", 0,10, 9,10);
+        T2("(aaaaaa|aaaaa|aaaa|aa|a){3,4}", "aaaaaaaaaaaaaaa", 0,15, 14,15);
+        T2("(aaaaa?a?|aa?){1,4}", "aaaaaaaaaaaaaaa", 0,15, 14,15);
+        T5("(((a){3,4}a?)()a|aa?){1,4}", "aaaaaaaaaaaaaaa", 0,15, 14,15, -1,-1, -1,-1, -1,-1);
+        T4("(((aaaa?|a?)){1,4})+", "aaaaaaaaaa", 0,10, 0,10, 9,10, 9,10);
+        T9("((((a){2,3}(()|a)(()|a?)a|a?)){2,5})*", "aaaaaaaaaaaaaa", 0,14, 0,14, 13,14, 13,14, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1);
+    }
+    if (!((flags & REG_BACKWARD) && (flags & REG_GTOP))) {
+        // expected failures for Cox algorithm
+        T6("(((((a){3,3}a?|a?)){0,4})?)*", "aaaaaaaaaa", 0,10, 0,10, 0,10, 9,10, 9,10, -1,-1);
+        T10("(((((a){3,4}|a?)){1,4}|((a)+(a|())){1,2}))*", "aaaaaaaaaa", 0,10, 0,10, 0,10, 9,10, 9,10, -1,-1, -1,-1, -1,-1, -1,-1, -1,-1);
+    }
+    if (!((flags & REG_BACKWARD) && !(flags & REG_GTOP))) {
+        // expected failures for Cox algorithm
+        T7("((a?|a?(a?a?)((())+)+))*", "aaaaaa", 0,6, 3,6, 3,6, 4,6, 6,6, 6,6, 6,6);
+    }
+    T4("(((a?a)){2,3})*", "aaaa", 0,4, 0,4, 2,4, 2,4);
 
     T6("(((aa?a)((aaa)+))+)+",              "aaaaaaaaaa", 0,10, 0,10, 5,10, 5,7, 7,10, 7,10);
     T6("(((aaa?)((aaa)+))+)+",              "aaaaaaaaaa", 0,10, 0,10, 5,10, 5,7, 7,10, 7,10);
@@ -126,9 +132,6 @@ static int test_all_posix(int flags)
     T6("((((aaa?)(aaa){1,3})){1,2})*",      "aaaaaaaaaa", 0,10, 0,10, 5,10, 5,10, 5,7, 7,10);
     T7("((((aaa?)((a){3,3}){1,3})){1,2})*", "aaaaaaaaaa", 0,10, 0,10, 5,10, 5,10, 5,7, 7,10, 9,10);
 
-    T4("(((a?a)){2,3})*",          "aaaa",   0,4, 0,4, 2,4, 2,4);
-    T7("((a?|a?(a?a?)((())+)+))*", "aaaaaa", 0,6, 3,6, 3,6, 4,6, 6,6, 6,6, 6,6);
-
     T2("(a|aa)*", "",           0,0,  -1,-1);
     T2("(a|aa)*", "a",          0,1,  0,1);
     T2("(a|aa)*", "aa",         0,2,  0,2);
@@ -173,7 +176,9 @@ static int test_all_posix(int flags)
     T4("((a)|(b))*",                         "ab",          0,2, 1,2, -1,-1, 1,2);
     T4("((a?)|(b?))*",                       "ab",          0,2, 1,2, -1,-1, 1,2);
     T4("((a?)|(b?))*",                       "ba",          0,2, 1,2, 1,2, -1,-1);
-    T4("((a?)|(b?)){2,3}",                   "ab",          0,2, 1,2, -1,-1, 1,2);
+    if (!((flags & REG_BACKWARD) && !(flags & REG_GTOP))) {
+        T4("((a?)|(b?)){2,3}",               "ab",          0,2, 1,2, -1,-1, 1,2);
+    }
     T4("((a?)|(b?)){3}",                     "ab",          0,2, 2,2, 2,2, -1,-1);
     T1("y{3}",                               "yyy",         0,3);
     T1("y{0,2}",                             "",            0,0);
@@ -606,9 +611,12 @@ static int test_all_posix(int flags)
     else if (!(flags & (REG_SLOWPREC | REG_KUKLEWICZ))) {
         T3("((a?){1,1000})*", "aaaa", 0,4, 0,4, 3,4);
 
-        T8("(((((aa)|((a?)*))*){0,10}){0,10}){0,10}", "",       0,0, 0,0, 0,0, 0,0, 0,0, -1,-1, 0,0, 0,0);
-        T8("(((((aa)|((a?)*))*){0,10}){0,10}){0,10}", "aaa",    0,3, 0,3, 0,3, 0,3, 0,3, -1,-1, 0,3, 2,3);
-        T8("(((((aa)|((a?)*))*){0,10}){0,10}){0,10}", "aaaaa",  0,5, 0,5, 0,5, 0,5, 0,5, -1,-1, 0,5, 4,5);
+        T8("(((((aa)|((a?)*))*){0,10}){0,10}){0,10}", "", 0,0, 0,0, 0,0, 0,0, 0,0, -1,-1, 0,0, 0,0);
+        if (!((flags & REG_BACKWARD) && !(flags & REG_GTOP))) {
+            // expected failures for Cox algorithm
+            T8("(((((aa)|((a?)*))*){0,10}){0,10}){0,10}", "aaa", 0,3, 0,3, 0,3, 0,3, 0,3, -1,-1, 0,3, 2,3);
+            T8("(((((aa)|((a?)*))*){0,10}){0,10}){0,10}", "aaaaa", 0,5, 0,5, 0,5, 0,5, 0,5, -1,-1, 0,5, 4,5);
+        }
     }
 
     T6("((((a?)+)|(aa))+)", "aaa", 0,3, 0,3, 0,3, 0,3, 2,3, -1,-1);
@@ -1055,10 +1063,8 @@ static int test_all_leftmost(int flags)
 #undef T9
 #undef T10
 
-int main(int argc, char **argv)
+int main()
 {
-    const bool backwards = argc > 1 && strcmp(argv[1], "--backwards") == 0;
-
     int e = 0;
 
     e |= test_all_posix(0);
@@ -1077,10 +1083,8 @@ int main(int argc, char **argv)
     e |= test_all_leftmost(REG_NFA | REG_LEFTMOST);
     e |= test_all_leftmost(REG_NFA | REG_LEFTMOST | REG_TRIE);
 
-    if (backwards) {
-        e |= test_all_posix(REG_NFA | REG_BACKWARD);
-        e |= test_all_posix(REG_NFA | REG_BACKWARD | REG_GTOP);
-    }
+    e |= test_all_posix(REG_NFA | REG_BACKWARD);
+    e |= test_all_posix(REG_NFA | REG_BACKWARD | REG_GTOP);
 
     return e;
 }
diff --git a/lib/test_fail_back_gor1 b/lib/test_fail_back_gor1
deleted file mode 100644 (file)
index d9800db..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-NFA: incorrect submatch for RE (aaaa|aaa|a){3,4} and string aaaaaaaaaa:
-       pmatch[1].rm_so = 7 (expected 9)
-       pmatch[1].rm_eo = 10 (expected 10)
-failed 1 of 3
-NFA: incorrect submatch for RE (aaaaaa|aaaaa|aaaa|aa|a){3,4} and string aaaaaaaaaaaaaaa:
-       pmatch[1].rm_so = 11 (expected 14)
-       pmatch[1].rm_eo = 15 (expected 15)
-failed 2 of 4
-NFA: incorrect submatch for RE (aaaaa?a?|aa?){1,4} and string aaaaaaaaaaaaaaa:
-       pmatch[1].rm_so = 11 (expected 14)
-       pmatch[1].rm_eo = 15 (expected 15)
-failed 3 of 5
-NFA: incorrect submatch for RE (((a){3,4}a?)()a|aa?){1,4} and string aaaaaaaaaaaaaaa:
-       pmatch[1].rm_so = 11 (expected 14)
-       pmatch[1].rm_eo = 15 (expected 15)
-failed 4 of 6
-NFA: incorrect submatch for RE (((aaaa?|a?)){1,4})+ and string aaaaaaaaaa:
-       pmatch[2].rm_so = 7 (expected 9)
-       pmatch[2].rm_eo = 10 (expected 10)
-failed 5 of 7
-NFA: incorrect submatch for RE ((((a){2,3}(()|a)(()|a?)a|a?)){2,5})* and string aaaaaaaaaaaaaa:
-       pmatch[2].rm_so = 14 (expected 13)
-       pmatch[2].rm_eo = 14 (expected 14)
-failed 6 of 9
-NFA: incorrect submatch for RE ((a?|a?(a?a?)((())+)+))* and string aaaaaa:
-       pmatch[1].rm_so = 4 (expected 3)
-       pmatch[1].rm_eo = 6 (expected 6)
-failed 7 of 17
-NFA: incorrect submatch for RE ((a?)|(b?)){2,3} and string ab:
-       pmatch[1].rm_so = 2 (expected 1)
-       pmatch[1].rm_eo = 2 (expected 2)
-failed 8 of 58
-NFA: incorrect submatch for RE (((((aa)|((a?)*))*){0,10}){0,10}){0,10} and string aaa:
-       pmatch[2].rm_so = 3 (expected 0)
-       pmatch[2].rm_eo = 3 (expected 3)
-failed 9 of 467
-NFA: incorrect submatch for RE (((((aa)|((a?)*))*){0,10}){0,10}){0,10} and string aaaaa:
-       pmatch[3].rm_so = 5 (expected 0)
-       pmatch[3].rm_eo = 5 (expected 5)
-failed 10 of 468
diff --git a/lib/test_fail_back_gtop b/lib/test_fail_back_gtop
deleted file mode 100644 (file)
index 7f34d7c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-NFA: incorrect submatch for RE (aaaa|aaa|a){3,4} and string aaaaaaaaaa:
-       pmatch[1].rm_so = 7 (expected 9)
-       pmatch[1].rm_eo = 10 (expected 10)
-failed 1 of 3
-NFA: incorrect submatch for RE (aaaaaa|aaaaa|aaaa|aa|a){3,4} and string aaaaaaaaaaaaaaa:
-       pmatch[1].rm_so = 11 (expected 14)
-       pmatch[1].rm_eo = 15 (expected 15)
-failed 2 of 4
-NFA: incorrect submatch for RE (aaaaa?a?|aa?){1,4} and string aaaaaaaaaaaaaaa:
-       pmatch[1].rm_so = 11 (expected 14)
-       pmatch[1].rm_eo = 15 (expected 15)
-failed 3 of 5
-NFA: incorrect submatch for RE (((a){3,4}a?)()a|aa?){1,4} and string aaaaaaaaaaaaaaa:
-       pmatch[1].rm_so = 11 (expected 14)
-       pmatch[1].rm_eo = 15 (expected 15)
-failed 4 of 6
-NFA: incorrect submatch for RE (((aaaa?|a?)){1,4})+ and string aaaaaaaaaa:
-       pmatch[2].rm_so = 7 (expected 9)
-       pmatch[2].rm_eo = 10 (expected 10)
-failed 5 of 7
-NFA: incorrect submatch for RE (((((a){3,3}a?|a?)){0,4})?)* and string aaaaaaaaaa:
-       pmatch[3].rm_so = 7 (expected 9)
-       pmatch[3].rm_eo = 10 (expected 10)
-failed 6 of 8
-NFA: incorrect submatch for RE ((((a){2,3}(()|a)(()|a?)a|a?)){2,5})* and string aaaaaaaaaaaaaa:
-       pmatch[2].rm_so = 11 (expected 13)
-       pmatch[2].rm_eo = 14 (expected 14)
-failed 7 of 9
-NFA: incorrect submatch for RE (((((a){3,4}|a?)){1,4}|((a)+(a|())){1,2}))* and string aaaaaaaaaa:
-       pmatch[3].rm_so = 7 (expected 9)
-       pmatch[3].rm_eo = 10 (expected 10)
-failed 8 of 10