Files
prototype-r7rs-expander/test/unhygienic_test.clj
T
2026-09-18 08:12:08 -06:00

31 lines
832 B
Clojure

(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 ...) ...)))