packages feed

polysemy-time-0.1.3.0: test/Polysemy/Time/Test/MeasureTest.hs

module Polysemy.Time.Test.MeasureTest where

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 do
        Time.sleep (MilliSeconds 100)
        fst <$> measure (Time.sleep (MilliSeconds 100))
      assert (t2 > convert (MilliSeconds 100))
      assert (t1 > convert (MilliSeconds 200))
      assert (t2 < t1)
      assert (t2 < convert (MilliSeconds 200))