{-# OPTIONS_GHC -fno-warn-orphans #-} module Data.GenValidity.Map ( genMapOf, ) 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 :: Gen (Map k v) genValid = Gen (k, v) -> Gen (Map k v) forall k v. Ord k => Gen (k, v) -> Gen (Map k v) genMapOf Gen (k, v) forall a. GenValid a => Gen a genValid shrinkValid :: Map k v -> [Map k v] shrinkValid = ([(k, v)] -> Map k v) -> [[(k, v)]] -> [Map k v] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap [(k, v)] -> Map k v forall k a. Ord k => [(k, a)] -> Map k a M.fromList ([[(k, v)]] -> [Map k v]) -> (Map k v -> [[(k, v)]]) -> Map k v -> [Map k v] forall b c a. (b -> c) -> (a -> b) -> a -> c . [(k, v)] -> [[(k, v)]] forall a. GenValid a => a -> [a] shrinkValid ([(k, v)] -> [[(k, v)]]) -> (Map k v -> [(k, v)]) -> Map k v -> [[(k, v)]] forall b c a. (b -> c) -> (a -> b) -> a -> c . Map k v -> [(k, v)] forall k a. Map k a -> [(k, a)] M.toList genMapOf :: Ord k => Gen (k, v) -> Gen (Map k v) genMapOf :: Gen (k, v) -> Gen (Map k v) genMapOf Gen (k, v) g = [(k, v)] -> Map k v forall k a. Ord k => [(k, a)] -> Map k a M.fromList ([(k, v)] -> Map k v) -> Gen [(k, v)] -> Gen (Map k v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen (k, v) -> Gen [(k, v)] forall a. Gen a -> Gen [a] genListOf Gen (k, v) g