set-cover-0.1.2: test/DocTest/GraphColoring/CutEnumSet.hs
-- Do not edit! Automatically created with doctest-extract from example/GraphColoring/CutEnumSet.hs
{-# LINE 17 "example/GraphColoring/CutEnumSet.hs" #-}
module DocTest.GraphColoring.CutEnumSet where
import GraphColoring.CutEnumSet
import qualified Test.DocTest.Driver as DocTest
{-# LINE 18 "example/GraphColoring/CutEnumSet.hs" #-}
import qualified Math.SetCover.Exact as ESC
import qualified Data.EnumSet as EnumSet
import qualified Data.List.Key as Key
import Data.Word (Word32)
import Control.Applicative (liftA2)
import qualified Test.QuickCheck as QC
import Test.QuickCheck ((===))
test :: DocTest.T ()
test = do
DocTest.printPrefix "GraphColoring.CutEnumSet:111: "
{-# LINE 111 "example/GraphColoring/CutEnumSet.hs" #-}
DocTest.property(
{-# LINE 111 "example/GraphColoring/CutEnumSet.hs" #-}
QC.forAll (fmap (\n -> take (1 + mod n 5) ['a'..]) QC.arbitrary) $ \set ->
QC.forAll (QC.sublistOf set) $ \used ->
let usedSet = EnumSet.fromList used in
let genLabel =
QC.oneof
[fmap Left $ liftA2 (,) (QC.elements set) (QC.elements set),
fmap Right $
liftA2 (,) (QC.arbitrary :: QC.Gen Integer) (QC.elements set)]
genAssignSet :: QC.Gen Word32
genAssignSet = QC.arbitrary
in
QC.forAll (QC.listOf (liftA2 ESC.assign genLabel genAssignSet)) $ \assigns ->
let normalize =
Key.sort fst . map (\(ESC.Assign label aset) -> (label,aset)) in
normalize (uniqueNewColors usedSet assigns)
===
normalize (uniqueNewColorsStable usedSet assigns)
)