This commit is contained in:
msyds committed 2026-09-16 12:08:33 -06:00
1 parent 0f1287b760
commit da4f03d2ac
3 files changed
+1808 -13

No files matched your search

+59 -2
View File
@@ -18,9 +18,66 @@
(sut/nearest ['x #{0 1 2}]
[#{0} #{0 1} #{0 3}]))))
(t/deftest parse-pattern-test
(t/testing "list"
(t/are [l e t x] (= [l e t]
((juxt :leading :ellipsis :trailing)
(sut/parse-pattern x)))
nil nil nil '()
'(a) nil nil '(a)
'(a b) nil nil '(a b)
'(a) 'b nil '(a b ...)
'(a) 'b '(c) '(a b ... c)
'(a) 'b '(c d) '(a b ... c d)))
(t/testing "simple data"
(t/is (= 'a (sut/parse-pattern 'a)))))
(t/deftest expand-test
(t/testing "unbound symbol"
(t/is (thrown? Exception (sut/expand 'x))))
(t/testing "identity fn"
(t/testing "lambda"
(t/is (= '(lambda (x) x)
(sut/expand '(λ (x) x))))))
(sut/expand '(λ (x) x)))))
(t/testing "let"
(t/is (= '(let ((x 123)
(y 456))
(+ x y))
(sut/expand
'(let ((x 123)
(y 456))
(+ x y))))))
(t/testing "application"
(t/is (= '(lambda (f x) (f x))
(sut/expand '(lambda (f x) (f x)))))))
(t/deftest prim-lambda-spec
(t/is (s/valid? ::sut/prim-lambda '(lambda (x) x)))
(t/is (s/valid? ::sut/prim-lambda '(lambda (x) (display x) (newline)))))
(t/deftest prim-let-spec
(t/is (s/valid? ::sut/prim-let '(let ((x 123)
(y 456))
(+ x y)))))
(t/deftest prim-let-syntax-spec
(t/is (s/valid? ::sut/prim-let-syntax
'(let-syntax ((m (syntax-rules ()
((m) 123))))
(m)))))
(t/deftest template-spec
(t/is (s/valid? ::sut/template '(x ... y)))
(t/is (s/valid? ::sut/template 123))
(t/is (s/valid? ::sut/template '(x y ... z ... a b c))))
(t/deftest pattern-spec
(t/is (s/valid? ::sut/pattern '(m))))
(t/deftest rule-spec
(t/is (s/valid? ::sut/rule '((m) 123))))
(t/deftest prim-syntax-rules-spec
(t/is (s/valid? ::sut/prim-syntax-rules
'(syntax-rules
()
((m) 123)))))