on master help sign in
tests
32efcfatechtangents
elm/testReplnew file+5
@@ -0,0 +1,5 @@
1+#!/bin/sh
2+
3+here=`cd \`dirname $0\` && pwd`
4+cd "$here/tests" &&
5+ghci
elm/tests/Main.hs+22−5
@@ -10,6 +10,7 @@ import Text.InterpolatedString.Perl6 (qq)
10import Parse.Parser
10import Parse.Parser
11import Util.Arbs
11import Util.Arbs
12
12
13+import Debug.Trace
13
14
14main :: IO ()
15main :: IO ()
15main = defaultMain tests
16main = defaultMain tests
@@ -17,6 +18,7 @@ main = defaultMain tests
17parses :: String -> Bool
18parses :: String -> Bool
18parses code = either (const False) (const True) (parseProgram code)
19parses code = either (const False) (const True) (parseProgram code)
19
20
21+parseFails :: String -> Bool
20parseFails = not . parses
22parseFails = not . parses
21
23
22tests :: [TF.Test]
24tests :: [TF.Test]
@@ -24,14 +26,29 @@ tests = [
24 testGroup "String Assignments" [
26 testGroup "String Assignments" [
25 testProperty "prop_assignString" prop_assignString
27 testProperty "prop_assignString" prop_assignString
26 , testProperty "prop_invalidIdent" prop_invalidIdent
28 , testProperty "prop_invalidIdent" prop_invalidIdent
29+ , testProperty "prop_emptyList" prop_emptyList
30+ , testProperty "prop_record" prop_record
27 ]
31 ]
28 ]
32 ]
29
33
30prop_assignString :: ValidIdent -> StringLiteral -> Bool
34prop_assignString :: ValidIdent -> StringLiteral -> Bool
31−prop_assignString i s =
35+prop_assignString i s = parses [qq|
32− parses [qq|{i} = {s}|]
36+{i} = {s}
37+|]
33
38
34prop_invalidIdent :: ValidIdent -> InvalidIdentChar -> StringLiteral -> Bool
39prop_invalidIdent :: ValidIdent -> InvalidIdentChar -> StringLiteral -> Bool
35−prop_invalidIdent i z s =
40+prop_invalidIdent i z s = parseFails [qq|
36− parseFails [qq|{i}{z} = {s}|]
41+{i}{z} = {s}
37−
42+|]
43+
44+prop_emptyList :: ValidIdent -> Bool
45+prop_emptyList i = parses [qq|
46+{i}=[]
47+|]
48+
49+prop_record :: ValidIdent -> ValidIdent -> ValidIdent -> ValidIdent -> StringLiteral -> Bool
50+prop_record a b c k v = parses [qq|
51+{a} = \{{k} = {v} \}
52+{b} = .{k} {a}
53+{c} = {a}.{k}
54+|]
elm/tests/Util/Arbs.hs+10
@@ -33,3 +33,13 @@ instance ShowQ InvalidIdentChar where
33
33
34instance Arbitrary InvalidIdentChar where
34instance Arbitrary InvalidIdentChar where
35 arbitrary = InvalidIdentChar <$> elements "!@#$%^&*()-=+\\|/?.>,<`~"
35 arbitrary = InvalidIdentChar <$> elements "!@#$%^&*()-=+\\|/?.>,<`~"
36+
37+
38+newtype BuiltinType = BuiltinType String deriving (Eq, Show)
39+
40+instance ShowQ BuiltinType where
41+ showQ (BuiltinType v) = v
42+
43+instance Arbitrary BuiltinType where
44+ -- TODO: add others
45+ arbitrary = BuiltinType <$> elements ["Char", "String"]