Hs2lib-0.5.5: Tests/Exec/Default.hs
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
-----------------------------------------------------------------------------
-- |
-- Module : Windll
-- Copyright : (c) Tamar Christina 2009 - 2010
-- License : BSD3
--
-- Maintainer : tamar@zhox.com
-- Stability : experimental
-- Portability : portable
--
-- Defines a generic producer which is able to generate values to feed to
-- QuickCheck in order to feed the test values.
--
-----------------------------------------------------------------------------
module Tests.Exec.Default
( Default(..)
, geq
, Wrap(..)
, Data()
, Typeable()
, genDefault
) where
import Data.Data
import Data.Typeable
import Data.Generics.Builders
import Data.Generics.Twins
class Default phi where
nDefault :: phi
-- | Avoid the need for Undecidable Instances
newtype Wrap a = Wrap { unWrap :: a }
instance Data a => Default (Wrap a) where
nDefault = Wrap empty
genDefault :: (Data a, Default (Wrap a)) => a
genDefault = unWrap nDefault