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