siren-json-0.1.0.0: test/Data/SirenJSON/Arbitrary.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-|
Module : Data.SirenJSON.Arbitrary
Description : Arbitrary Instances for Data.SirenJSON
Copyright : (c) Alex Brandt, 2017
License : MIT
Arbitrary instances for "Data.SirenJSON".
-}
module Data.SirenJSON.Arbitrary where
import Control.Applicative ((<$>), (<*>))
import Test.QuickCheck (Arbitrary (arbitrary), elements, oneof, scale)
import Test.QuickCheck.Instances ()
import Data.SirenJSON
import External.Network.HTTP.Media.MediaType.Arbitrary ()
import External.Network.HTTP.Types.Method.Arbitrary ()
import External.Network.URI.Arbitrary ()
instance Arbitrary Entity where
arbitrary = Entity <$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
instance Arbitrary SubEntity where
arbitrary = oneof [ EmbeddedLink <$> arbitrary
, EmbeddedRepresentation <$> scale (`div` 2) arbitrary
<*> arbitrary
]
instance Arbitrary Link where
arbitrary = Link <$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
instance Arbitrary Action where
arbitrary = Action <$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
instance Arbitrary Field where
arbitrary = Field <$> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
<*> arbitrary
instance Arbitrary InputType where
arbitrary = elements [ Hidden
, Text
, Search
, Tel
, URL
, Email
, Password
, DateTime
, Date
, Month
, Week
, Time
, DateTimeLocal
, Number
, Range
, Color
, CheckBox
, Radio
, File
]