1module Test.Property where
3import Control.Applicative ((<*))
5import Test.Framework.Providers.HUnit
6import Test.Framework.Providers.QuickCheck2
7import Test.HUnit (assert)
9import Text.Parsec.Combinator (eof)
10import Text.PrettyPrint as P
12import AST.Literal as Lit
13import qualified AST.Pattern as P
14import qualified AST.Variable as V
15import Reporting.PrettyPrint (Pretty, pretty)
16import Parse.Helpers (IParser, iParse)
17import Parse.Literal (literal)
18import qualified Parse.Pattern as Pat (expr)
19import qualified Parse.Type as Type (expr)
20import Test.Property.Arbitrary
25 testGroup "Parse/Print Agreement Tests"
26 [ testCase "Long Pattern test" $ assert (prop_parse_print Pat.expr longPat)
27 , testProperty "Literal test" $ prop_parse_print literal
28 , testProperty "Pattern test" $ prop_parse_print Pat.expr
29 , testProperty "Type test" $ prop_parse_print Type.expr
33 -- This test was autogenerated from the Pattern test and should be
34 -- left in all its ugly glory.
35 longPat = P.Data (V.Raw "I")
36 [ P.Literal (Lit.Chr '+')
38 [ "q7yclkcm7k_ikstrczv_"
40 ,"c9'eFfhk9FTvsMnwF_D"
48 ,"o2KiCX5'ZRzHJfRi8" ]
49 , P.Var "su'BrrbPUK6I33Eq"
53prop_parse_print :: (Pretty a, Arbitrary a, Eq a) => IParser a -> a -> Bool
54prop_parse_print parser value =
55 either (const False) (== value) (parse_print parser value)
58parse_print :: (Pretty a) => IParser a -> a -> Either String a
59parse_print parser value =
64 P.renderStyle P.style { mode = P.LeftMode } doc
66 case iParse (parser <* eof) string of
67 Left msg -> Left (show msg)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list