packages feed

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