verdict-0.0.0.0: test/VerdictSpec.hs
module VerdictSpec (spec) where
import Data.Either
import Test.Hspec
import Verdict
spec :: Spec
spec = describe "Verdict" $ do
maximumSpec
minimumSpec
maxLengthSpec
minLengthSpec
lengthSpec
multipleOfSpec
maximumSpec :: Spec
maximumSpec = describe "Maximum" $ do
it "rejects larger values" $ do
(validate 5 :: Either ErrorTree (Validated (Maximum 3) Integer))
`shouldSatisfy` isLeft
it "accepts smaller values" $ do
(validate 3 :: Either ErrorTree (Validated (Maximum 5) Integer))
`shouldSatisfy` isRight
it "accepts equal sized values" $ do
(validate 3 :: Either ErrorTree (Validated (Maximum 3) Integer))
`shouldSatisfy` isRight
minimumSpec :: Spec
minimumSpec = describe "Minimum" $ do
it "rejects smaller values" $ do
(validate 3 :: Either ErrorTree (Validated (Minimum 5) Integer))
`shouldSatisfy` isLeft
it "accepts larger values" $ do
(validate 5 :: Either ErrorTree (Validated (Minimum 3) Integer))
`shouldSatisfy` isRight
it "accepts equal sized values" $ do
(validate 3 :: Either ErrorTree (Validated (Minimum 3) Integer))
`shouldSatisfy` isRight
maxLengthSpec :: Spec
maxLengthSpec = describe "MaxLength" $ do
it "rejects longer values" $ do
(validate [(),()] :: Either ErrorTree (Validated (MaxLength 1) [()]))
`shouldSatisfy` isLeft
it "accepts shorter values" $ do
(validate [()] :: Either ErrorTree (Validated (MaxLength 3) [()]))
`shouldSatisfy` isRight
it "accepts equal sized values" $ do
(validate [()] :: Either ErrorTree (Validated (MaxLength 1) [()]))
`shouldSatisfy` isRight
minLengthSpec :: Spec
minLengthSpec = describe "MinLength" $ do
it "rejects shorter values" $ do
(validate [()] :: Either ErrorTree (Validated (MinLength 2) [()]))
`shouldSatisfy` isLeft
it "accepts shorter values" $ do
(validate [(), ()] :: Either ErrorTree (Validated (MinLength 1) [()]))
`shouldSatisfy` isRight
it "accepts equal sized values" $ do
(validate [()] :: Either ErrorTree (Validated (MinLength 1) [()]))
`shouldSatisfy` isRight
lengthSpec :: Spec
lengthSpec = describe "Length" $ do
it "rejects differing lengths" $ do
(validate [()] :: Either ErrorTree (Validated (Length 2) [()]))
`shouldSatisfy` isLeft
it "accepts matching lengths" $ do
(validate [()] :: Either ErrorTree (Validated (Length 1) [()]))
`shouldSatisfy` isRight
multipleOfSpec :: Spec
multipleOfSpec = describe "MultipleOf" $ do
it "rejects non-multiples" $ do
(validate 5 :: Either ErrorTree (Validated (MultipleOf 2) Integer))
`shouldSatisfy` isLeft
it "accepts multiples" $ do
(validate 4 :: Either ErrorTree (Validated (MultipleOf 2) Integer))
`shouldSatisfy` isRight