cleveland-0.1.2: src/Hedgehog/Gen/Tezos/Core.hs
-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA
module Hedgehog.Gen.Tezos.Core
( genChainId
, genMutez
, genTimestamp
) where
import Hedgehog (MonadGen, Range)
import Hedgehog.Gen qualified as Gen
import Hedgehog.Range qualified as Range
import Morley.Tezos.Core
(ChainId(..), Mutez(..), Timestamp, mkMutez, timestampFromSeconds, timestampToSeconds)
import Hedgehog.Range.Defaults ()
genChainId :: MonadGen m => m ChainId
genChainId = UnsafeChainId <$> Gen.bytes (Range.singleton 4)
-- | Generates an arbitrary `Mutez` value constrained to the given range.
genMutez :: MonadGen m => Range Mutez -> m Mutez
genMutez range = unsafe . mkMutez <$> Gen.word64 (fromIntegral . unMutez <$> range)
genTimestamp :: MonadGen m => Range Timestamp -> m Timestamp
genTimestamp range =
timestampFromSeconds <$> Gen.integral (timestampToSeconds <$> range)