morley-upgradeable-0.3: src/Hedgehog/Gen/Lorentz/UStore.hs
-- SPDX-FileCopyrightText: 2020 Tocqueville Group
--
-- SPDX-License-Identifier: LicenseRef-MIT-TQ
module Hedgehog.Gen.Lorentz.UStore
( genUStoreSubMap
, genUStoreFieldExt
) where
import Prelude
import Hedgehog (MonadGen)
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
import Lorentz.UStore.Types (UStoreFieldExt(..), type (|~>) (..))
import Cleveland.Util (genTuple2)
genUStoreSubMap :: (MonadGen m, Ord k) => m k -> m v -> m (k |~> v)
genUStoreSubMap genK genV = UStoreSubMap <$> Gen.map (Range.linear 0 100) (genTuple2 genK genV)
genUStoreFieldExt :: MonadGen m => m v -> m (UStoreFieldExt marker v)
genUStoreFieldExt genV = UStoreField <$> genV