symantic-lib-0.0.3.20180213: test/HUnit.hs
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module HUnit where
import Test.Tasty
import Prelude hiding ((&&), not, (||), id)
import Language.Symantic
import Language.Symantic.Lib
import qualified HUnit.Applicative as Applicative
import qualified HUnit.Bool as Bool
import qualified HUnit.Foldable as Foldable
import qualified HUnit.Functor as Functor
import qualified HUnit.Map as Map
import qualified HUnit.MonoFunctor as MonoFunctor
import qualified HUnit.Num as Num
import qualified HUnit.Tuple2 as Tuple2
-- * Tests
hunits :: TestTree
hunits = testGroup "HUnit" $
[ Applicative.hunits
, Bool.hunits
, Foldable.hunits
, Functor.hunits
, Map.hunits
, MonoFunctor.hunits
, Num.hunits
, Tuple2.hunits
]
-- * EDSL tests
te1 = lam $ \x -> lam $ \y -> (x || y) && not (x && y)
te2 = lam $ \x -> lam $ \y -> (x && not y) || (not x && y)
te3 = let_ (bool True) $ \x -> x && x
te4 = let_ (lam $ \x -> x && x) $ \f -> f `app` bool True
te5 = lam $ \x0 -> lam $ \x1 -> x0 && x1
te6 = let_ (bool True) id && bool False
te7 = lam $ \f -> (f `app` bool True) && bool True
te8 = lam $ \f -> f `app` (bool True && bool True)