polysemy-chronos-0.1.3.2: test/Polysemy/Chronos/ChronosTimeTest.hs
module Polysemy.Chronos.ChronosTimeTest where
import qualified Chronos as Chronos
import Polysemy.Test (UnitTest, assert, assertEq, runTestAuto)
import Polysemy.Time.Calendar (year)
import qualified Polysemy.Time.Data.Time as Time
import Polysemy.Time.Data.TimeUnit (Seconds (Seconds))
import Polysemy.Chronos (interpretTimeChronos)
import Polysemy.Chronos.Time (interpretTimeChronosAt)
test_chronosTime :: UnitTest
test_chronosTime =
runTestAuto do
interpretTimeChronos do
time1 <- Time.now @Chronos.Time @Chronos.Date
time2 <- Time.now @Chronos.Time @Chronos.Date
assert @IO (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 @Chronos.Time @Chronos.Date (Seconds 2)
time <- Time.now @Chronos.Time @Chronos.Date
assertEq @_ @IO 1846 (year time)