quickcheck-instances-0.4: src/Test/QuickCheck/Instances/UnorderedContainers.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Test.QuickCheck.Instances.UnorderedContainers () where
import Prelude ()
import Test.QuickCheck.Instances.CustomPrelude
import Data.Hashable (Hashable)
import Test.QuickCheck
import qualified Data.HashMap.Lazy as HML
import qualified Data.HashSet as HS
-------------------------------------------------------------------------------
-- unordered-containers
-------------------------------------------------------------------------------
instance (Hashable a, Eq a, Arbitrary a) => Arbitrary (HS.HashSet a) where
arbitrary = HS.fromList <$> arbitrary
shrink hashset = HS.fromList <$> shrink (HS.toList hashset)
instance CoArbitrary a => CoArbitrary (HS.HashSet a) where
coarbitrary = coarbitrary . HS.toList
instance (Hashable a, Eq a, Function a) => Function (HS.HashSet a) where
function = functionMap HS.toList HS.fromList
instance (Hashable k, Eq k, Arbitrary k) => Arbitrary1 (HML.HashMap k) where
liftArbitrary arb =
HML.fromList <$> liftArbitrary (liftArbitrary2 arbitrary arb)
liftShrink shr m =
HML.fromList <$> liftShrink (liftShrink2 shrink shr) (HML.toList m)
instance (Hashable k, Eq k, Arbitrary k, Arbitrary v) => Arbitrary (HML.HashMap k v) where
arbitrary = arbitrary1
shrink = shrink1
instance (CoArbitrary k, CoArbitrary v) => CoArbitrary (HML.HashMap k v) where
coarbitrary = coarbitrary . HML.toList
instance (Hashable k, Eq k, Function k, Function v) => Function (HML.HashMap k v) where
function = functionMap HML.toList HML.fromList