@@ -72,7 +72,7 @@ import Hydra.Data.ContestationPeriod qualified as OnChain
72
72
import Hydra.Data.Party qualified as OnChain
73
73
import Hydra.Ledger.Cardano (adjustUTxO )
74
74
import Hydra.Ledger.Cardano.Evaluate (genPointInTimeBefore , genValidityBoundsFromContestationPeriod , slotLength , systemStart )
75
- import Hydra.Ledger.Cardano.Time (slotNoFromUTCTime )
75
+ import Hydra.Ledger.Cardano.Time (slotNoFromUTCTime , slotNoToUTCTime )
76
76
import Hydra.Plutus (commitValidatorScript , depositValidatorScript , initialValidatorScript )
77
77
import Hydra.Tx (
78
78
CommitBlueprintTx (.. ),
@@ -130,8 +130,7 @@ import Test.Hydra.Tx.Gen (
130
130
genUTxOAdaOnlyOfSize ,
131
131
genVerificationKey ,
132
132
)
133
- import Test.QuickCheck (choose , frequency , oneof , suchThat , vector )
134
- import Test.QuickCheck.Gen (elements )
133
+ import Test.QuickCheck (choose , chooseEnum , elements , frequency , oneof , suchThat , vector )
135
134
136
135
-- | A class for accessing the known 'UTxO' set in a type. This is useful to get
137
136
-- all the relevant UTxO for resolving transaction inputs.
@@ -463,6 +462,7 @@ increment ::
463
462
ConfirmedSnapshot Tx ->
464
463
-- | Deposited TxId
465
464
TxId ->
465
+ -- | Valid until, must be before deadline.
466
466
SlotNo ->
467
467
Either IncrementTxError Tx
468
468
increment ctx spendableUTxO headId headParameters incrementingSnapshot depositTxId upperValiditySlot = do
@@ -1138,20 +1138,21 @@ genDepositTx numParties = do
1138
1138
ctx <- genHydraContextFor numParties
1139
1139
utxo <- genUTxOAdaOnlyOfSize 1 `suchThat` (not . null )
1140
1140
(_, st@ OpenState {headId}) <- genStOpen ctx
1141
- deadline <- arbitrary
1142
- validBefore <- arbitrary
1143
- let tx = depositTx (ctxNetworkId ctx) headId (mkSimpleBlueprintTx utxo) validBefore deadline
1141
+ -- NOTE: Not too high so we can use chooseEnum (which goes through Int) here and in other generators
1142
+ slot <- chooseEnum (0 , 1_000_000 )
1143
+ slotsUntilDeadline <- chooseEnum (0 , 86400 )
1144
+ let deadline = slotNoToUTCTime systemStart slotLength (slot + slotsUntilDeadline)
1145
+ let tx = depositTx (ctxNetworkId ctx) headId (mkSimpleBlueprintTx utxo) slot deadline
1144
1146
pure (ctx, st, utxo <> utxoFromTx tx, tx)
1145
1147
1146
1148
genRecoverTx ::
1147
1149
Gen (UTxO , Tx )
1148
1150
genRecoverTx = do
1149
1151
(_, _, depositedUTxO, txDeposit) <- genDepositTx maximumNumberOfParties
1150
- let DepositObservation {deposited, deadline} =
1151
- fromJust $ observeDepositTx testNetworkId txDeposit
1152
- let slotNo = slotNoFromUTCTime systemStart slotLength deadline
1153
- slotNo' <- arbitrary
1154
- let tx = recoverTx (getTxId $ getTxBody txDeposit) deposited (slotNo + slotNo')
1152
+ let DepositObservation {deposited, deadline} = fromJust $ observeDepositTx testNetworkId txDeposit
1153
+ let deadlineSlot = slotNoFromUTCTime systemStart slotLength deadline
1154
+ slotAfterDeadline <- chooseEnum (deadlineSlot, deadlineSlot + 86400 )
1155
+ let tx = recoverTx (getTxId $ getTxBody txDeposit) deposited slotAfterDeadline
1155
1156
pure (depositedUTxO, tx)
1156
1157
1157
1158
genIncrementTx :: Int -> Gen (ChainContext , OpenState , UTxO , Tx )
@@ -1162,12 +1163,13 @@ genIncrementTx numParties = do
1162
1163
let openUTxO = getKnownUTxO st
1163
1164
let version = 0
1164
1165
snapshot <- genConfirmedSnapshot headId version 1 openUTxO (Just deposited) Nothing (ctxHydraSigningKeys ctx)
1165
- let slotNo = slotNoFromUTCTime systemStart slotLength deadline
1166
+ let deadlineSlot = slotNoFromUTCTime systemStart slotLength deadline
1167
+ slotBeforeDeadline <- chooseEnum (0 , deadlineSlot)
1166
1168
pure
1167
1169
( cctx
1168
1170
, st
1169
1171
, utxo
1170
- , unsafeIncrement cctx (openUTxO <> utxo) headId (ctxHeadParameters ctx) snapshot depositTxId slotNo
1172
+ , unsafeIncrement cctx (openUTxO <> utxo) headId (ctxHeadParameters ctx) snapshot depositTxId slotBeforeDeadline
1171
1173
)
1172
1174
1173
1175
genDecrementTx :: Int -> Gen (ChainContext , UTxO , OpenState , UTxO , Tx )
0 commit comments