diff options
Diffstat (limited to 'test/Spec.hs')
| -rw-r--r-- | test/Spec.hs | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/test/Spec.hs b/test/Spec.hs index 458cc35..6e9104e 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -11,25 +11,31 @@ import Utils import TestUtils tokenizeTests = testGroup "tokenize" [ - do got <- expectSuccessL $ tokenize "(+ 1 (- 10 5))" + do got <- expectSuccessL $ tokenize "<test>" "(+ 1 (- 10 5))" let expected = ["(", "+", "1", "(", "-", "10", "5", ")", ")"] - assertEqual "" got expected + assertEqual "" (map tokenContent got) expected ] parseTests = testGroup "parse" [ - do got <- expectSuccessL $ parse ["(", "+", "1", "2", ")"] - let expected = [ASTFunctionCall [ASTSymbol "+", ASTInteger 1, ASTInteger 2]] + do got <- expectSuccessL $ parse (map makeNonsenseToken ["(", "+", "1", "2", ")"]) + let expected = [wrapAST $ ASTFunctionCall + [ wrapAST $ ASTSymbol "+", + wrapAST $ ASTInteger 1, + wrapAST $ ASTInteger 2 ]] assertEqual "" got expected - , do got <- expectErrorL $ parse ["(", "+", "1", "2"] + , do got <- expectErrorL $ parse (map makeNonsenseToken ["(", "+", "1", "2"]) let expected = "unbalanced function call" assertEqual "" got expected ] evaluateTests = testGroup "evaluate" [ do let env = M.fromList [builtinAdd2] :: Env - (gotEnv, gotAST) <- expectSuccessL $ evaluate env (ASTFunctionCall [ASTSymbol "+", ASTInteger 1, ASTInteger 2]) - let expectedAST = ASTInteger 3 + (gotEnv, gotAST) <- expectSuccessL $ evaluate env (wrapAST $ ASTFunctionCall + [wrapAST $ ASTSymbol "+", + wrapAST $ ASTInteger 1, + wrapAST $ ASTInteger 2]) + let expectedAST = wrapAST $ ASTInteger 3 assertEqual "" gotAST expectedAST assertEqual "" (M.keys gotEnv) (M.keys env) ] @@ -37,10 +43,10 @@ evaluateTests = testGroup "evaluate" [ e2eTests = testGroup "e2e" [ do let env = M.fromList [builtinSubtract2] :: Env let script1 = "(let sub2 (\\[a b] (- a b)))\n(sub2 3 2)" - (gotEnv, gotASTs) <- expectSuccessL $ runInlineScript env script1 + (gotEnv, gotASTs) <- expectSuccessL $ runInlineScript "<test>" env script1 let expectedEnvKeys = ["-", "sub2"] assertEqual "" (M.keys gotEnv) expectedEnvKeys - assertEqual "" (last gotASTs) (ASTInteger 1) + assertEqual "" (last gotASTs) (wrapAST $ ASTInteger 1) ] testGroup label xs = TestLabel label $ TestList $ map TestCase xs |
