{-# OPTIONS_GHC -Wno-orphans #-}
module GoPro.Plus.Arbitrary where
import Data.Text (Text)
import qualified Data.Text as T
import Generic.Random (genericArbitrary, uniform)
import Test.QuickCheck (Arbitrary (..), Gen, NonNegative (..), arbitraryBoundedEnum, choose,
elements, listOf, oneof, vector, vectorOf)
import Test.QuickCheck.Instances.Time ()
import GoPro.Plus.Auth
import GoPro.Plus.Media
instance Arbitrary FileInfo where arbitrary :: Gen FileInfo
arbitrary = forall a. GArbitrary UnsizedOpts a => Weights a -> Gen a
genericArbitrary forall a. UniformWeight_ (Rep a) => Weights a
uniform
instance Arbitrary FileStuff where
arbitrary :: Gen FileStuff
arbitrary = do
[File]
_files <- forall a. Arbitrary a => Int -> Gen [a]
vector forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a. Random a => (a, a) -> Gen a
choose (Int
0,Int
3)
[Variation]
_variations <- forall a. Arbitrary a => Int -> Gen [a]
vector forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a. Random a => (a, a) -> Gen a
choose (Int
0,Int
3)
[Sprite]
_sprites <- forall a. Arbitrary a => Int -> Gen [a]
vector forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a. Random a => (a, a) -> Gen a
choose (Int
0,Int
3)
[SidecarFile]
_sidecar_files <- forall a. Arbitrary a => Int -> Gen [a]
vector forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a. Random a => (a, a) -> Gen a
choose (Int
0,Int
3)
forall (f :: * -> *) a. Applicative f => a -> f a
pure FileStuff{[File]
[Variation]
[Sprite]
[SidecarFile]
_sidecar_files :: [SidecarFile]
_sprites :: [Sprite]
_variations :: [Variation]
_files :: [File]
_sidecar_files :: [SidecarFile]
_sprites :: [Sprite]
_variations :: [Variation]
_files :: [File]
..}
instance Arbitrary Variation where arbitrary :: Gen Variation
arbitrary = forall a. GArbitrary UnsizedOpts a => Weights a -> Gen a
genericArbitrary forall a. UniformWeight_ (Rep a) => Weights a
uniform
instance Arbitrary SpriteFrame where arbitrary :: Gen SpriteFrame
arbitrary = forall a. GArbitrary UnsizedOpts a => Weights a -> Gen a
genericArbitrary forall a. UniformWeight_ (Rep a) => Weights a
uniform
instance Arbitrary SidecarFile where arbitrary :: Gen SidecarFile
arbitrary = forall a. GArbitrary UnsizedOpts a => Weights a -> Gen a
genericArbitrary forall a. UniformWeight_ (Rep a) => Weights a
uniform
instance Arbitrary Sprite where arbitrary :: Gen Sprite
arbitrary = forall a. GArbitrary UnsizedOpts a => Weights a -> Gen a
genericArbitrary forall a. UniformWeight_ (Rep a) => Weights a
uniform
instance Arbitrary File where arbitrary :: Gen File
arbitrary = forall a. GArbitrary UnsizedOpts a => Weights a -> Gen a
genericArbitrary forall a. UniformWeight_ (Rep a) => Weights a
uniform
instance Arbitrary AuthInfo where arbitrary :: Gen AuthInfo
arbitrary = Text -> Int -> Text -> Text -> AuthInfo
AuthInfo forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Text
aText forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (forall a. NonNegative a -> a
getNonNegative forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Arbitrary a => Gen a
arbitrary) forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Text
aText forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen Text
aText
aString :: Gen String
aString :: Gen [Char]
aString = forall a. Gen a -> Gen [a]
listOf (forall a. [a] -> Gen a
elements ([Char
'a'..Char
'z'] forall a. Semigroup a => a -> a -> a
<> [Char
'A'..Char
'Z'] forall a. Semigroup a => a -> a -> a
<> [Char
'0'..Char
'9'] forall a. Semigroup a => a -> a -> a
<> [Char]
"?<>/.\\!@#$%^&*()_-'\";:{}[]"))
aText :: Gen Text
aText :: Gen Text
aText = [Char] -> Text
T.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen [Char]
aString
gMaybe :: Gen a -> Gen (Maybe a)
gMaybe :: forall a. Gen a -> Gen (Maybe a)
gMaybe Gen a
a = forall a. [Gen a] -> Gen a
oneof [forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. Maybe a
Nothing, forall a. a -> Maybe a
Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen a
a]
aCamera :: Gen String
aCamera :: Gen [Char]
aCamera = forall a. [a] -> Gen a
elements [
[Char]
"GoPro Max",
[Char]
"HERO11 Black",
[Char]
"HERO3+Silver Edition",
[Char]
"HERO4 Black",
[Char]
"HERO5 Black",
[Char]
"HERO5 Session",
[Char]
"HERO8 Black",
[Char]
"HERO9 Black"]
genID :: Gen MediumID
genID :: Gen Text
genID = [Char] -> Text
T.pack forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Int -> Gen a -> Gen [a]
vectorOf Int
13 (forall a. [a] -> Gen a
elements ([Char
'a'..Char
'z'] forall a. Semigroup a => a -> a -> a
<> [Char
'A'..Char
'Z'] forall a. Semigroup a => a -> a -> a
<> [Char
'0'..Char
'9']))
instance Arbitrary Medium where
arbitrary :: Gen Medium
arbitrary = Text
-> Maybe [Char]
-> UTCTime
-> UTCTime
-> Maybe Int
-> Int
-> ReadyToViewType
-> Maybe [Char]
-> MediumType
-> [Char]
-> Maybe Int
-> Maybe Int
-> Maybe [Char]
-> Medium
Medium
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Text
genID
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Gen a -> Gen (Maybe a)
gMaybe Gen [Char]
aCamera
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Arbitrary a => Gen a
arbitrary
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Arbitrary a => Gen a
arbitrary
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. NonNegative a -> a
getNonNegative forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Arbitrary a => Gen a
arbitrary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (forall a. NonNegative a -> a
getNonNegative forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Arbitrary a => Gen a
arbitrary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Arbitrary a => Gen a
arbitrary
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Gen a -> Gen (Maybe a)
gMaybe Gen [Char]
aString
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Arbitrary a => Gen a
arbitrary
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen [Char]
aString
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. NonNegative a -> a
getNonNegative forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Arbitrary a => Gen a
arbitrary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap forall a. NonNegative a -> a
getNonNegative forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Arbitrary a => Gen a
arbitrary)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Gen a -> Gen (Maybe a)
gMaybe Gen [Char]
aString
instance Arbitrary Moment where arbitrary :: Gen Moment
arbitrary = Text -> Maybe Int -> Moment
Moment forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Text
aText forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Arbitrary a => Gen a
arbitrary
instance Arbitrary ReadyToViewType where arbitrary :: Gen ReadyToViewType
arbitrary = forall a. (Bounded a, Enum a) => Gen a
arbitraryBoundedEnum
instance Arbitrary MediumType where arbitrary :: Gen MediumType
arbitrary = forall a. (Bounded a, Enum a) => Gen a
arbitraryBoundedEnum
instance Arbitrary PageInfo where arbitrary :: Gen PageInfo
arbitrary = forall a. GArbitrary UnsizedOpts a => Weights a -> Gen a
genericArbitrary forall a. UniformWeight_ (Rep a) => Weights a
uniform
instance Arbitrary Listing where arbitrary :: Gen Listing
arbitrary = forall a. GArbitrary UnsizedOpts a => Weights a -> Gen a
genericArbitrary forall a. UniformWeight_ (Rep a) => Weights a
uniform