polysemy-time-0.1.3.2: test/Polysemy/Time/Test/MeasureTest.hs
module Polysemy.Time.Test.MeasureTest where
import Data.Time (Day, UTCTime)
import Polysemy.Test (UnitTest, assert, runTestAuto)
import qualified Polysemy.Time.Data.Time as Time
import Polysemy.Time.Data.TimeUnit (MilliSeconds (MilliSeconds), convert)
import Polysemy.Time.Ghc (interpretTimeGhc)
import Polysemy.Time.Measure (measure)
test_measure :: UnitTest
test_measure =
runTestAuto do
interpretTimeGhc do
(t1, t2) <- measure @_ @UTCTime @Day do
Time.sleep @UTCTime @Day (MilliSeconds 100)
fst <$> measure @_ @UTCTime @Day (Time.sleep @UTCTime @Day (MilliSeconds 100))
assert @IO (t2 > convert (MilliSeconds 100))
assert @IO (t1 > convert (MilliSeconds 200))
assert @IO (t2 < t1)
assert @IO (t2 < convert (MilliSeconds 200))