validity-0.9.0.0: test/Data/ValiditySpec.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE CPP #-}
module Data.ValiditySpec
( spec
) where
import GHC.Generics (Generic)
#if !MIN_VERSION_base(4,7,0)
import Data.Monoid
#endif
import Data.Validity
import GHC.Real (Ratio(..))
import Test.Hspec
data Wrong
= Wrong
| Fine
deriving (Show, Eq)
instance Validity Wrong where
validate w =
case w of
Wrong -> invalid "Wrong"
Fine -> valid
data GeneratedValidity =
G Rational
Rational
deriving (Show, Eq, Generic)
instance Validity GeneratedValidity
spec :: Spec
spec = do
describe "Wrong" $ do
it "says Wrong is invalid" $ Wrong `shouldSatisfy` (not . isValid)
it "says Fine is valid" $ Fine `shouldSatisfy` isValid
describe "GeneratedValidity" $ do
let nan = 1 :% 0
it "says G (1:%0) 0 is not valid" $
G nan 0 `shouldSatisfy` (not . isValid)
it "says G 0 (1:%0) is not valid" $
G 0 nan `shouldSatisfy` (not . isValid)
it "says G 0 0 is valid" $ G 0 0 `shouldSatisfy` isValid