packages feed

compdata-0.6: testsuite/tests/Data/Comp/Examples/Param.hs

{-# LANGUAGE TypeOperators #-}
module Data.Comp.Examples.Param where

import Examples.Param.Names as Names
import Examples.Param.Graph as Graph

import Data.Comp.Param

import Test.Framework
import Test.Framework.Providers.HUnit
import Test.HUnit
import Test.Utils





--------------------------------------------------------------------------------
-- Test Suits
--------------------------------------------------------------------------------

tests = testGroup "Parametric Compositional Data Types" [
         testCase "names" namesTest,
         testCase "graph" graphTest
        ]


--------------------------------------------------------------------------------
-- Properties
--------------------------------------------------------------------------------

instance (EqD f, PEq p) => EqD (f :&: p) where
    eqD (v1 :&: p1) (v2 :&: p2) = do b1 <- peq p1 p2
                                     b2 <- eqD v1 v2
                                     return $ b1 && b2

namesTest = sequence_ [en @=? en', ep @=? ep']
graphTest = sequence_ [n @=? 5, f @=? [0,2,1,2]]