packages feed

time-1.16: test/main/Test/AddDiff.hs

module Test.AddDiff (
    AddDiff (..),
    testAddDiff,
) where

import Test.Arbitrary
import Test.Tasty
import Test.Tasty.QuickCheck hiding (reason)

data AddDiff duration time = MkAddDiff
    { adName :: String
    , adAdd :: duration -> time -> time
    , adDifference :: time -> time -> duration
    }

testAddDiff :: (Arbitrary (NoLeapSeconds time), Eq time, Show time) => AddDiff duration time -> TestTree
testAddDiff MkAddDiff{..} =
    testProperty adName $
        \(MkNoLeapSeconds time1) (MkNoLeapSeconds time2) ->
            adAdd (adDifference time2 time1) time1 == time2