git.iko.soy/typeable/generic-arbitrary
on older-quickcheck help sign in

Generic method implementations for Arbitrary

git clone ssh://git.iko.soy/typeable/generic-arbitrary

generic-arbitrary

Build Status

Deriving Arbitrary via Generic.

import           GHC.Generics                      (Generic)
import           Test.QuickCheck
import           Test.QuickCheck.Arbitrary.Generic

data Expr
  = Lit Int
  | Add Expr Expr
  | Mul Expr Expr
  deriving (Eq, Show, Generic)

instance Arbitrary Expr where
  arbitrary = genericArbitrary
  shrink = genericShrink

if type has an argument then Arg is required

data Expr lit
  = Lit lit
  | Add Expr Expr
  | Mul Expr Expr
  deriving (Eq, Show, Generic)

instance
  ( Arbitrary lit
  , Arg (Expr lit) lit
  ) => Arbitrary (Expr lit) where
  arbitrary = genericArbitrary
  shrink = genericShrink