packages feed

test-invariant-0.3.1.2: test/Test.hs

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)
      ]
    ]