aboutsummaryrefslogtreecommitdiffstats
path: root/test/Spec.hs
diff options
context:
space:
mode:
Diffstat (limited to 'test/Spec.hs')
-rw-r--r--test/Spec.hs21
1 files changed, 16 insertions, 5 deletions
diff --git a/test/Spec.hs b/test/Spec.hs
index 9011aba..2a21d01 100644
--- a/test/Spec.hs
+++ b/test/Spec.hs
@@ -6,6 +6,7 @@ import Builtins
import Tokenizer ( tokenize )
import Parser ( parse )
import Evaluator ( evaluate )
+import Lib ( runInlineScript )
import Utils
import TestUtils
@@ -18,8 +19,9 @@ tokenizeTests = TestLabel "tokenize" $ TestList $ map TestCase [
parseTests = TestLabel "parse" $ TestList $ map TestCase [
do got <- expectSuccessL $ parse ["(", "+", "1", "2", ")"]
let expected = [ASTFunctionCall [ASTSymbol "+", ASTInteger 1, ASTInteger 2]]
- assertEqual "" got expected,
- do got <- expectErrorL $ parse ["(", "+", "1", "2"]
+ assertEqual "" got expected
+
+ , do got <- expectErrorL $ parse ["(", "+", "1", "2"]
let expected = "unbalanced function call"
assertEqual "" got expected
]
@@ -32,10 +34,19 @@ evaluateTests = TestLabel "evaluate" $ TestList $ map TestCase [
assertEqual "" (M.keys gotEnv) (M.keys env)
]
+e2eTests = TestLabel "e2e" $ TestList $ map TestCase [
+ do let env = M.fromList [("-", builtinSubtract2)] :: Env
+ let script = "(let sub2 (\\[a b] (- a b)))"
+ gotEnv <- expectSuccessL $ runInlineScript env script
+ let expectedEnvKeys = ["-", "sub2"]
+ assertEqual "" (M.keys gotEnv) expectedEnvKeys
+ ]
+
tests = [
- tokenizeTests,
- parseTests,
- evaluateTests
+ tokenizeTests
+ , parseTests
+ , evaluateTests
+ , e2eTests
]
main :: IO ()