{-# OPTIONS_GHC -fno-warn-orphans #-} {-# LANGUAGE CPP #-} module Data.GenValidity.Sequence where #if !MIN_VERSION_base(4,8,0) import Data.Functor ((<$>)) #endif import Data.Foldable (toList) import Data.GenValidity import Data.Validity.Sequence () import Data.Sequence (Seq) import qualified Data.Sequence as S instance GenUnchecked v => GenUnchecked (Seq v) where genUnchecked :: Gen (Seq v) genUnchecked = [v] -> Seq v forall a. [a] -> Seq a S.fromList ([v] -> Seq v) -> Gen [v] -> Gen (Seq v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen [v] forall a. GenUnchecked a => Gen a genUnchecked shrinkUnchecked :: Seq v -> [Seq v] shrinkUnchecked = ([v] -> Seq v) -> [[v]] -> [Seq v] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap [v] -> Seq v forall a. [a] -> Seq a S.fromList ([[v]] -> [Seq v]) -> (Seq v -> [[v]]) -> Seq v -> [Seq v] forall b c a. (b -> c) -> (a -> b) -> a -> c . [v] -> [[v]] forall a. GenUnchecked a => a -> [a] shrinkUnchecked ([v] -> [[v]]) -> (Seq v -> [v]) -> Seq v -> [[v]] forall b c a. (b -> c) -> (a -> b) -> a -> c . Seq v -> [v] forall (t :: * -> *) a. Foldable t => t a -> [a] toList instance GenValid v => GenValid (Seq v) where genValid :: Gen (Seq v) genValid = [v] -> Seq v forall a. [a] -> Seq a S.fromList ([v] -> Seq v) -> Gen [v] -> Gen (Seq v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen [v] forall a. GenValid a => Gen a genValid shrinkValid :: Seq v -> [Seq v] shrinkValid = ([v] -> Seq v) -> [[v]] -> [Seq v] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap [v] -> Seq v forall a. [a] -> Seq a S.fromList ([[v]] -> [Seq v]) -> (Seq v -> [[v]]) -> Seq v -> [Seq v] forall b c a. (b -> c) -> (a -> b) -> a -> c . [v] -> [[v]] forall a. GenValid a => a -> [a] shrinkValid ([v] -> [[v]]) -> (Seq v -> [v]) -> Seq v -> [[v]] forall b c a. (b -> c) -> (a -> b) -> a -> c . Seq v -> [v] forall (t :: * -> *) a. Foldable t => t a -> [a] toList instance (GenUnchecked v, GenInvalid v) => GenInvalid (Seq v) where genInvalid :: Gen (Seq v) genInvalid = [v] -> Seq v forall a. [a] -> Seq a S.fromList ([v] -> Seq v) -> Gen [v] -> Gen (Seq v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen [v] forall a. GenInvalid a => Gen a genInvalid shrinkInvalid :: Seq v -> [Seq v] shrinkInvalid = ([v] -> Seq v) -> [[v]] -> [Seq v] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap [v] -> Seq v forall a. [a] -> Seq a S.fromList ([[v]] -> [Seq v]) -> (Seq v -> [[v]]) -> Seq v -> [Seq v] forall b c a. (b -> c) -> (a -> b) -> a -> c . [v] -> [[v]] forall a. GenInvalid a => a -> [a] shrinkInvalid ([v] -> [[v]]) -> (Seq v -> [v]) -> Seq v -> [[v]] forall b c a. (b -> c) -> (a -> b) -> a -> c . Seq v -> [v] forall (t :: * -> *) a. Foldable t => t a -> [a] toList