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