tests for parsing of lambda args (patterns, ...)

This commit is contained in:
Benno Fünfstück 2014-08-13 23:30:24 +02:00
parent 457d55e81a
commit e81145094d
1 changed files with 15 additions and 0 deletions

View File

@ -7,6 +7,8 @@ import Test.Tasty.HUnit
import Test.Tasty.TH
import Data.Text (pack)
import qualified Data.Map as Map
import Nix.Types
import Nix.Parser
@ -62,6 +64,19 @@ case_int_null_list = assertParseString "[1 2 3 null 4]" $ Fix (NList (map (Fix .
case_simple_lambda :: Assertion
case_simple_lambda = assertParseString "a: a" $ Fix (NAbs (Fix $ NArgs $ FormalName "a") (mkSym "a"))
case_lambda_pattern :: Assertion
case_lambda_pattern = do
assertParseString "{b, c ? 1}: b" $
Fix $ NAbs (Fix $ NArgs $ FormalSet args) (mkSym "b")
assertParseString "a@{b,c ? 1}: b" $
Fix $ NAbs (Fix $ NArgs $ FormalLeftAt "a" args) (mkSym "b")
assertParseString "{b,c?1}@a: c" $
Fix $ NAbs (Fix $ NArgs $ FormalRightAt args "a") (mkSym "c")
assertParseFail "a@b: a"
assertParseFail "{a}@{b}: a"
where
args = FormalParamSet $ Map.fromList [("b", Nothing), ("c", Just $ mkInt 1)]
case_lambda_app_int :: Assertion
case_lambda_app_int = assertParseString "(a: a) 3" $ Fix (NApp lam int) where
int = mkInt 3