module Test.Validity.Arbitrary
( arbitrarySpec
, arbitraryGeneratesOnlyValid
) where
import Data.Data
import Data.GenValidity
import Test.Hspec
import Test.QuickCheck
import Test.Validity.GenValidity
import Test.Validity.Utils
arbitrarySpec
:: forall a.
(Typeable a, Show a, Validity a, Arbitrary a)
=> Spec
arbitrarySpec = do
let name = nameOf @a
describe ("Arbitrary " ++ name) $
describe ("arbitrary :: Gen " ++ name) $
it "only generates valid values" $ arbitraryGeneratesOnlyValid @a
arbitraryGeneratesOnlyValid
:: forall a.
(Show a, Validity a, Arbitrary a)
=> Property
arbitraryGeneratesOnlyValid = genGeneratesValid @a arbitrary