module Main where
import Test.Invariant
import Test.Tasty
import Test.Tasty.QuickCheck
main :: IO ()
main = defaultMain $
testGroup "Tests"
[ testGroup "Arity 1"
[ testProperty "Idempotence" $
idempotent (* (0 :: Int))
, testProperty "Idempotence" $
(/=0) &> not . idempotent (* (2 :: Int))
, testProperty "Idempotence" $
idempotent (abs :: Double -> Double)
, testProperty "Idempotence" $
idempotent (signum :: Int -> Int)
, testProperty "Idempotence" $
((*) :: Int -> Int -> Int) `distributesOver` (+)
, testProperty "Idempotence" $
(*) `distributesOver` ((+) :: Int -> Int -> Int)
]
]