packages feed

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