blob: 4d6f6e082fbc860a9776aa7e23782e662a2ac2dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
module Minilang.Lambda.ParserSpec where
import Data.Text (Text, pack)
import Minilang.Lambda.Parser (AST (..), initialChars, parse, restChars)
import Test.Hspec (Spec, parallel, shouldBe)
import Test.Hspec.QuickCheck (prop)
import Test.QuickCheck (Arbitrary (..), elements, listOf)
spec :: Spec
spec = parallel $ do
prop "parses an identifier as a variable" $ \(Identifier ident) ->
parse ident `shouldBe` Right (Sym ident)
newtype Identifier = Identifier Text
deriving (Eq, Show)
instance Arbitrary Identifier where
arbitrary =
Identifier . pack
<$> ((:) <$> elements initialChars <*> listOf (elements restChars))
|