{-# OPTIONS_GHC -fno-warn-orphans #-} module Data.GenValidity.HashMap where import Data.GenValidity import Data.HashMap.Strict (HashMap) import qualified Data.HashMap.Strict as HM import Data.Hashable (Hashable) import Data.Validity.HashMap () instance (Hashable k, Eq k, GenValid k, GenValid v) => GenValid (HashMap k v) where genValid :: Gen (HashMap k v) genValid = [(k, v)] -> HashMap k v forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList ([(k, v)] -> HashMap k v) -> Gen [(k, v)] -> Gen (HashMap k v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen [(k, v)] forall a. GenValid a => Gen a genValid shrinkValid :: HashMap k v -> [HashMap k v] shrinkValid = ([(k, v)] -> HashMap k v) -> [[(k, v)]] -> [HashMap k v] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap [(k, v)] -> HashMap k v forall k v. (Eq k, Hashable k) => [(k, v)] -> HashMap k v HM.fromList ([[(k, v)]] -> [HashMap k v]) -> (HashMap k v -> [[(k, v)]]) -> HashMap k v -> [HashMap 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)]]) -> (HashMap k v -> [(k, v)]) -> HashMap k v -> [[(k, v)]] forall b c a. (b -> c) -> (a -> b) -> a -> c . HashMap k v -> [(k, v)] forall k v. HashMap k v -> [(k, v)] HM.toList