aboutsummaryrefslogtreecommitdiff
path: root/tests/reader.lisp
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2023-03-16 12:00:35 -0700
committerSean Whitton <spwhitton@spwhitton.name>2023-03-16 19:05:06 -0700
commit23497607bf7ec831dd57bf06bf6cd802c3ec6b8a (patch)
treecb92d5897434af338d9bd1cceb255ff1bb9fca69 /tests/reader.lisp
parent8fa41a15f184660ab5bda5f86d645ba9b2582389 (diff)
downloadconsfigurator-23497607bf7ec831dd57bf06bf6cd802c3ec6b8a.tar.gz
new reader macros for shell- and Perl-style matching & replacement
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'tests/reader.lisp')
-rw-r--r--tests/reader.lisp74
1 files changed, 74 insertions, 0 deletions
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)