{-# LANGUAGE TypeApplications #-} import Test.Tasty (defaultMain, testGroup) import qualified Spec.Bare as Bare import qualified Spec.Constraints as Constraints import qualified Spec.Functor as Functor import qualified Spec.Product as Product import qualified Spec.Traversable as Traversable import qualified Spec.Wrapper as Wrapper import Barbies main :: IO () main = defaultMain $ testGroup "Tests" [ testGroup "Functor Laws" [ Functor.laws @Record0 , Functor.laws @Record1 , Functor.laws @Record3 , Functor.laws @Record1W , Functor.laws @Record3W , Functor.laws @Ignore1 , Functor.laws @Sum3 , Functor.laws @SumRec , Functor.laws @Sum3W , Functor.laws @SumRecW , Functor.laws @CompositeRecord , Functor.laws @NestedF , Functor.laws @CompositeRecordW ] , testGroup "Traversable Laws" [ Traversable.laws @Record0 , Traversable.laws @Record1 , Traversable.laws @Record3 , Traversable.laws @Record1W , Traversable.laws @Record3W , Traversable.laws @Ignore1 , Traversable.laws @Sum3 , Traversable.laws @SumRec , Traversable.laws @Sum3W , Traversable.laws @SumRecW , Traversable.laws @CompositeRecord , Traversable.laws @NestedF , Traversable.laws @CompositeRecordW ] , testGroup "Product Laws" [ Product.laws @Record0 , Product.laws @Record1 , Product.laws @Record3 , Product.laws @CompositeRecord , Product.laws @Record1W , Product.laws @Record3W , Product.laws @CompositeRecordW ] , testGroup "Uniq Laws" [ Product.uniqLaws @Record0 , Product.uniqLaws @Record1 , Product.uniqLaws @Record3 , Product.uniqLaws @CompositeRecord , Product.uniqLaws @Record1W , Product.uniqLaws @Record3W , Product.uniqLaws @CompositeRecordW ] , testGroup "adjProof projection" [ Constraints.lawAdjProofPrj @Record0 , Constraints.lawAdjProofPrj @Record1 , Constraints.lawAdjProofPrj @Record3 , Constraints.lawAdjProofPrj @Record1W , Constraints.lawAdjProofPrj @Record3W , Constraints.lawAdjProofPrj @Ignore1 , Constraints.lawAdjProofPrj @Sum3 , Constraints.lawAdjProofPrj @SumRec , Constraints.lawAdjProofPrj @Sum3W , Constraints.lawAdjProofPrj @SumRecW , Constraints.lawAdjProofPrj @CompositeRecord , Constraints.lawAdjProofPrj @CompositeRecordW ] , testGroup "bproof projection" [ Constraints.lawProofEquivPrj @Record0 , Constraints.lawProofEquivPrj @Record1 , Constraints.lawProofEquivPrj @Record3 , Constraints.lawProofEquivPrj @CompositeRecord , Constraints.lawProofEquivPrj @Record1W , Constraints.lawProofEquivPrj @Record3W , Constraints.lawProofEquivPrj @CompositeRecordW ] , testGroup "Bare laws" [ Bare.laws @Record1W , Bare.laws @Record3W , Bare.laws @Sum3W , Bare.laws @SumRecW , Bare.laws @NestedFW ] , testGroup "Generic wrapper" [ Wrapper.lawsMonoid @Record3 , Wrapper.lawsMonoid @Record3W ] ]