diff --git a/scsh/test/pattern-matching-test.scm b/scsh/test/pattern-matching-test.scm index 226fb86..d00b54f 100644 --- a/scsh/test/pattern-matching-test.scm +++ b/scsh/test/pattern-matching-test.scm @@ -496,7 +496,13 @@ (match:substring (string-match (uncase (rx "foo")) "FoO"))))) -;; XXX no idea how to test simplify-regexp +(add-test! 'simplify-regexp-test 'pattern-matching + (lambda () + (and (re-dsm? (rx (: (** 0 0 (submatch "apple")) + (submatch "bar")))) + (= 2 + (re-dsm:tsm (rx (: (** 0 0 (submatch "apple")) + (submatch "bar")))))))) @@ -533,3 +539,59 @@ ; (re-repeat 1 #f (re-string "Sz")) ; (re-string "ilagyi"))))))) +(add-test! 'char-classes+algebra-test 'pattern-matching + (lambda () + (and (matches-same-signs? (rx (| lower-case upper-case)) + (rx alphabetic)) + (matches-same-signs? (rx (- alphabetic lower-case)) + (rx upper-case)) + (matches-same-signs? (rx (- alphabetic upper-case)) + (rx lower-case)) + (matches-same-signs? (rx (& upper-case alphanumeric)) + (rx upper-case)) + (matches-same-signs? (rx (| upper-case lower-case numeric)) + (rx alphanumeric)) + (matches-same-signs? (rx (~ (& alphanumeric lower-case) + graphic + (| upper-case numeric))) + (rx (- any + alphanumeric + graphic))) + (matches-same-signs? (rx (/ "azAZ09")) + (rx alphanumeric)) + (matches-same-signs? (rx (~ (| (/ "az") (/ "AZ") (/ "09")))) + (rx (- any alphanumeric))) + (matches-same-signs? (rx (& (/ "az09") + (/ "AZ09"))) + (rx numeric))))) + +(add-test! 'different-ways-test 'pattern-matching + (lambda () + (and (eq-match? (string-match (rx "abcde") "xxxabcdexxx") + (string-match (rx (: "a" "b" "c" "d" "e")) "xxxabcdexxx")) + (eq-match? (string-match (rx "abcde") "xxxabcdexxx") + (string-match (rx (: "a" (: "b" (: "c" (: "d" "e"))))) "xxxabcdexxx")) + (eq-match? (string-match (rx "abcde") "xxxabcdexxx") + (string-match (rx (: "ab" "c" (: "d" "e"))) "xxxabcdexxx")) + (eq-match? (string-match (rx "abcde") "xxxabcdexxx") + (string-match (rx (: "a" "b" "cde")) "xxxabcdexxx")) + (eq-match? (string-match (rx "abcde") "xxxabcdexxx") + (string-match (rx (: (: (: "a" "b") "c") (: "d" "e"))) "xxxabcdexxx")) + (eq-match? (string-match (rx "xxx" (* alphabetic) "xxx") "xxxabcdexxx") + (string-match (rx (+ "x") "abcde" (+ "x")) "xxxabcdexxx")) + (eq-match? (string-match (rx (: "x" (+ "x") (* "x")) + (: (? alphanumeric) + (? alphanumeric) + (? alphanumeric) + (? alphanumeric) + (? alphanumeric) + (? alphanumeric) + (? alphanumeric) + (? alphanumeric)) + "xxx") + "xxxabcdexxx") + (string-match (rx (: "xxx" (* (/ "ae")) (+ "x"))) "xxxabcdexxx")) + (eq-match? (string-match (rx "xxxabcdexxx") "xxxabcdexxx") + (string-match (rx (* alphanumeric)) "xxxabcdexxx")) + (eq-match? (string-match (rx (: "xxx" (: "abcde" "x" "xx"))) "xxxabcdexxx") + (string-match (rx (* (| (/ "ae") "x"))) "xxxabcdexxx")))))