{-# 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)