genvalidity-containers-1.0.0.0: test/Data/GenValidity/Containers/SetSpec.hs
{-# 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 "genSetOf" $
it "produces valid sets" $
genGeneratesValid
(genSetOf @Rational genValid)
genValidSpec @(Set Int)
genValidSpec @(Set Rational)
describe "genSeperate" $ do
it "generates values that are seperate" $
forAll (genSeperate genValid) $ \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 genValid 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)]))