tvl-depot/users/grfn/xanthous/test/Test/Prelude.hs

35 lines
1.4 KiB
Haskell
Raw Normal View History

{-# LANGUAGE AllowAmbiguousTypes #-}
--------------------------------------------------------------------------------
module Test.Prelude
( module Xanthous.Prelude
, module Test.Tasty
, module Test.Tasty.HUnit
, module Test.Tasty.QuickCheck
, module Test.Tasty.Ingredients.Rerun
, module Test.QuickCheck.Classes
, testBatch
, jsonRoundTrip
) where
--------------------------------------------------------------------------------
import Xanthous.Prelude hiding (assert, elements)
--------------------------------------------------------------------------------
import Test.Tasty
import Test.Tasty.QuickCheck
import Test.Tasty.HUnit
import Test.Tasty.Ingredients.Rerun
import Test.QuickCheck.Classes
import Test.QuickCheck.Checkers (TestBatch, EqProp ((=-=)))
import Test.QuickCheck.Instances.ByteString ()
--------------------------------------------------------------------------------
import qualified Data.Aeson as JSON
import Data.Aeson (ToJSON, FromJSON)
--------------------------------------------------------------------------------
testBatch :: TestBatch -> TestTree
testBatch (name, tests) = testGroup name $ uncurry testProperty <$> tests
jsonRoundTrip
:: forall a. (ToJSON a, FromJSON a, EqProp a, Arbitrary a, Show a) => TestTree
jsonRoundTrip = testProperty "JSON round trip" $ \(x :: a) ->
JSON.decode (JSON.encode x) =-= Just x