packages feed

effectful-zoo-0.0.3.0: components/hedgehog/Effectful/Zoo/Hedgehog/Api/Gen/Time.hs

module Effectful.Zoo.Hedgehog.Api.Gen.Time
  ( genPosixTime,
  ) where

import Data.Time.Clock.POSIX (POSIXTime)
import HaskellWorks.Prelude
import Hedgehog
import Hedgehog.Gen qualified as Gen
import Hedgehog.Range qualified as Range

genPosixTime :: Gen POSIXTime
genPosixTime = do
  -- Generate a random integer within a reasonable range for POSIX time
  -- POSIXTime is a type synonym for NominalDiffTime, which is in seconds
  -- We'll use a range from 0 to a large number of seconds to cover a wide time span
  seconds <- Gen.integral (Range.linear 0 4_102_444_800) -- Up to year 2100

  pure $ fromIntegral @Word64 seconds