genvalidity-containers-0.9.0.0: test/Data/GenValidity/Containers/SetSpec.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE TypeApplications #-}
module Data.GenValidity.Containers.SetSpec where
import Data.GenValidity
import Data.GenValidity.Set
import Data.Set (Set)
import Data.Validity.Containers
import Test.Hspec
import Test.QuickCheck
import Test.Validity
spec :: Spec
spec = do
describe "genStructurallyValidSetOf" $
it "produces valid sets" $
genGeneratesValid
(genStructurallyValidSetOf @Rational genValid)
describe "genStructurallyValidSetOfInvalidValues" $
it "produces valid sets" $
genGeneratesInvalid
(genStructurallyValidSetOfInvalidValues @Rational)
#if MIN_VERSION_containers(0,5,9)
describe "genStructurallyInvalidSet" $
it "produces invalid sets" $
genGeneratesInvalid (genStructurallyInvalidSet @Rational)
#endif
genValidSpec @(Set Int)
genValiditySpec @(Set Rational)
describe "genSeperate" $ do
it "generates values that are seperate" $
forAll (genSeperate genUnchecked) $ \ls -> distinctOrd (ls :: [Int])
it "generates values that are seperate" $
forAll (genSeperate genValid) $ \ls -> distinctOrd (ls :: [Int])
describe "genSeperateFor" $ do
it "generates values that are seperate" $
forAllValid $ \ls ->
forAll (genSeperateFor genUnchecked ls) $ \tups -> distinctOrd (map fst (tups :: [(Int, Int)]))
it "generates values that are seperate" $
forAllValid $ \ls ->
forAll (genSeperateFor genValid ls) $ \tups -> distinctOrd (map fst(tups :: [(Int, Int)]))
describe "genValidSeperateFor" $
it "generates values that are seperate" $
forAllValid $ \ls ->
forAll (genValidSeperateFor ls) $ \tups -> distinctOrd (map fst (tups :: [(Int, Int)]))