Skip to content

Commit e1f1820

Browse files
committed
Generate arbitrary PoolParams with no default vote before Dijkstra
and in Snapshots
1 parent 525a3fc commit e1f1820

File tree

7 files changed

+78
-14
lines changed

7 files changed

+78
-14
lines changed

eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Arbitrary.hs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module Test.Cardano.Ledger.Conway.Arbitrary (
2323
genParameterChange,
2424
genNewConstitution,
2525
govActionGenerators,
26+
genConwayTxCertPool,
2627
genConwayPlutusPurposePointer,
2728
genGovAction,
2829
genGovActionState,
@@ -76,7 +77,8 @@ import Test.Cardano.Ledger.Alonzo.Arbitrary (genValidAndUnknownCostModels, genVa
7677
import Test.Cardano.Ledger.Babbage.Arbitrary ()
7778
import Test.Cardano.Ledger.Binary.Random (QC (..))
7879
import Test.Cardano.Ledger.Common
79-
import Test.Cardano.Ledger.Core.Arbitrary (uniformSubMap)
80+
import Test.Cardano.Ledger.Core.Arbitrary (genPoolParamsNoDefaultVote, uniformSubMap)
81+
import Test.Cardano.Ledger.Shelley.Arbitrary ()
8082

8183
instance
8284
(Era era, Arbitrary (PParamsUpdate era)) =>
@@ -163,10 +165,18 @@ instance Era era => Arbitrary (ConwayTxCert era) where
163165
arbitrary =
164166
oneof
165167
[ ConwayTxCertDeleg <$> arbitrary
166-
, ConwayTxCertPool <$> arbitrary
168+
, genConwayTxCertPool
167169
, ConwayTxCertGov <$> arbitrary
168170
]
169171

172+
genConwayTxCertPool :: Gen (ConwayTxCert era)
173+
genConwayTxCertPool =
174+
ConwayTxCertPool
175+
<$> oneof
176+
[ RegPool <$> genPoolParamsNoDefaultVote
177+
, RetirePool <$> arbitrary <*> arbitrary
178+
]
179+
170180
instance Arbitrary ConwayGovCert where
171181
arbitrary =
172182
oneof

eras/conway/impl/testlib/Test/Cardano/Ledger/Conway/Translation/TranslatableGen.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import qualified Test.Cardano.Ledger.Babbage.Translation.TranslatableGen as Babb
3030
utxoWithTx,
3131
)
3232
import Test.Cardano.Ledger.Common
33-
import Test.Cardano.Ledger.Conway.Arbitrary ()
33+
import Test.Cardano.Ledger.Conway.Arbitrary (genConwayTxCertPool)
3434

3535
instance TranslatableGen ConwayEra where
3636
tgRedeemers = genRedeemers
@@ -65,7 +65,7 @@ genTxBody l@(SupportedLanguage slang) = do
6565
genOSet $
6666
frequency
6767
[ (33, ConwayTxCertDeleg <$> genDelegCert)
68-
, (33, ConwayTxCertPool <$> arbitrary)
68+
, (33, genConwayTxCertPool)
6969
, (offPrePlutusV3 33, ConwayTxCertGov <$> arbitrary)
7070
]
7171
genForPlutusV3 :: Arbitrary a => a -> Gen a

eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/Arbitrary.hs

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ import Cardano.Ledger.Shelley.Tx (Tx (..))
7777
import Cardano.Ledger.Shelley.TxAuxData
7878
import Cardano.Ledger.Shelley.TxCert (
7979
GenesisDelegCert (..),
80-
ShelleyTxCert,
80+
ShelleyTxCert (..),
8181
)
8282
import Cardano.Ledger.Shelley.TxOut
8383
import Cardano.Ledger.Shelley.TxWits (ShelleyTxWits (ShelleyTxWits))
@@ -93,7 +93,7 @@ import Data.Word (Word64)
9393
import Generic.Random (genericArbitraryU)
9494
import Test.Cardano.Chain.UTxO.Gen (genCompactTxOut)
9595
import Test.Cardano.Ledger.Common
96-
import Test.Cardano.Ledger.Core.Arbitrary ()
96+
import Test.Cardano.Ledger.Core.Arbitrary (genPoolParamsNoDefaultVote)
9797
import Test.Cardano.Ledger.Core.Utils (unsafeBoundRational)
9898
import Test.QuickCheck.Hedgehog (hedgehog)
9999

@@ -248,7 +248,7 @@ instance Arbitrary PoolRewardInfo where
248248
PoolRewardInfo
249249
<$> arbitrary
250250
<*> arbitrary
251-
<*> arbitrary
251+
<*> genPoolParamsNoDefaultVote
252252
<*> arbitrary
253253
<*> arbitrary
254254
shrink = genericShrink
@@ -439,8 +439,18 @@ vectorOfMetadatumSimple = do
439439
------------------------------------------------------------------------------------------
440440

441441
instance Era era => Arbitrary (ShelleyTxCert era) where
442-
arbitrary = genericArbitraryU
443442
shrink = genericShrink
443+
arbitrary =
444+
oneof
445+
[ ShelleyTxCertDelegCert <$> arbitrary
446+
, ShelleyTxCertPool
447+
<$> oneof
448+
[ RegPool <$> genPoolParamsNoDefaultVote
449+
, RetirePool <$> arbitrary <*> arbitrary
450+
]
451+
, ShelleyTxCertGenesisDeleg <$> arbitrary
452+
, ShelleyTxCertMir <$> arbitrary
453+
]
444454

445455
instance Arbitrary ShelleyDelegCert where
446456
arbitrary = genericArbitraryU
@@ -608,7 +618,17 @@ instance
608618
pure ShelleyGenesis {..}
609619

610620
instance Arbitrary ShelleyGenesisStaking where
611-
arbitrary = ShelleyGenesisStaking <$> arbitrary <*> arbitrary
621+
arbitrary = ShelleyGenesisStaking <$> genPoolParamsListMap <*> arbitrary
622+
623+
genPoolParamsListMap :: Gen (LM.ListMap (KeyHash 'StakePool) PoolParams)
624+
genPoolParamsListMap =
625+
LM.fromList <$> listOf pair
626+
where
627+
pair :: Gen (KeyHash 'StakePool, PoolParams)
628+
pair = do
629+
k <- arbitrary
630+
v <- genPoolParamsNoDefaultVote
631+
pure (k, v)
612632

613633
instance
614634
( Era era

eras/shelley/impl/testlib/Test/Cardano/Ledger/Shelley/UnitTests/InstantStakeTest.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import Data.MonoTuple (TupleN)
2020
import qualified Data.VMap as VMap
2121
import Lens.Micro
2222
import Test.Cardano.Ledger.Common
23-
import Test.Cardano.Ledger.Core.Arbitrary ()
23+
import Test.Cardano.Ledger.Core.Arbitrary (genPoolParamsNoDefaultVote)
2424
import Test.Cardano.Ledger.Core.KeyPair (mkAddr)
2525
import Test.Cardano.Ledger.Shelley.Era
2626
import Test.Cardano.Ledger.Shelley.ImpTest
@@ -36,7 +36,7 @@ arbitraryLens l b = (l .~ b) <$> arbitrary
3636

3737
instantStakeIncludesRewards :: forall era. ShelleyEraImp era => Gen Property
3838
instantStakeIncludesRewards = do
39-
(pool1, pool2) <- arbitrary @(TupleN 2 PoolParams)
39+
(pool1, pool2) <- (,) <$> genPoolParamsNoDefaultVote <*> genPoolParamsNoDefaultVote
4040
let
4141
poolId1 = pool1 ^. ppIdL
4242
poolId2 = pool2 ^. ppIdL

libs/cardano-ledger-api/cardano-ledger-api.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ library testlib
100100
cardano-ledger-binary:{cardano-ledger-binary, testlib},
101101
cardano-ledger-core:{cardano-ledger-core, testlib},
102102
cardano-ledger-dijkstra:testlib,
103+
containers,
103104
data-default,
104105
prettyprinter,
105106

libs/cardano-ledger-api/testlib/Test/Cardano/Ledger/Api/Arbitrary.hs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,19 @@
33
module Test.Cardano.Ledger.Api.Arbitrary () where
44

55
import Cardano.Ledger.Api.State.Query (MemberStatus, QueryPoolStateResult (..))
6+
import qualified Data.Map as Map
67
import Test.Cardano.Ledger.Common
8+
import Test.Cardano.Ledger.Core.Arbitrary (genPoolParamsNoDefaultVote)
79
import Test.Cardano.Ledger.Dijkstra.Arbitrary ()
810

911
instance Arbitrary MemberStatus where
1012
arbitrary = arbitraryBoundedEnum
1113

1214
instance Arbitrary QueryPoolStateResult where
13-
arbitrary = QueryPoolStateResult <$> arbitrary <*> arbitrary <*> arbitrary <*> arbitrary
15+
arbitrary = QueryPoolStateResult <$> genPoolParams <*> genPoolParams <*> arbitrary <*> arbitrary
16+
where
17+
genPoolParams = Map.fromList <$> listOf pair
18+
pair = do
19+
k <- arbitrary
20+
v <- genPoolParamsNoDefaultVote
21+
pure (k, v)

libs/cardano-ledger-core/testlib/Test/Cardano/Ledger/Core/Arbitrary.hs

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module Test.Cardano.Ledger.Core.Arbitrary (
2020
genAddrBadPtr,
2121
genCompactAddrBadPtr,
2222
genBadPtr,
23+
genPoolParamsNoDefaultVote,
2324
genericShrinkMemo,
2425

2526
-- * Plutus
@@ -451,6 +452,20 @@ instance Arbitrary PoolParams where
451452
<*> arbitrary
452453
<*> arbitrary
453454

455+
genPoolParamsNoDefaultVote :: Gen PoolParams
456+
genPoolParamsNoDefaultVote =
457+
PoolParams
458+
<$> arbitrary
459+
<*> arbitrary
460+
<*> arbitrary
461+
<*> arbitrary
462+
<*> arbitrary
463+
<*> arbitrary
464+
<*> arbitrary
465+
<*> arbitrary
466+
<*> arbitrary
467+
<*> pure BaseTypes.SNothing
468+
454469
instance Arbitrary StakePoolState where
455470
arbitrary =
456471
StakePoolState
@@ -667,7 +682,17 @@ instance Arbitrary SnapShot where
667682
SnapShot
668683
<$> arbitrary
669684
<*> arbitrary
670-
<*> arbitrary
685+
<*> genPoolParamsVMap
686+
687+
genPoolParamsVMap :: Gen (VMap.VMap VMap.VB VMap.VB (KeyHash 'StakePool) PoolParams)
688+
genPoolParamsVMap =
689+
VMap.fromMap . Map.fromList <$> listOf pair
690+
where
691+
pair :: Gen (KeyHash 'StakePool, PoolParams)
692+
pair = do
693+
k <- arbitrary
694+
v <- genPoolParamsNoDefaultVote
695+
pure (k, v)
671696

672697
instance Arbitrary SnapShots where
673698
arbitrary = do
@@ -684,7 +709,7 @@ instance Arbitrary SnapShots where
684709
-- There will never be a real Stake in the system with that many Ada, because total Ada is constant.
685710
-- So using a restricted Arbitrary Generator is OK.
686711
instance Arbitrary Stake where
687-
arbitrary = Stake <$> (VMap.fromMap <$> theMap)
712+
arbitrary = Stake . VMap.fromMap <$> theMap
688713
where
689714
genWord64 :: Int -> Gen Word64
690715
genWord64 n =

0 commit comments

Comments
 (0)