genvalidity-hspec-1.0.0.4: test/Test/Validity/EqSpec.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeApplications #-}
module Test.Validity.EqSpec where
import Data.GenValidity
import GHC.Generics (Generic)
import Test.Hspec
import Test.Validity.Eq
import Test.Validity.Utils
spec :: Spec
spec = do
eqSpec @Rational
eqSpec @Int
-- eqSpec @Double DOES NOT HOLD because of NaN
eqSpecOnArbitrary @Int
eqSpecOnGen ((* 2) <$> genValid @Int) "even" (const [])
failsBecause "(/=) and (==) don't have opposite semantics" $
eqSpec @EqFuncMismatch
newtype EqFuncMismatch
= EqFuncMismatch ()
deriving (Show, Generic)
instance Validity EqFuncMismatch
instance Eq EqFuncMismatch where
(==) _ _ = True
(/=) _ _ = True
instance GenValid EqFuncMismatch where
genValid = EqFuncMismatch <$> genValid
shrinkValid _ = []