From e81145094debafffe93b18d8c0cddf9c68238d93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benno=20F=C3=BCnfst=C3=BCck?= Date: Wed, 13 Aug 2014 23:30:24 +0200 Subject: [PATCH] tests for parsing of lambda args (patterns, ...) --- tests/ParserTests.hs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/ParserTests.hs b/tests/ParserTests.hs index 4561cee..f172c96 100644 --- a/tests/ParserTests.hs +++ b/tests/ParserTests.hs @@ -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