19 lines
645 B
Haskell
19 lines
645 B
Haskell
module NicetiesSpec (spec) where
|
|
|
|
import Bruijn (toDeBruijn)
|
|
import Niceties (findKnown, replaceKnowns)
|
|
import Parser (Expr (Abstraction, Application, Variable))
|
|
import Test.Hspec
|
|
|
|
spec :: Spec
|
|
spec = do
|
|
describe "can find knowns" $ do
|
|
it "can find identity" $
|
|
findKnown identity `shouldBe` Just "I"
|
|
describe "replaceKnowns" $ do
|
|
it "can replace identity" $
|
|
replaceKnowns identity `shouldBe` Variable "I"
|
|
it "can replace identity of identity" $
|
|
replaceKnowns (Application identity identity) `shouldBe` Application (Variable "I") (Variable "I")
|
|
where
|
|
identity = toDeBruijn $ Abstraction "x" (Variable "x")
|