home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #1 / MONSTER.ISO / prog / gen / regex011.taz / regex011 / regex-0.11 / test / psx-interv.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-06-28  |  6.2 KB  |  141 lines

  1. /* psx-interv.c: test POSIX intervals, both basic and extended.  */
  2.  
  3. #include "test.h"
  4.  
  5. void
  6. test_intervals ()
  7. {
  8.   printf ("\nStarting POSIX interval tests.\n");
  9.  
  10.   test_should_match = true;
  11.                                                 /* Valid intervals.  */
  12.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a{1,2}b)*")), "abaab");
  13.   test_fastmap (BRACES_TO_OPS (PARENS_TO_OPS ("(a{1,2}b)*")), "a", 0, 0);
  14.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a{1,2}b)*")),
  15.                   "abaab", 0, 5, 2, 5, -1, -1);
  16.  
  17.   test_match (BRACES_TO_OPS ("a{0}"), "");
  18.   test_fastmap (BRACES_TO_OPS ("a{0}"), "", 0, 0);
  19.   TEST_REGISTERS (BRACES_TO_OPS ("a{0}"), "", 0, 0, -1, -1, -1, -1);
  20.   TEST_REGISTERS (BRACES_TO_OPS ("a{0}"), "x", 0, 0, -1, -1, -1, -1);
  21.  
  22.   test_match (BRACES_TO_OPS ("a{0,}"), "");
  23.   test_match (BRACES_TO_OPS ("a{0,}"), "a");
  24.   test_fastmap (BRACES_TO_OPS ("a{0,}"), "a", 0, 0);
  25.   TEST_REGISTERS (BRACES_TO_OPS ("a{0,}"), "a", 0, 1, -1, -1, -1, -1);
  26.   TEST_REGISTERS (BRACES_TO_OPS ("a{0,}"), "xax", 0, 0, -1, -1, -1, -1);
  27.  
  28.   test_match (BRACES_TO_OPS ("a{1}"), "a");
  29.   test_match (BRACES_TO_OPS ("a{1,}"), "a");
  30.   test_match (BRACES_TO_OPS ("a{1,}"), "aa"); 
  31.   test_match (BRACES_TO_OPS ("a{0,0}"), "");
  32.   test_match (BRACES_TO_OPS ("a{0,1}"), "");
  33.   test_match (BRACES_TO_OPS ("a{0,1}"), "a"); 
  34.   test_match (BRACES_TO_OPS ("a{1,3}"), "a");
  35.   test_match (BRACES_TO_OPS ("a{1,3}"), "aa");
  36.   test_match (BRACES_TO_OPS ("a{1,3}"), "aaa");
  37.   TEST_REGISTERS (BRACES_TO_OPS ("a{1,3}"), "aaa", 0, 3, -1, -1, -1, -1);
  38.   TEST_REGISTERS (BRACES_TO_OPS ("a{1,3}"), "xaaax", 1, 4, -1, -1, -1, -1);
  39.  
  40.   test_match (BRACES_TO_OPS ("a{0,3}b"), "b");
  41.   test_match (BRACES_TO_OPS ("a{0,3}b"), "aaab");
  42.   test_fastmap (BRACES_TO_OPS ("a{0,3}b"), "ab", 0, 0);
  43.   TEST_REGISTERS (BRACES_TO_OPS ("a{0,3}b"), "b", 0, 1, -1, -1, -1, -1);
  44.   TEST_REGISTERS (BRACES_TO_OPS ("a{0,3}b"), "xbx", 1, 2, -1, -1, -1, -1);
  45.  
  46.   test_match (BRACES_TO_OPS ("a{1,3}b"), "ab");
  47.   test_match (BRACES_TO_OPS ("a{1,3}b"), "aaab");
  48.   test_match (BRACES_TO_OPS ("ab{1,3}c"), "abbbc");
  49.  
  50.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a){0,3}b")), "b");
  51.   test_fastmap (BRACES_TO_OPS (PARENS_TO_OPS ("(a){0,3}b")), "ab", 0, 0);
  52.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a){0,3}b")), "b", 0, 1, -1, -1, -1, -1);
  53.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a){0,3}b")), "ab", 0, 2, 0, 1, -1, -1);
  54.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a){0,3}b")), "xabx", 1, 3, 1, 2, -1, -1);
  55.  
  56.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a){1,3}b")), "ab");
  57.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a){1,3}b")), "aaab");
  58.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a){1,3}b")), "aaab", 0, 4, 2, 3, -1, -1);
  59.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a){1,3}b")), "xaaabx", 1, 5, 3, 4, -1, -1);
  60.  
  61.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){0,3}b")), "aaaab");
  62.   test_fastmap (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){0,3}b")), "ab", 0, 0);
  63.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){0,3}b")), "aaaab", 0, 5, 4, 4, -1, -1);
  64.  
  65.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){1,3}b")), "b");
  66.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){1,3}b")), "aaab");
  67.   test_fastmap (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){1,3}b")), "ab", 0, 0);
  68.  
  69.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){1,1}ab")), "aaaab");
  70.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){1,1}ab")), "aaaab", 0, 5, 0, 3, -1, -1);
  71.   
  72.   test_match (BRACES_TO_OPS (".{0,3}b"), "b");
  73.   test_match (BRACES_TO_OPS (".{0,3}b"), "ab");
  74.  
  75.   test_match (BRACES_TO_OPS ("[a]{0,3}b"), "b");
  76.   test_match (BRACES_TO_OPS ("[a]{0,3}b"), "aaab");
  77.   test_fastmap (BRACES_TO_OPS ("[a]{0,3}b"), "ab", 0, 0);
  78.   test_match (BRACES_TO_OPS ("[^a]{0,3}b"), "bcdb");
  79.   test_match (BRACES_TO_OPS ("ab{0,3}c"), "abbbc");
  80.   test_match (BRACES_TO_OPS ("[[:digit:]]{0,3}d"), "123d");
  81.   test_fastmap (BRACES_TO_OPS ("[[:digit:]]{0,3}d"), "0123456789d", 0, 0);
  82.  
  83.   test_match (BRACES_TO_OPS ("\\*{0,3}a"), "***a");
  84.   test_match (BRACES_TO_OPS (".{0,3}b"), "aaab");
  85.   test_match (BRACES_TO_OPS ("a{0,3}a"), "aaa");
  86.                         /* Backtracking.  */
  87.   test_fastmap (BRACES_TO_OPS (PARENS_TO_OPS ("(a{1,})*a")), "a", 0, 0);
  88.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a{1,})*a")), "a");
  89.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a{1,})*a")), "a", 0, 1, -1, -1, -1, -1);
  90.  
  91.   test_fastmap (BRACES_TO_OPS (PARENS_TO_OPS ("(a{2,})*aa")), "aa", 0, 0);
  92.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a{2,})*aa")), "aa");
  93.   TEST_REGISTERS (BRACES_TO_OPS (PARENS_TO_OPS ("(a{2,})*aa")), "aa", 0, 2, -1, -1, -1, -1);
  94.  
  95.   test_match (BRACES_TO_OPS ("a{2}*"), "");
  96.   test_match (BRACES_TO_OPS ("a{2}*"), "aa");
  97.  
  98.   test_match (BRACES_TO_OPS ("a{1}*"), "");
  99.   test_match (BRACES_TO_OPS ("a{1}*"), "a");
  100.   test_match (BRACES_TO_OPS ("a{1}*"), "aa");
  101.   
  102.   test_match (BRACES_TO_OPS ("a{1}{1}"), "a");
  103.  
  104.   test_match (BRACES_TO_OPS ("a{1}{1}{1}"), "a");
  105.   test_match (BRACES_TO_OPS ("a{1}{1}{2}"), "aa");
  106.  
  107.   test_match (BRACES_TO_OPS ("a{1}{1}*"), "");
  108.   test_match (BRACES_TO_OPS ("a{1}{1}*"), "a");
  109.   test_match (BRACES_TO_OPS ("a{1}{1}*"), "aa");
  110.   test_match (BRACES_TO_OPS ("a{1}{1}*"), "aaa");
  111.   
  112.   test_match (BRACES_TO_OPS ("a{1}{2}"), "aa");
  113.   test_match (BRACES_TO_OPS ("a{2}{1}"), "aa");
  114.  
  115.  
  116.   test_should_match = false;
  117.   
  118.   test_match (BRACES_TO_OPS ("a{0}"), "a");
  119.   test_match (BRACES_TO_OPS ("a{0,}"), "b");
  120.   test_match (BRACES_TO_OPS ("a{1}"), ""); 
  121.   test_match (BRACES_TO_OPS ("a{1}"), "aa");
  122.   test_match (BRACES_TO_OPS ("a{1,}"), "");
  123.   test_match (BRACES_TO_OPS ("a{1,}"), "b");
  124.   test_match (BRACES_TO_OPS ("a{0,0}"), "a"); 
  125.   test_match (BRACES_TO_OPS ("a{0,1}"), "aa");
  126.   test_match (BRACES_TO_OPS ("a{0,1}"), "b");
  127.   test_match (BRACES_TO_OPS ("a{1,3}"), ""); 
  128.   test_match (BRACES_TO_OPS ("a{1,3}"), "aaaa");
  129.   test_match (BRACES_TO_OPS ("a{1,3}"), "b"); 
  130.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a){1,3}b")), "aaaab");
  131.   test_match (BRACES_TO_OPS (PARENS_TO_OPS ("(a*){1,3}b")), "bb");
  132.   test_match (BRACES_TO_OPS ("[a]{0,3}"), "aaaa");
  133.   test_match (BRACES_TO_OPS ("[^a]{0,3}b"), "ab");
  134.   test_match (BRACES_TO_OPS ("ab{0,3}c"), "abababc");
  135.   test_match (BRACES_TO_OPS ("[:alpha:]{0,3}d"), "123d");
  136.   test_match (BRACES_TO_OPS ("\\^{1,3}a"), "a");
  137.   test_match (BRACES_TO_OPS (".{0,3}b"), "aaaab");
  138.  
  139.   printf ("\nFinished POSIX interval tests.\n");
  140. }
  141.