diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2022-09-26 11:35:17 +0300 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-05 14:21:53 +0200 |
| commit | 73ae65e04f7c41dd676d3cbaf3885553352f688c (patch) | |
| tree | 4f59a4a6163e9948b8fffd06fc70fc3fba090960 | |
| parent | 158b202ba113914a8aa1fc7a8a410d98bfb18f5b (diff) | |
Add e2e tests
| -rw-r--r-- | app/Main.hs | 2 | ||||
| -rw-r--r-- | test/Spec.hs | 21 | ||||
| -rw-r--r-- | test/TestUtils.hs | 8 |
3 files changed, 20 insertions, 11 deletions
diff --git a/app/Main.hs b/app/Main.hs index 4f69776..f546eae 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -1,7 +1,6 @@ module Main (main) where import System.Environment import Control.Monad.Except -import Control.Monad.Reader import System.Console.Haskeline import Utils import Builtins @@ -64,4 +63,5 @@ main = do putStrLn $ "Lang REPL" putStrLn $ "Use CTRL+D to exit" runInputT defaultSettings (repl config builtinEnv) + return () 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 () diff --git a/test/TestUtils.hs b/test/TestUtils.hs index 676df1d..ad31c78 100644 --- a/test/TestUtils.hs +++ b/test/TestUtils.hs @@ -1,19 +1,17 @@ {-# OPTIONS_GHC -Wno-missing-export-lists #-} module TestUtils where -import Control.Monad.Except -import Control.Monad.Reader import Utils -initialConfig :: Config -initialConfig = Config { +testConfig :: Config +testConfig = Config { configScriptFileName = Nothing, configVerboseMode = False, configShowHelp = False } testRunL :: LContext a -> IO (Either LException a) -testRunL lc = runExceptT $ runReaderT lc initialConfig +testRunL = runL testConfig expectSuccessL :: LContext a -> IO a expectSuccessL lc = |
