Validation-0.0.2: Test/Data/Validation.hs
module Test.Data.Validation where
import Test.QuickCheck
import Test.Framework
import Test.Framework.Providers.QuickCheck2 (testProperty)
import Data.Validation
import Control.Functor.Pointed
instance (Arbitrary err, Arbitrary a) => Arbitrary (Validation err a) where
arbitrary =
fmap (either failure success) arbitrary
instance (Arbitrary err, Arbitrary a) => Arbitrary (AccValidation err a) where
arbitrary =
fmap (either failure success) arbitrary
instance (Pointed m, Arbitrary err, Arbitrary a) => Arbitrary (ValidationT m err a) where
arbitrary =
fmap (ValidationT . point) arbitrary
main ::
IO ()
main =
defaultMain boardTests
boardTests ::
[Test]
boardTests =
[
testGroup "Board"
[
testProperty "fold/success/failure for Validation" prop_fold_success_failure_Validation
, testProperty "fold/success/failure for AccValidation" prop_fold_success_failure_AccValidation
]
]
prop_fold_success_failure ::
(Validate v, FoldValidate v, Eq (v err a)) =>
v err a
-> Bool
prop_fold_success_failure v =
foldValidate failure success v == v
prop_fold_success_failure_Validation ::
Validation Int String
-> Bool
prop_fold_success_failure_Validation =
prop_fold_success_failure
prop_fold_success_failure_AccValidation ::
AccValidation Int String
-> Bool
prop_fold_success_failure_AccValidation =
prop_fold_success_failure