@@ -1,54 +0,0 @@
1−{-# LANGUAGE GeneralizedNewtypeDeriving, TypeSynonymInstances, FlexibleInstances, QuasiQuotes, ExtendedDefaultRules #-}
2−
3−
4−module Main where
5−
6−import Test.Framework as TF (defaultMain, testGroup, Test)
7−import Test.Framework.Providers.QuickCheck2 (testProperty)
8−
9−import Text.InterpolatedString.Perl6 (qq)
10−import Parse.Parser
11−import Util.Arbs
12−
13−import Debug.Trace
14−
15−main :: IO ()
16−main = defaultMain tests
17−
18−parses :: String -> Bool
19−parses code = either (const False) (const True) (parseProgram code)
20−
21−parseFails :: String -> Bool
22−parseFails = not . parses
23−
24−tests :: [TF.Test]
25−tests = [
26− testGroup "String Assignments" [
27− testProperty "prop_assignString" prop_assignString
28− , testProperty "prop_invalidIdent" prop_invalidIdent
29− , testProperty "prop_emptyList" prop_emptyList
30− , testProperty "prop_record" prop_record
31− ]
32− ]
33−
34−prop_assignString :: ValidIdent -> StringLiteral -> Bool
35−prop_assignString i s = parses [qq|
36−{i} = {s}
37−|]
38−
39−prop_invalidIdent :: ValidIdent -> InvalidIdentChar -> StringLiteral -> Bool
40−prop_invalidIdent i z s = parseFails [qq|
41−{i}{z} = {s}
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−|]