28 lines
639 B
Haskell
28 lines
639 B
Haskell
module Gyehoek.Test.Scheme.Syntax (root) where
|
|
|
|
import Test.Tasty (TestTree, testGroup)
|
|
import Test.Tasty.HUnit
|
|
import Language.SexpGrammar ()
|
|
import Gyehoek.Scheme.Syntax (scm)
|
|
import Gyehoek.Scheme.Syntax qualified as Sut
|
|
|
|
|
|
root :: IO TestTree
|
|
root = pure . testGroup "scheme syntax" $
|
|
[ freeTree
|
|
]
|
|
|
|
freeTree :: TestTree
|
|
freeTree = testGroup "free"
|
|
[ testCase "lambda" do
|
|
Sut.free' [scm|
|
|
(lambda (x y z k) (f x b a))
|
|
|] @=? ["f","b","a"]
|
|
, testCase "exp" do
|
|
Sut.free' [scm|
|
|
(letrec ((x (lambda (r) (f a y)))
|
|
(y (lambda (r b) (f b x))))
|
|
(g x y z))
|
|
|] @=? ["f","a","g","z"]
|
|
]
|