packages feed

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)]))