From 23497607bf7ec831dd57bf06bf6cd802c3ec6b8a Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Thu, 16 Mar 2023 12:00:35 -0700 Subject: new reader macros for shell- and Perl-style matching & replacement Signed-off-by: Sean Whitton --- tests/reader.lisp | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) (limited to 'tests/reader.lisp') diff --git a/tests/reader.lisp b/tests/reader.lisp index a56c6c0..1383196 100644 --- a/tests/reader.lisp +++ b/tests/reader.lisp @@ -34,3 +34,77 @@ blah "line 1 line 2 ") + +(deftest perl-tilde-reader.1 + (#~/bar/ "foo bar ") + "bar") + +(deftest perl-tilde-reader.2 + (#~/(f.*) (bar)/ "foo bar ") + #("foo" "bar")) + +(deftest perl-tilde-reader.3 + (#0~/(f.*) (bar)/ "foo bar ") + "foo bar" #("foo" "bar")) + +(deftest perl-tilde-reader.4 + (#2~/(f.*) (bar)/ "foo bar ") + "bar" #("foo" "bar")) + +(deftest perl-tilde-reader.5 + (#!~/bar/ "foo") + t) + +(deftest perl-tilde-reader.6 + (handler-case (read-from-string "(#!/bar/ \"foo\")") + (simple-reader-error (err) + (format nil (simple-condition-format-control err)))) + "Expected \"~\" following \"!\".") + +(deftest perl-tilde-reader.7 + (#~/\w{2}/g "aa bb cc") + ("aa" "bb" "cc")) + +(deftest perl-tilde-reader.8 + (mapcar #~s/foo/bar/ '("foo" "bar")) + ("bar" "bar")) + +(deftest perl-tilde-reader.9 + (#~s/${(+ 1 1)}/${(+ 2 2)}/ "2") + "4" t) + +(deftest perl-tilde-reader.10 + (#~s/\w/\w/ "a") + "w" t) + +(deftest perl-tilde-reader.11 + (#~s/foo/bar/ "foo foo foo") + "bar foo foo" t) + +(deftest perl-tilde-reader.12 + (#~s/foo/bar/g "foo foo foo") + "bar bar bar" t) + +(deftest perl-tilde-reader.13 + (#~s/ \s\w d \w\s /!/ix "aDa bDa cDa") + "aDa!cDa" t) + +(deftest perl-tilde-reader.14 + (#~s[^(\d) ]{`\1` } "4 foo") + "`4` foo" t) + +(deftest perl-tilde-reader.15 + (#~s(\d)((\&\)\()) " 4 ") + " (4)() " t) + +(deftest perl-tilde-reader.16 + (#~s/foo/#bar#/ "foo") + "#bar#" t) + +(deftest perl-tilde-reader.17 + (#~s#foo#\#bar\## "foo") + "#bar#" t) + +(deftest perl-tilde-reader.18 + (#~s'foo'${bar}' "foo") + "${bar}" t) -- cgit v1.2.3