import System.Time.Monotonic.Direct import Data.Time.Clock (DiffTime) test :: DiffTime -> CTimeSpec -> CTimeSpec -> IO Bool test expected new old = return $ diffCTimeSpec new old == expected && diffCTimeSpec old new == -expected main :: IO () main = do True <- test 0.000000001 (CTimeSpec 100 999999999) (CTimeSpec 100 999999998) True <- test 0.000000002 (CTimeSpec 101 1) (CTimeSpec 100 999999999) True <- test 0.000000002 (CTimeSpec minBound 1) (CTimeSpec maxBound 999999999) True <- test 1.999999998 (CTimeSpec minBound 999999999) (CTimeSpec maxBound 1) True <- test 1.0 (CTimeSpec minBound 0) (CTimeSpec maxBound 0) True <- test 0.0 (CTimeSpec 0 0) (CTimeSpec 0 0) putStrLn "All tests passed"