{-# OPTIONS_GHC -fno-warn-orphans #-} module Data.GenValidity.Map ( genMapOf, shrinkMapOf, ) where import Data.GenValidity import Data.Map (Map) import qualified Data.Map as M import Data.Validity.Map () import Test.QuickCheck instance (Show k, Ord k, GenValid k, GenValid v) => GenValid (Map k v) where genValid = genMapOf genValid shrinkValid = shrinkMapOf shrinkValid genMapOf :: Ord k => Gen (k, v) -> Gen (Map k v) genMapOf g = M.fromList <$> genListOf g shrinkMapOf :: Ord k => ((k, v) -> [(k, v)]) -> Map k v -> [Map k v] shrinkMapOf shrinker = fmap M.fromList . shrinkList shrinker . M.toList