entwine-0.0.2: test/Test/Entwine/Data/Duration.hs
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TemplateHaskell #-}
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
module Test.Entwine.Data.Duration where
import Entwine.P
import System.IO
import Test.QuickCheck
import Entwine.Data.Duration
--
-- Symmetric conversions
--
prop_microseconds n =
toMicroseconds (microseconds n) === n
prop_milliseconds n =
toMilliseconds (milliseconds n) === n
prop_seconds n =
toSeconds (seconds n) === n
prop_minutes n =
toMinutes (minutes n) === n
prop_hours n =
toHours (hours n) === n
--
-- Scaling
--
prop_microseconds_scale n =
toMicroseconds (microseconds n) === n
prop_milliseconds_scale n =
toMicroseconds (milliseconds n) === (n * 1000)
prop_seconds_scale n =
toMicroseconds (seconds n) === (n * 1000 * 1000)
prop_minutes_scale n =
toMicroseconds (minutes n) === (n * 60 * 1000 * 1000)
prop_hours_scale n =
toMicroseconds (hours n) === (n * 60 * 60 * 1000 * 1000)
--
-- Sanity checks
--
prop_sanity = conjoin [
hours 1 === minutes 60
, minutes 1 === seconds 60
, seconds 1 === milliseconds 1000
, milliseconds 1 === microseconds 1000
]
return []
tests :: IO Bool
tests = $quickCheckAll