@@ -1,27 +1,14 @@
1−{-# LANGUAGE GeneralizedNewtypeDeriving, TypeSynonymInstances, FlexibleInstances #-}
1+{-# LANGUAGE GeneralizedNewtypeDeriving, TypeSynonymInstances, FlexibleInstances, QuasiQuotes, ExtendedDefaultRules #-}
22
3−module Main where
4−
5−import Control.Applicative
63
7−import Data.Maybe (listToMaybe, isJust)
8−import Data.Functor.Identity
9−import Data.Text
4+module Main where
105
116import Test.Framework as TF (defaultMain, testGroup, Test)
127import Test.Framework.Providers.QuickCheck2 (testProperty)
13−import Test.QuickCheck
14−import Test.QuickCheck.Property
15−
16−import Text.Regex
178
9+import Text.InterpolatedString.Perl6 (qq)
1810import Parse.Parser
19−
20−import Debug.Trace
21−
2211import Util.Arbs
23−import Util.CharGens
24−import Util.Stringable
2512
2613
2714main :: IO ()
@@ -33,18 +20,15 @@ parses code = either (const False) (const True) (parseProgram code)
3320tests :: [TF.Test]
3421tests = [
3522 testGroup "String Assignments" [
36− testProperty "prop_assignString" prop_assignString,
37− testProperty "prop_invalidIdent" prop_invalidIdent
23+ testProperty "prop_assignString" prop_assignString
24+ , testProperty "prop_invalidIdent" prop_invalidIdent
3825 ]
3926 ]
4027
41−-- TODO: variable whitespace?
4228prop_assignString :: ValidIdent -> StringValue -> Bool
43−prop_assignString vi sv =
44− parses $ vi +- " = \"" +- sv +- "\""
45−
29+prop_assignString i s =
30+ parses [qq|{i} = "{s}"|]
4631
4732prop_invalidIdent :: ValidIdent -> InvalidIdentChar -> StringValue -> Bool
48−prop_invalidIdent vi i s =
49− (not . parses) $ vi +- i +- " = \"" +- s +- "\""
50−
33+prop_invalidIdent i z s =
34+ (not . parses) [qq|{i}{z} = "{s}"|]