packages feed

polysemy-chronos-0.1.0.0: test/Polysemy/Chronos/ChronosTimeTest.hs

module Polysemy.Chronos.ChronosTimeTest where

import qualified Chronos as Chronos

import Polysemy.Chronos (interpretTimeChronos)
import Polysemy.Chronos.Time (interpretTimeChronosAt)
import Polysemy.Test (UnitTest, assert, runTestAuto, (===))
import Polysemy.Time.Calendar (year)
import qualified Polysemy.Time.Data.Time as Time
import Polysemy.Time.Data.TimeUnit (Seconds(Seconds))

test_chronosTime :: UnitTest
test_chronosTime =
  runTestAuto do
    interpretTimeChronos do
      time1 <- Time.now
      time2 <- Time.now
      assert (time1 < time2)

testDatetime :: Chronos.Datetime
testDatetime =
  Chronos.datetimeFromYmdhms 1845 12 31 23 59 59

testTime :: Chronos.Time
testTime =
  Chronos.datetimeToTime testDatetime

test_chronosTimeAt :: UnitTest
test_chronosTimeAt =
  runTestAuto do
    interpretTimeChronosAt testTime do
      Time.sleep (Seconds 2)
      time <- Time.now
      1846 === year time