Files
prototype-r7rs-expander/test/expand_test.clj
T
2026-09-16 06:28:21 -06:00

27 lines
837 B
Clojure

(ns expand-test
(:require [expand :as sut]
[clojure.test :as t]
[clojure.spec.alpha :as s]))
(t/deftest scheme-base-env-test
(t/is (s/valid? ::sut/environment sut/scheme-base-env)))
(t/deftest symtable-for-env-test
(t/is (s/valid? ::sut/symtable (sut/symtable-for-env sut/scheme-base-env))))
(t/deftest nearest-test
(t/is (= [:primitive 'lambda]
(sut/lookup ['lambda #{}]
sut/scheme-base-env
(sut/symtable-for-env sut/scheme-base-env))))
(t/is (= [#{0 1}]
(sut/nearest ['x #{0 1 2}]
[#{0} #{0 1} #{0 3}]))))
(t/deftest expand-test
(t/testing "unbound symbol"
(t/is (thrown? Exception (sut/expand 'x))))
(t/testing "identity fn"
(t/is (= '(lambda (x) x)
(sut/expand '(λ (x) x))))))