Skip to content

Commit 6d10eec

Browse files
committed
Add test
1 parent a55347a commit 6d10eec

File tree

6 files changed

+67
-2
lines changed

6 files changed

+67
-2
lines changed

eras/dijkstra/impl/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## 0.2.0.0
44

5+
* Add `Test.Cardano.Ledger.Dijkstra.Imp.UtxoSpec`
56
* Add `DijkstraUtxoPredFailure`
67
* Add `DijkstraUTXO`
78
* Add `requiredTopLevelGuardsDijkstraTxBodyRawL`

eras/dijkstra/impl/cardano-ledger-dijkstra.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ library testlib
119119
Test.Cardano.Ledger.Dijkstra.Era
120120
Test.Cardano.Ledger.Dijkstra.Examples
121121
Test.Cardano.Ledger.Dijkstra.Imp
122+
Test.Cardano.Ledger.Dijkstra.Imp.UtxoSpec
122123
Test.Cardano.Ledger.Dijkstra.Imp.UtxowSpec
123124
Test.Cardano.Ledger.Dijkstra.ImpTest
124125
Test.Cardano.Ledger.Dijkstra.TreeDiff

eras/dijkstra/impl/src/Cardano/Ledger/Dijkstra/Rules/Ledger.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import Cardano.Ledger.Conway.Rules (
2828
import Cardano.Ledger.Dijkstra.Core (EraRuleEvent, EraRuleFailure, InjectRuleFailure (..))
2929
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
3030
import Cardano.Ledger.Dijkstra.Rules.Certs ()
31+
import Cardano.Ledger.Dijkstra.Rules.Utxo (DijkstraUtxoPredFailure)
3132
import Cardano.Ledger.Dijkstra.Rules.Utxow ()
3233
import Cardano.Ledger.Shelley.Rules (
3334
ShelleyLedgerPredFailure,
@@ -95,3 +96,6 @@ instance InjectRuleFailure "LEDGER" ConwayGovCertPredFailure DijkstraEra where
9596

9697
instance InjectRuleFailure "LEDGER" ConwayGovPredFailure DijkstraEra where
9798
injectFailure = ConwayGovFailure
99+
100+
instance InjectRuleFailure "LEDGER" DijkstraUtxoPredFailure DijkstraEra where
101+
injectFailure = ConwayUtxowFailure . injectFailure

eras/dijkstra/impl/src/Cardano/Ledger/Dijkstra/Rules/Utxow.hs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import Cardano.Ledger.Conway.Rules (
2323
)
2424
import Cardano.Ledger.Dijkstra.Core (EraRuleEvent, EraRuleFailure, InjectRuleFailure (..))
2525
import Cardano.Ledger.Dijkstra.Era (DijkstraEra)
26-
import Cardano.Ledger.Dijkstra.Rules.Utxo ()
26+
import Cardano.Ledger.Dijkstra.Rules.Utxo (DijkstraUtxoPredFailure)
2727
import Cardano.Ledger.Shelley.Rules (ShelleyUtxoPredFailure, ShelleyUtxowPredFailure)
2828

2929
type instance EraRuleFailure "UTXOW" DijkstraEra = ConwayUtxowPredFailure DijkstraEra
@@ -61,3 +61,6 @@ instance InjectRuleFailure "UTXOW" ShelleyUtxoPredFailure DijkstraEra where
6161

6262
instance InjectRuleFailure "UTXOW" AllegraUtxoPredFailure DijkstraEra where
6363
injectFailure = UtxoFailure . injectFailure
64+
65+
instance InjectRuleFailure "UTXOW" DijkstraUtxoPredFailure DijkstraEra where
66+
injectFailure = UtxoFailure

eras/dijkstra/impl/testlib/Test/Cardano/Ledger/Dijkstra/Imp.hs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@ module Test.Cardano.Ledger.Dijkstra.Imp where
1111
import Cardano.Ledger.Conway.Rules
1212
import Cardano.Ledger.Dijkstra (DijkstraEra)
1313
import Cardano.Ledger.Dijkstra.Core
14+
import Cardano.Ledger.Dijkstra.Rules (DijkstraUtxoPredFailure)
1415
import Cardano.Ledger.Shelley.Rules
1516
import Test.Cardano.Ledger.Common
1617
import qualified Test.Cardano.Ledger.Conway.Imp as ConwayImp
18+
import qualified Test.Cardano.Ledger.Dijkstra.Imp.UtxoSpec as Utxo
1719
import qualified Test.Cardano.Ledger.Dijkstra.Imp.UtxowSpec as Utxow
1820
import Test.Cardano.Ledger.Dijkstra.ImpTest
1921

@@ -24,6 +26,7 @@ spec ::
2426
, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era
2527
, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era
2628
, Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era
29+
, InjectRuleFailure "LEDGER" DijkstraUtxoPredFailure era
2730
) =>
2831
Spec
2932
spec = do
@@ -32,9 +35,12 @@ spec = do
3235

3336
dijkstraEraGenericSpec ::
3437
forall era.
35-
DijkstraEraImp era =>
38+
( DijkstraEraImp era
39+
, InjectRuleFailure "LEDGER" DijkstraUtxoPredFailure era
40+
) =>
3641
SpecWith (ImpInit (LedgerSpec era))
3742
dijkstraEraGenericSpec = do
3843
describe "UTXOW" Utxow.spec
44+
describe "UTXO" Utxo.spec
3945

4046
instance EraSpecificSpec DijkstraEra
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
{-# LANGUAGE DataKinds #-}
2+
{-# LANGUAGE FlexibleContexts #-}
3+
{-# LANGUAGE OverloadedLists #-}
4+
{-# LANGUAGE RankNTypes #-}
5+
6+
module Test.Cardano.Ledger.Dijkstra.Imp.UtxoSpec (spec) where
7+
8+
import Cardano.Ledger.Address (Addr (..))
9+
import Cardano.Ledger.BaseTypes (Inject (..), Network (..), StrictMaybe (..))
10+
import Cardano.Ledger.Coin (Coin (..))
11+
import Cardano.Ledger.Credential (Credential (..), StakeReference (..))
12+
import Cardano.Ledger.Dijkstra.Core (
13+
BabbageEraTxBody (..),
14+
EraTx (..),
15+
EraTxBody (..),
16+
EraTxOut (..),
17+
InjectRuleFailure (..),
18+
)
19+
import Cardano.Ledger.Dijkstra.Rules (DijkstraUtxoPredFailure (..))
20+
import Cardano.Ledger.Tools (ensureMinCoinTxOut)
21+
import Lens.Micro ((&), (.~))
22+
import Test.Cardano.Ledger.Dijkstra.ImpTest (
23+
DijkstraEraImp,
24+
ImpInit,
25+
LedgerSpec,
26+
freshKeyHash,
27+
getsPParams,
28+
submitFailingTx,
29+
)
30+
import Test.Cardano.Ledger.Imp.Common (SpecWith, arbitrary, describe, it)
31+
32+
spec ::
33+
forall era.
34+
( DijkstraEraImp era
35+
, InjectRuleFailure "LEDGER" DijkstraUtxoPredFailure era
36+
) =>
37+
SpecWith (ImpInit (LedgerSpec era))
38+
spec =
39+
describe "Collaterals" $ do
40+
it "Fails to submit a transaction containing a Ptr in collateral return" $ do
41+
cred <- KeyHashObj <$> freshKeyHash
42+
ptr <- arbitrary
43+
pp <- getsPParams id
44+
let
45+
ptrAddr = Addr Testnet cred (StakeRefPtr ptr)
46+
ptrOutput = ensureMinCoinTxOut pp $ mkBasicTxOut ptrAddr . inject $ Coin 100
47+
tx =
48+
mkBasicTx mkBasicTxBody
49+
& bodyTxL . collateralReturnTxBodyL .~ SJust ptrOutput
50+
submitFailingTx tx [injectFailure $ PtrPresentInCollateral ptrOutput]

0 commit comments

Comments
 (0)