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")