packages feed

cleveland-0.2.0: src/Hedgehog/Gen/SizedList.hs

-- SPDX-FileCopyrightText: 2021 Oxhead Alpha
-- SPDX-License-Identifier: LicenseRef-MIT-OA

module Hedgehog.Gen.SizedList
  ( genSizedList
  , genSomeSizedList
  ) where


import Hedgehog (MonadGen)
import Hedgehog.Gen qualified as Gen
import Hedgehog.Range qualified as Range

import Morley.Util.SizedList.Types

genSizedList
  :: forall n m a n'. (SingIPeano n, IsoNatPeano n n', MonadGen m)
  => m a -> m (SizedList' n' a)
genSizedList el = sequence $ pure el

genSomeSizedList
  :: forall m a. (MonadGen m)
  => Range.Range Int -> m a -> m (SomeSizedList a)
genSomeSizedList len el = fromList <$> Gen.list len el