Test the SerializeUTCTime property

This commit is contained in:
2026-09-12 20:25:24 +03:00
parent a3dd63f26c
commit aaba917a9b
4 changed files with 26 additions and 10 deletions
+17 -1
View File
@@ -9,9 +9,10 @@ import Data.Foldable (for_)
import AFRP
import Data.Functor.Identity (Identity (..))
import Data.List (sort)
import Data.Serialize (get, put, runGet, runPut)
import qualified Data.Set as S
import qualified Data.Text as T
import Data.Time (NominalDiffTime, UTCTime (..), utc)
import Data.Time (Day (..), NominalDiffTime, UTCTime (..), picosecondsToDiffTime, utc)
import Data.UUID (nil)
import Hedgehog
import qualified Hedgehog.Gen as Gen
@@ -86,6 +87,7 @@ spec = describe "AFRP" $ do
delayEventSpec
debounceSpec
rollupSpec
serializeSpec
effSpec
mapAccumRequestSpec
preMapAccumRequestSpec
@@ -404,6 +406,20 @@ eventGen = Gen.frequency
, (1, pure Tick)
]
timeGen :: Gen SerializeUTCTime
timeGen = do
day <- ModifiedJulianDay . fromIntegral <$> Gen.int (Range.linear 0 100000)
pico <- picosecondsToDiffTime . fromIntegral
<$> Gen.int (Range.linear 0 (86400 * 10 ^ (12 :: Int) - 1))
pure $ SerializeUTCTime (UTCTime day pico)
serializeSpec :: Spec
serializeSpec = describe "SerializeUTCTime" $ do
it "get (put x) == pure x" $
hedgehog $ do
x <- forAll timeGen
tripping x (runPut . put) (runGet get)
effSpec :: Spec
effSpec = describe "eff" $ do
it "lifts a pure effect function into a stateless Mealy" $