{-# OPTIONS_GHC -fno-warn-orphans #-} module Cursor.Map.KeyValue.Gen ( genKeyValueCursorBy, genKeyValueCursorByDependent, ) where import Cursor.Map.KeyValue import Data.GenValidity import Test.QuickCheck instance (GenValid kc, GenValid vc, GenValid k, GenValid v) => GenValid (KeyValueCursor kc vc k v) where genValid :: Gen (KeyValueCursor kc vc k v) genValid = Gen kc -> Gen vc -> Gen k -> Gen v -> Gen (KeyValueCursor kc vc k v) forall kc vc k v. Gen kc -> Gen vc -> Gen k -> Gen v -> Gen (KeyValueCursor kc vc k v) genKeyValueCursorBy Gen kc forall a. GenValid a => Gen a genValid Gen vc forall a. GenValid a => Gen a genValid Gen k forall a. GenValid a => Gen a genValid Gen v forall a. GenValid a => Gen a genValid shrinkValid :: KeyValueCursor kc vc k v -> [KeyValueCursor kc vc k v] shrinkValid = KeyValueCursor kc vc k v -> [KeyValueCursor kc vc k v] forall a. (Generic a, GValidRecursivelyShrink (Rep a), GValidSubterms (Rep a) a) => a -> [a] shrinkValidStructurallyWithoutExtraFiltering instance GenValid KeyValueToggle genKeyValueCursorBy :: Gen kc -> Gen vc -> Gen k -> Gen v -> Gen (KeyValueCursor kc vc k v) genKeyValueCursorBy :: Gen kc -> Gen vc -> Gen k -> Gen v -> Gen (KeyValueCursor kc vc k v) genKeyValueCursorBy Gen kc genKC Gen vc genVC Gen k genK Gen v genV = [Gen (KeyValueCursor kc vc k v)] -> Gen (KeyValueCursor kc vc k v) forall a. [Gen a] -> Gen a oneof [kc -> v -> KeyValueCursor kc vc k v forall kc vc k v. kc -> v -> KeyValueCursor kc vc k v KeyValueCursorKey (kc -> v -> KeyValueCursor kc vc k v) -> Gen kc -> Gen (v -> KeyValueCursor kc vc k v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen kc genKC Gen (v -> KeyValueCursor kc vc k v) -> Gen v -> Gen (KeyValueCursor kc vc k v) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen v genV, k -> vc -> KeyValueCursor kc vc k v forall kc vc k v. k -> vc -> KeyValueCursor kc vc k v KeyValueCursorValue (k -> vc -> KeyValueCursor kc vc k v) -> Gen k -> Gen (vc -> KeyValueCursor kc vc k v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen k genK Gen (vc -> KeyValueCursor kc vc k v) -> Gen vc -> Gen (KeyValueCursor kc vc k v) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Gen vc genVC] genKeyValueCursorByDependent :: Gen (kc, v) -> Gen (k, vc) -> Gen (KeyValueCursor kc vc k v) genKeyValueCursorByDependent :: Gen (kc, v) -> Gen (k, vc) -> Gen (KeyValueCursor kc vc k v) genKeyValueCursorByDependent Gen (kc, v) genKVCK Gen (k, vc) genKVCV = [Gen (KeyValueCursor kc vc k v)] -> Gen (KeyValueCursor kc vc k v) forall a. [Gen a] -> Gen a oneof [(kc -> v -> KeyValueCursor kc vc k v) -> (kc, v) -> KeyValueCursor kc vc k v forall a b c. (a -> b -> c) -> (a, b) -> c uncurry kc -> v -> KeyValueCursor kc vc k v forall kc vc k v. kc -> v -> KeyValueCursor kc vc k v KeyValueCursorKey ((kc, v) -> KeyValueCursor kc vc k v) -> Gen (kc, v) -> Gen (KeyValueCursor kc vc k v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen (kc, v) genKVCK, (k -> vc -> KeyValueCursor kc vc k v) -> (k, vc) -> KeyValueCursor kc vc k v forall a b c. (a -> b -> c) -> (a, b) -> c uncurry k -> vc -> KeyValueCursor kc vc k v forall kc vc k v. k -> vc -> KeyValueCursor kc vc k v KeyValueCursorValue ((k, vc) -> KeyValueCursor kc vc k v) -> Gen (k, vc) -> Gen (KeyValueCursor kc vc k v) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Gen (k, vc) genKVCV]