split out unhygienic toy model
This commit is contained in:
1 parent
d7d18472c9
commit
70ac846051
4 files changed
+136
-139
No files matched your search
@@ -104,30 +104,3 @@
|
||||
'(syntax-rules
|
||||
()
|
||||
((m) 123)))))
|
||||
|
||||
(t/deftest unify-test
|
||||
(t/are [result pattern datum] (= result (sut/unify pattern datum))
|
||||
{'a 123 'b 456} '(a b) '(123 456)
|
||||
nil '(a b) 123
|
||||
|
||||
'{b [:ellipsis ([:ellipsis (1 2)] [:ellipsis (3 4)])]}
|
||||
'((b ...) ...)
|
||||
'((1 2) (3 4))
|
||||
|
||||
{} '_ 123)
|
||||
(t/testing "non-matches"
|
||||
(t/are [pattern datum] (= nil (sut/unify pattern datum))
|
||||
'(a b c) '(1 2)
|
||||
'(a b c) '(1 2))))
|
||||
|
||||
(t/deftest transcribe-test
|
||||
(t/are [result datum pattern template]
|
||||
(= result (sut/transcribe (sut/unify pattern datum) template))
|
||||
'(1 a 2 b) '((1 2) (a b))
|
||||
'((x y) ...) '(x ... y ...)
|
||||
|
||||
'(1 2 3 4) '(1 2 3 4)
|
||||
'(x ...) '(x ...)
|
||||
|
||||
'(concat (1 2) (3 4) (5 6)) '((1 2) (3 4) (5 6))
|
||||
'((a ...) ...) '(concat (a ...) ...)))
|
||||
@@ -0,0 +1,30 @@
|
||||
(ns unhygienic-test
|
||||
(:require [unhygienic :as sut]
|
||||
[clojure.test :as t]))
|
||||
|
||||
(t/deftest unify-test
|
||||
(t/are [result pattern datum] (= result (sut/unify pattern datum))
|
||||
{'a 123 'b 456} '(a b) '(123 456)
|
||||
nil '(a b) 123
|
||||
|
||||
'{b [:ellipsis ([:ellipsis (1 2)] [:ellipsis (3 4)])]}
|
||||
'((b ...) ...)
|
||||
'((1 2) (3 4))
|
||||
|
||||
{} '_ 123)
|
||||
(t/testing "non-matches"
|
||||
(t/are [pattern datum] (= nil (sut/unify pattern datum))
|
||||
'(a b c) '(1 2)
|
||||
'(a b c) '(1 2))))
|
||||
|
||||
(t/deftest transcribe-test
|
||||
(t/are [result datum pattern template]
|
||||
(= result (sut/transcribe (sut/unify pattern datum) template))
|
||||
'(1 a 2 b) '((1 2) (a b))
|
||||
'((x y) ...) '(x ... y ...)
|
||||
|
||||
'(1 2 3 4) '(1 2 3 4)
|
||||
'(x ...) '(x ...)
|
||||
|
||||
'(concat (1 2) (3 4) (5 6)) '((1 2) (3 4) (5 6))
|
||||
'((a ...) ...) '(concat (a ...) ...)))
|
||||
Reference in new issue
Block a user