Skip to content

Commit

Permalink
Add function genUTxOIndexLarge.
Browse files Browse the repository at this point in the history
Function `genUTxOIndexLarge` generates large UTxO indices.
  • Loading branch information
jonathanknowles committed Jan 14, 2021
1 parent 8c22f89 commit b489295
Showing 1 changed file with 23 additions and 1 deletion.
24 changes: 23 additions & 1 deletion lib/core/src/Cardano/Wallet/Primitive/Types/UTxOIndex/Gen.hs
@@ -1,5 +1,6 @@
module Cardano.Wallet.Primitive.Types.UTxOIndex.Gen
( genUTxOIndexSmall
, genUTxOIndexLarge
, shrinkUTxOIndexSmall
) where

Expand All @@ -8,7 +9,8 @@ import Prelude
import Cardano.Wallet.Primitive.Types.Tx
( TxIn, TxOut )
import Cardano.Wallet.Primitive.Types.Tx.Gen
( genTxInSmallRange
( genTxInLargeRange
, genTxInSmallRange
, genTxOutSmallRange
, shrinkTxInSmallRange
, shrinkTxOutSmallRange
Expand All @@ -24,6 +26,10 @@ import Test.QuickCheck.Extra

import qualified Cardano.Wallet.Primitive.Types.UTxOIndex as UTxOIndex

--------------------------------------------------------------------------------
-- Small indices
--------------------------------------------------------------------------------

genUTxOIndexSmall :: Gen UTxOIndex
genUTxOIndexSmall = do
entryCount <- frequency
Expand All @@ -49,3 +55,19 @@ shrinkEntrySmallRange :: (TxIn, TxOut) -> [(TxIn, TxOut)]
shrinkEntrySmallRange (i, o) = uncurry (,) <$> shrinkInterleaved
(i, shrinkTxInSmallRange)
(o, shrinkTxOutSmallRange)

--------------------------------------------------------------------------------
-- Large indices
--------------------------------------------------------------------------------

genUTxOIndexLarge :: Gen UTxOIndex
genUTxOIndexLarge = do
entryCount <- choose (1024, 4096)
UTxOIndex.fromSequence <$> replicateM entryCount genEntryLargeRange

genEntryLargeRange :: Gen (TxIn, TxOut)
genEntryLargeRange = (,)
<$> genTxInLargeRange
-- Note that we don't need to choose outputs from a large range, as inputs
-- are already chosen from a large range:
<*> genTxOutSmallRange

0 comments on commit b489295

Please sign in to comment.