diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2022-09-27 15:10:00 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-05 14:21:53 +0200 |
| commit | 0a56af62ffa95360587728b82c947a2936743a4c (patch) | |
| tree | 1083bbc78dc961382d0062c44ad9d251b11b5fd7 /test | |
| parent | 2952ecc005466775c9ac70a702da1bbad17a28e5 (diff) | |
Add src position to data structures
Diffstat (limited to 'test')
| -rw-r--r-- | test/Spec.hs | 24 | ||||
| -rw-r--r-- | test/TestUtils.hs | 3 |
2 files changed, 18 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 diff --git a/test/TestUtils.hs b/test/TestUtils.hs index 7247ef5..5206d27 100644 --- a/test/TestUtils.hs +++ b/test/TestUtils.hs @@ -28,3 +28,6 @@ expectErrorL lc = case res of Left (LException err) -> return err Right val -> error $ "unexpected success: " ++ show val + +wrapAST :: ASTNode -> AST +wrapAST node = AST { astNode = node } |
