summaryrefslogtreecommitdiff
path: root/lambda-calcul/haskell/test/Minilang/REPLSpec.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lambda-calcul/haskell/test/Minilang/REPLSpec.hs')
-rw-r--r--lambda-calcul/haskell/test/Minilang/REPLSpec.hs34
1 files changed, 8 insertions, 26 deletions
diff --git a/lambda-calcul/haskell/test/Minilang/REPLSpec.hs b/lambda-calcul/haskell/test/Minilang/REPLSpec.hs
index e134810..4eb3f4d 100644
--- a/lambda-calcul/haskell/test/Minilang/REPLSpec.hs
+++ b/lambda-calcul/haskell/test/Minilang/REPLSpec.hs
@@ -2,10 +2,7 @@ module Minilang.REPLSpec where
import Control.Exception (bracket)
import Data.Text.IO
-import Minilang.Lambda.Eval (Term (Var))
import Minilang.REPL
-import Minilang.REPL.Purer
-import Minilang.REPL.Types
import System.Directory (getTemporaryDirectory, removeFile)
import System.FilePath ((<.>), (</>))
import System.IO (IOMode (..), hClose, withFile)
@@ -19,16 +16,11 @@ spec = parallel $
it "evaluates MiniLang terms read from pure Monad" $ do
let out =
withInput
- [ "rec Nat : U = Sum (zero | succ Nat);",
- "id : Π A : U . Π _ : A . A = λ A . λ x . x;",
- "id Nat (succ (succ (succ zero)))"
- ]
+ ["((lam (x) x) y)"]
out
`shouldBe` [ "Bye!",
- "$succ $succ $succ $zero : Sum(zero| succ Nat)",
- "defined id : Π A : U . A → A",
- "defined Nat : U"
+ "y : b"
]
it "shows error when trying to load a non-existent file" $ do
@@ -41,7 +33,11 @@ spec = parallel $
it "evaluates single MiniLang term read from IO" $ \fileName -> do
let outputFileName = fileName <> ".out"
- writeFile fileName "rec Nat : U = Sum (zero | succ Nat);\nid : Π A : U . Π _ : A . A = λ A . λ x . x;\nid Nat (succ (succ (succ zero)))"
+ writeFile
+ fileName
+ "(let ((Succ (lam (n z s) (s n))) \
+ \ (Zero (lam (z s) z))) \
+ \ Zero)"
_ <- withFile fileName ReadMode $ \hin ->
withFile outputFileName AppendMode $ \hout ->
@@ -50,21 +46,7 @@ spec = parallel $
out <- readFile outputFileName
out
- `shouldBe` "\955\928> defined Nat : U\n\955\928> defined id : \928 A : U . A \8594 A\n\955\928> succ succ succ zero : Sum(zero| succ Nat)\n\955\928> Bye!\n"
-
- describe "Purer REPL" $ do
- it "keeps handling Inputs even when they fail" $ do
- let inputs =
- [ In "Unit : U",
- In "Unit : U = Sum(tt)",
- Com DumpEnv
- ]
-
- env (purerREPL (withInputs initialREPL inputs))
- `shouldBe` [("Unit", Var "x")]
-
- outputs (withInputs initialREPL inputs)
- `shouldContain` [Msg "cannot find \"Unit\" in empty context"]
+ `shouldBe` "\955\928> (lam (z s) z) : c -> d -> c\n\955\928> Bye!\n"
withTempFile :: (String -> IO ()) -> IO ()
withTempFile =