{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE StandaloneDeriving #-} module GenericPretty.Tests ( tests ) where import Protolude hiding (Product, Sum, empty) import Test.Tasty import Test.Tasty.HUnit import qualified K1 import qualified Product import qualified Sum import qualified TestData import qualified U1 -- got this idea from -- https://jaspervdj.be/posts/2015-03-13-practical-testing-in-haskell.html -- it would be cool to generate the data types using Arbitrary as GAST -- supposedly did -- testProperty "test U1" prop_U1 tests :: TestTree tests = testGroup "GenericPretty" [ testCase "testU1" testU1 , testCase "testSum" testSum , testCase "testProduct" testProduct , testCase "testK1" testK1 , testCase "testDataTree1" testDataTree1 , testCase "testDataTree2" testDataTree2 , testCase "testDataTree3" testDataTree3 , testCase "testDataTree4" testDataTree4 , testCase "testDataAnimal1" testDataAnimal1 , testCase "testHashMap" testHashMap , testCase "testIntMap" testIntMap , testCase "testMap" testMap , testCase "testUTCTime" testUTCTime ] testU1 :: Assertion testU1 = U1.showAndRead U1.sample @?= Right U1.sample testSum :: Assertion testSum = Sum.showAndRead Sum.sample @?= Right Sum.sample testProduct :: Assertion testProduct = Product.showAndRead Product.sample @?= Right Product.sample testK1 :: Assertion testK1 = K1.showAndRead K1.sample @?= Right K1.sample testDataTree1 :: Assertion testDataTree1 = TestData.showAndReadTree TestData.tree1 @?= Right TestData.tree1 testDataTree2 :: Assertion testDataTree2 = TestData.showAndReadTree TestData.tree2 @?= Right TestData.tree2 testDataTree3 :: Assertion testDataTree3 = TestData.showAndReadTree TestData.tree3 @?= Right TestData.tree3 testDataTree4 :: Assertion testDataTree4 = TestData.showAndReadTree1 TestData.tree4 @?= Right TestData.tree4 testDataAnimal1 :: Assertion testDataAnimal1 = TestData.showAndReadAnimal1 TestData.animal1 @?= Right TestData.animal1 testHashMap :: Assertion testHashMap = TestData.showAndReadHashMap TestData.hashMapTest @?= Right TestData.hashMapTest testIntMap :: Assertion testIntMap = TestData.showAndReadIntMap TestData.intMapTest @?= Right TestData.intMapTest testMap :: Assertion testMap = TestData.showAndReadMap TestData.mapTest @?= Right TestData.mapTest testUTCTime :: Assertion testUTCTime = TestData.showAndReadUTCTime TestData.utcTimeTest @?= Right TestData.utcTimeTest