Skip to content

Commit 7927a88

Browse files
committed
Switch to type safe construction
1 parent 0d0adc7 commit 7927a88

File tree

5 files changed

+70
-31
lines changed

5 files changed

+70
-31
lines changed

eras/alonzo/test-suite/src/Test/Cardano/Ledger/Alonzo/AlonzoEraGen.hs

Lines changed: 57 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import Cardano.Ledger.Allegra.TxAuxData (AllegraTxAuxData (..))
2525
import Cardano.Ledger.Alonzo (AlonzoEra)
2626
import Cardano.Ledger.Alonzo.Core
2727
import Cardano.Ledger.Alonzo.PParams
28+
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusTxInfo, mkSupportedPlutusScript)
2829
import Cardano.Ledger.Alonzo.Rules (vKeyLocked)
2930
import Cardano.Ledger.Alonzo.Scripts as Alonzo (
3031
AlonzoPlutusPurpose (..),
@@ -98,11 +99,11 @@ import Numeric.Natural (Natural)
9899
import qualified PlutusLedgerApi.Common as P (Data (..))
99100
import System.Random
100101
import Test.Cardano.Ledger.AllegraEraGen (genValidityInterval)
101-
import Test.Cardano.Ledger.Alonzo.Arbitrary (alwaysFails, alwaysSucceeds, mkPlutusScript')
102+
import Test.Cardano.Ledger.Alonzo.Arbitrary ()
102103
import Test.Cardano.Ledger.Binary.Random
103104
import Test.Cardano.Ledger.Common (tracedDiscard)
104105
import Test.Cardano.Ledger.MaryEraGen (addTokens, genMint, maryGenesisValue, policyIndex)
105-
import Test.Cardano.Ledger.Plutus (zeroTestingCostModels)
106+
import Test.Cardano.Ledger.Plutus (alwaysFailsPlutus, alwaysSucceedsPlutus, zeroTestingCostModels)
106107
import Test.Cardano.Ledger.Plutus.Examples
107108
import Test.Cardano.Ledger.Shelley.Constants (Constants (..))
108109
import Test.Cardano.Ledger.Shelley.Generator.Core (
@@ -128,63 +129,98 @@ import Test.QuickCheck hiding ((><))
128129
vKeyLockedAdaOnly :: TxOut AlonzoEra -> Bool
129130
vKeyLockedAdaOnly txOut = vKeyLocked txOut && isAdaOnly (txOut ^. valueTxOutL)
130131

131-
phase2scripts3Arg :: forall era. AlonzoEraScript era => [TwoPhase3ArgInfo era]
132+
phase2scripts3Arg :: EraPlutusTxInfo PlutusV1 era => [TwoPhase3ArgInfo era]
132133
phase2scripts3Arg =
133-
[ mkTwoPhase3ArgInfo (alwaysSucceeds @'PlutusV1 3) (P.I 1) (P.I 1, bigMem, bigStep) True
134+
[ mkTwoPhase3ArgInfo
135+
(mkSupportedPlutusScript (alwaysSucceedsPlutus @'PlutusV1 3))
136+
(P.I 1)
137+
(P.I 1, bigMem, bigStep)
138+
True
134139
, mkTwoPhase3ArgInfo
135-
(mkPlutusScript' (redeemerSameAsDatum SPlutusV1))
140+
(mkSupportedPlutusScript (redeemerSameAsDatum SPlutusV1))
136141
(P.I 9)
137142
(P.I 9, bigMem, bigStep)
138143
True
139-
, mkTwoPhase3ArgInfo (mkPlutusScript' (evenDatum SPlutusV1)) (P.I 8) (P.I 8, bigMem, bigStep) True
140-
, mkTwoPhase3ArgInfo (alwaysFails @'PlutusV1 3) (P.I 1) (P.I 1, bigMem, bigStep) False
141144
, mkTwoPhase3ArgInfo
142-
(mkPlutusScript' (purposeIsWellformedWithDatum SPlutusV1))
145+
(mkSupportedPlutusScript (evenDatum SPlutusV1))
146+
(P.I 8)
147+
(P.I 8, bigMem, bigStep)
148+
True
149+
, mkTwoPhase3ArgInfo
150+
(mkSupportedPlutusScript (alwaysFailsPlutus @'PlutusV1 3))
151+
(P.I 1)
152+
(P.I 1, bigMem, bigStep)
153+
False
154+
, mkTwoPhase3ArgInfo
155+
(mkSupportedPlutusScript (purposeIsWellformedWithDatum SPlutusV1))
143156
(P.I 3)
144157
(P.I 4, bigMem, bigStep)
145158
True
146159
, mkTwoPhase3ArgInfo
147-
(mkPlutusScript' (datumIsWellformed SPlutusV1))
160+
(mkSupportedPlutusScript (datumIsWellformed SPlutusV1))
148161
(P.I 5)
149162
(P.I 6, bigMem, bigStep)
150163
True
151164
, mkTwoPhase3ArgInfo
152-
(mkPlutusScript' (inputsOutputsAreNotEmptyWithDatum SPlutusV1))
165+
(mkSupportedPlutusScript (inputsOutputsAreNotEmptyWithDatum SPlutusV1))
153166
(P.I 7)
154167
(P.I 9, bigMem, bigStep)
155168
True
156169
]
157170
where
158-
mkTwoPhase3ArgInfo script = TwoPhase3ArgInfo script (hashScript @era script)
171+
mkTwoPhase3ArgInfo plutusScript =
172+
let script = fromPlutusScript plutusScript
173+
in TwoPhase3ArgInfo script (hashScript script)
159174

160-
phase2scripts2Arg :: forall era. AlonzoEraScript era => [TwoPhase2ArgInfo era]
175+
phase2scripts2Arg :: EraPlutusTxInfo PlutusV1 era => [TwoPhase2ArgInfo era]
161176
phase2scripts2Arg =
162-
[ mkTwoPhase2ArgInfo (alwaysSucceeds @'PlutusV1 2) (P.I 1, bigMem, bigStep) True
163-
, mkTwoPhase2ArgInfo (mkPlutusScript' (evenRedeemerNoDatum SPlutusV1)) (P.I 14, bigMem, bigStep) True
164-
, mkTwoPhase2ArgInfo (alwaysFails @'PlutusV1 2) (P.I 1, bigMem, bigStep) False
177+
[ mkTwoPhase2ArgInfo
178+
(mkSupportedPlutusScript (alwaysSucceedsPlutus @'PlutusV1 2))
179+
(P.I 1, bigMem, bigStep)
180+
True
165181
, mkTwoPhase2ArgInfo
166-
(mkPlutusScript' (purposeIsWellformedNoDatum SPlutusV1))
182+
(mkSupportedPlutusScript (evenRedeemerNoDatum SPlutusV1))
167183
(P.I 14, bigMem, bigStep)
168184
True
169185
, mkTwoPhase2ArgInfo
170-
(mkPlutusScript' (inputsOutputsAreNotEmptyNoDatum SPlutusV1))
186+
(mkSupportedPlutusScript (alwaysFailsPlutus @'PlutusV1 2))
187+
(P.I 1, bigMem, bigStep)
188+
False
189+
, mkTwoPhase2ArgInfo
190+
(mkSupportedPlutusScript (purposeIsWellformedNoDatum SPlutusV1))
191+
(P.I 14, bigMem, bigStep)
192+
True
193+
, mkTwoPhase2ArgInfo
194+
(mkSupportedPlutusScript (inputsOutputsAreNotEmptyNoDatum SPlutusV1))
171195
(P.I 15, bigMem, bigStep)
172196
True
173197
]
174198
where
175-
mkTwoPhase2ArgInfo script = TwoPhase2ArgInfo script (hashScript @era script)
199+
mkTwoPhase2ArgInfo plutusScript =
200+
let script = fromPlutusScript plutusScript
201+
in TwoPhase2ArgInfo script (hashScript script)
176202

177-
phase2scripts3ArgSucceeds :: forall era. AlonzoEraScript era => Script era -> Bool
203+
phase2scripts3ArgSucceeds ::
204+
forall era.
205+
EraPlutusTxInfo PlutusV1 era =>
206+
Script era ->
207+
Bool
178208
phase2scripts3ArgSucceeds script =
179209
maybe True getSucceeds3 $
180210
List.find (\info -> getScript3 info == script) phase2scripts3Arg
181211

182-
phase2scripts2ArgSucceeds :: forall era. AlonzoEraScript era => Script era -> Bool
212+
phase2scripts2ArgSucceeds ::
213+
forall era.
214+
EraPlutusTxInfo PlutusV1 era =>
215+
Script era ->
216+
Bool
183217
phase2scripts2ArgSucceeds script =
184218
maybe True getSucceeds2 $
185219
List.find (\info -> getScript2 info == script) phase2scripts2Arg
186220

187-
genPlutus2Arg :: AlonzoEraScript era => Gen (Maybe (TwoPhase2ArgInfo era))
221+
genPlutus2Arg ::
222+
EraPlutusTxInfo PlutusV1 era =>
223+
Gen (Maybe (TwoPhase2ArgInfo era))
188224
genPlutus2Arg = frequency [(10, Just <$> elements phase2scripts2Arg), (90, pure Nothing)]
189225

190226
-- | Gen a Mint value in the Alonzo Era, with a 10% chance that it includes an AlonzoScript

eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Imp.hs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
module Test.Cardano.Ledger.Babbage.Imp (spec) where
99

10-
import Cardano.Ledger.Alonzo.Plutus.Context (ContextError)
10+
import Cardano.Ledger.Alonzo.Plutus.Context (ContextError, EraPlutusTxInfo)
1111
import Cardano.Ledger.Alonzo.Rules (
1212
AlonzoUtxoPredFailure,
1313
AlonzoUtxosPredFailure,
@@ -17,6 +17,7 @@ import Cardano.Ledger.Babbage.Core
1717
import Cardano.Ledger.Babbage.Rules (BabbageUtxowPredFailure (..))
1818
import Cardano.Ledger.Babbage.TxInfo (BabbageContextError)
1919
import Cardano.Ledger.BaseTypes (Inject)
20+
import Cardano.Ledger.Plutus (Language (..))
2021
import Cardano.Ledger.Shelley.Rules (
2122
ShelleyDelegPredFailure,
2223
ShelleyUtxoPredFailure,
@@ -31,6 +32,7 @@ spec ::
3132
forall era.
3233
( AlonzoEraImp era
3334
, BabbageEraTxBody era
35+
, EraPlutusTxInfo PlutusV2 era
3436
, InjectRuleFailure "LEDGER" ShelleyDelegPredFailure era
3537
, InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era
3638
, InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure era

eras/babbage/impl/testlib/Test/Cardano/Ledger/Babbage/Imp/UtxowSpec.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
module Test.Cardano.Ledger.Babbage.Imp.UtxowSpec (spec) where
1212

13-
import Cardano.Ledger.Alonzo.Plutus.Context (ContextError)
13+
import Cardano.Ledger.Alonzo.Plutus.Context (ContextError, EraPlutusTxInfo, mkSupportedPlutusScript)
1414
import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError (..))
1515
import Cardano.Ledger.Alonzo.Rules (AlonzoUtxosPredFailure (..), AlonzoUtxowPredFailure (..))
1616
import Cardano.Ledger.Alonzo.Scripts
@@ -28,19 +28,19 @@ import qualified Data.Map.Strict as Map
2828
import qualified Data.Sequence.Strict as SSeq
2929
import qualified Data.Set as Set
3030
import Lens.Micro
31-
import Test.Cardano.Ledger.Alonzo.Arbitrary (mkPlutusScript')
3231
import Test.Cardano.Ledger.Alonzo.ImpTest
3332
import Test.Cardano.Ledger.Imp.Common
3433
import Test.Cardano.Ledger.Plutus.Examples (redeemerSameAsDatum)
3534

3635
spec ::
3736
forall era.
3837
( AlonzoEraImp era
38+
, BabbageEraTxBody era
39+
, EraPlutusTxInfo PlutusV2 era
3940
, InjectRuleFailure "LEDGER" BabbageUtxowPredFailure era
4041
, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era
4142
, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era
4243
, Inject (BabbageContextError era) (ContextError era)
43-
, BabbageEraTxBody era
4444
) =>
4545
SpecWith (ImpInit (LedgerSpec era))
4646
spec = describe "UTXOW" $ do
@@ -55,7 +55,7 @@ spec = describe "UTXOW" $ do
5555
]
5656

5757
it "MalformedReferenceScripts" $ do
58-
let script = mkPlutusScript' @era (malformedPlutus @'PlutusV2)
58+
let script = fromPlutusScript (mkSupportedPlutusScript (malformedPlutus @'PlutusV2))
5959
let scriptHash = hashScript script
6060
addr <- freshKeyAddr_
6161
let tx =

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
module Test.Cardano.Ledger.Conway.Imp (spec, conwaySpec) where
1010

11-
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext (..))
11+
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusContext (..), EraPlutusTxInfo)
1212
import Cardano.Ledger.Alonzo.Rules (
1313
AlonzoUtxoPredFailure,
1414
AlonzoUtxosPredFailure,
@@ -31,6 +31,7 @@ import Cardano.Ledger.Conway.Rules (
3131
ConwayUtxoPredFailure,
3232
)
3333
import Cardano.Ledger.Conway.TxInfo (ConwayContextError)
34+
import Cardano.Ledger.Plutus (Language (..))
3435
import Cardano.Ledger.Shelley.API.Mempool (ApplyTx (..))
3536
import Cardano.Ledger.Shelley.Rules (
3637
ShelleyDelegPredFailure,
@@ -62,6 +63,7 @@ import Test.Cardano.Ledger.Shelley.ImpTest (ImpInit)
6263
spec ::
6364
forall era.
6465
( ConwayEraImp era
66+
, EraPlutusTxInfo PlutusV2 era
6567
, Inject (BabbageContextError era) (ContextError era)
6668
, Inject (ConwayContextError era) (ContextError era)
6769
, InjectRuleFailure "LEDGER" ConwayGovPredFailure era

libs/cardano-ledger-test/src/Test/Cardano/Ledger/Examples/BabbageFeatures.hs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ module Test.Cardano.Ledger.Examples.BabbageFeatures (
2525
) where
2626

2727
import Cardano.Ledger.Address (Addr (..))
28+
import Cardano.Ledger.Alonzo.Plutus.Context (EraPlutusTxInfo, mkSupportedPlutusScript)
2829
import Cardano.Ledger.Alonzo.Plutus.Evaluate (CollectError (BadTranslation))
2930
import Cardano.Ledger.Alonzo.Plutus.TxInfo (
3031
TxOutSource (TxOutFromInput, TxOutFromOutput),
@@ -59,7 +60,6 @@ import Cardano.Ledger.Plutus.Language (
5960
Language (..),
6061
Plutus (..),
6162
PlutusBinary (..),
62-
PlutusLanguage,
6363
)
6464
import Cardano.Ledger.Shelley.API (UTxO (..))
6565
import Cardano.Ledger.Shelley.LedgerState (UTxOState (..), smartUTxOState)
@@ -79,7 +79,6 @@ import qualified Data.Set as Set
7979
import GHC.Stack
8080
import Lens.Micro
8181
import qualified PlutusLedgerApi.V1 as PV1
82-
import Test.Cardano.Ledger.Alonzo.Arbitrary (mkPlutusScript')
8382
import Test.Cardano.Ledger.Core.KeyPair (KeyPair (..), mkAddr, mkWitnessVKey)
8483
import Test.Cardano.Ledger.Examples.STSTestUtils (
8584
mkGenesisTxIn,
@@ -142,9 +141,9 @@ evenData3ArgsScript proof =
142141
Conway -> evenData3ArgsLang @'PlutusV2
143142
where
144143
unsupported = "Plutus scripts are not supported in:" ++ show proof
145-
evenData3ArgsLang :: forall l era'. (PlutusLanguage l, AlonzoEraScript era') => Script era'
144+
evenData3ArgsLang :: forall l era'. EraPlutusTxInfo l era' => Script era'
146145
evenData3ArgsLang =
147-
mkPlutusScript' . Plutus @l . PlutusBinary . SBS.pack $
146+
fromPlutusScript . mkSupportedPlutusScript . Plutus @l . PlutusBinary . SBS.pack $
148147
concat
149148
[ [88, 65, 1, 0, 0, 51, 50, 34, 51, 34, 34, 37, 51, 83, 0]
150149
, [99, 50, 35, 51, 87, 52, 102, 225, 192, 8, 0, 64, 40, 2, 76]

0 commit comments

Comments
 (0)