argparser-0.3.1: tests/System/Console/ArgParser/ParserTest.hs
{-# OPTIONS_GHC -F -pgmF htfpp #-}
module System.Console.ArgParser.ParserTest where
import System.Console.ArgParser.Parser
import System.Console.ArgParser.BaseType
import System.Console.ArgParser.QuickParams
import System.Console.ArgParser.TestHelpers
import Test.Framework
{-# ANN module "HLint: ignore Use camelCase" #-}
data MyTest = MyTest Int Int
deriving (Eq, Show)
myTestParser :: ParserSpec MyTest
myTestParser = MyTest
`parsedBy` reqPos "pos1"
`andBy` reqPos "pos2"
prop_parse
:: Positive Int
-> Positive Int
-> Bool
prop_parse (Positive i) (Positive j) =
Right (MyTest i j) == specRun myTestParser [show i, show j]
data MySuperTest = MySuperTest Int Int Int MyTest Int Int
deriving (Eq, Show)
mySuperParser :: ParserSpec MySuperTest
mySuperParser = MySuperTest
`parsedBy` reqPos "pos1"
`andBy` reqPos "pos2"
`andBy` reqPos "pos3"
`andBy` (MyTest
`subParser` reqPos "pos4"
`andBy` reqPos "pos5")
`andBy` reqPos "pos6"
`andBy` reqPos "pos7"
prop_superParse
:: Positive Int
-> Positive Int
-> Positive Int
-> Positive Int
-> Positive Int
-> Positive Int
-> Positive Int
-> Bool
prop_superParse
(Positive i1)
(Positive i2)
(Positive i3)
(Positive i4)
(Positive i5)
(Positive i6)
(Positive i7) =
Right expected == result where
expected = MySuperTest i1 i2 i3 (MyTest i4 i5) i6 i7
result = specRun mySuperParser $ map show
[ i1, i2, i3, i4, i5, i6, i7]