Skip to content

Commit 06db334

Browse files
committed
Add tests to check equivalence of DecCBORinstances via cddl and Huddle
1 parent 48d62bf commit 06db334

File tree

7 files changed

+98
-2
lines changed
  • eras
    • allegra/impl/test/Test/Cardano/Ledger/Allegra/Binary
    • alonzo/impl/test/Test/Cardano/Ledger/Alonzo/Binary
    • babbage/impl/test/Test/Cardano/Ledger/Babbage/Binary
    • conway/impl/test/Test/Cardano/Ledger/Conway/Binary
    • mary/impl/test/Test/Cardano/Ledger/Mary/Binary
    • shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary
  • libs/cardano-protocol-tpraos/test/Test/Cardano/Protocol/Binary

7 files changed

+98
-2
lines changed

eras/allegra/impl/test/Test/Cardano/Ledger/Allegra/Binary/CddlSpec.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Test.Cardano.Ledger.Allegra.Binary.Cddl (readAllegraCddlFiles)
99
import Test.Cardano.Ledger.Allegra.CDDL (allegraCDDL)
1010
import Test.Cardano.Ledger.Binary.Cddl (
1111
beforeAllCddlFile,
12+
cddlDecoderEquivalenceSpec,
1213
cddlRoundTripAnnCborSpec,
1314
cddlRoundTripCborSpec,
1415
)
@@ -27,6 +28,10 @@ spec =
2728
cddlRoundTripCborSpec @(Script AllegraEra) v "native_script"
2829
cddlRoundTripAnnCborSpec @(TxAuxData AllegraEra) v "auxiliary_data"
2930
cddlRoundTripCborSpec @(TxAuxData AllegraEra) v "auxiliary_data"
31+
describe "DecCBOR instances equivalence via CDDL" $ do
32+
cddlDecoderEquivalenceSpec @(TxBody AllegraEra) v "transaction_body"
33+
cddlDecoderEquivalenceSpec @(Script AllegraEra) v "native_script"
34+
cddlDecoderEquivalenceSpec @(TxAuxData AllegraEra) v "auxiliary_data"
3035

3136
describe "Huddle" $ specWithHuddle allegraCDDL 100 $ do
3237
huddleRoundTripCborSpec @(Value AllegraEra) v "coin"

eras/alonzo/impl/test/Test/Cardano/Ledger/Alonzo/Binary/CddlSpec.hs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ import Test.Cardano.Ledger.Alonzo.Binary.Cddl (readAlonzoCddlFiles)
1313
import Test.Cardano.Ledger.Alonzo.CDDL (alonzoCDDL)
1414
import Test.Cardano.Ledger.Binary.Cddl (
1515
beforeAllCddlFile,
16+
cddlDecoderEquivalenceSpec,
1617
cddlRoundTripAnnCborSpec,
1718
cddlRoundTripCborSpec,
1819
)
1920
import Test.Cardano.Ledger.Binary.Cuddle (
21+
huddleDecoderEquivalenceSpec,
2022
huddleRoundTripAnnCborSpec,
2123
huddleRoundTripCborSpec,
2224
specWithHuddle,
@@ -46,6 +48,14 @@ spec =
4648
cddlRoundTripAnnCborSpec @(Tx AlonzoEra) v "transaction"
4749
cddlRoundTripCborSpec @(Tx AlonzoEra) v "transaction"
4850
cddlRoundTripCborSpec @CostModels v "cost_models"
51+
describe "DecCBOR instances equivalence via CDDL" $ do
52+
cddlDecoderEquivalenceSpec @(TxBody AlonzoEra) v "transaction_body"
53+
cddlDecoderEquivalenceSpec @(TxAuxData AlonzoEra) v "auxiliary_data"
54+
cddlDecoderEquivalenceSpec @(Timelock AlonzoEra) v "native_script"
55+
cddlDecoderEquivalenceSpec @(Data AlonzoEra) v "plutus_data"
56+
cddlDecoderEquivalenceSpec @(AlonzoTxWits AlonzoEra) v "transaction_witness_set"
57+
cddlDecoderEquivalenceSpec @(Redeemers AlonzoEra) v "[* redeemer]"
58+
cddlDecoderEquivalenceSpec @(Tx AlonzoEra) v "transaction"
4959
describe "Huddle" $ specWithHuddle alonzoCDDL 100 $ do
5060
huddleRoundTripCborSpec @(Value AlonzoEra) v "coin"
5161
huddleRoundTripAnnCborSpec @(TxBody AlonzoEra) v "transaction_body"
@@ -65,3 +75,11 @@ spec =
6575
huddleRoundTripAnnCborSpec @(Tx AlonzoEra) v "transaction"
6676
huddleRoundTripCborSpec @(Tx AlonzoEra) v "transaction"
6777
huddleRoundTripCborSpec @CostModels v "cost_models"
78+
describe "DecCBOR instances equivalence via CDDL" $ do
79+
huddleDecoderEquivalenceSpec @(TxBody AlonzoEra) v "transaction_body"
80+
huddleDecoderEquivalenceSpec @(TxAuxData AlonzoEra) v "auxiliary_data"
81+
huddleDecoderEquivalenceSpec @(Timelock AlonzoEra) v "native_script"
82+
huddleDecoderEquivalenceSpec @(Data AlonzoEra) v "plutus_data"
83+
huddleDecoderEquivalenceSpec @(AlonzoTxWits AlonzoEra) v "transaction_witness_set"
84+
huddleDecoderEquivalenceSpec @(Redeemers AlonzoEra) v "redeemers"
85+
huddleDecoderEquivalenceSpec @(Tx AlonzoEra) v "transaction"

eras/babbage/impl/test/Test/Cardano/Ledger/Babbage/Binary/CddlSpec.hs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ import Test.Cardano.Ledger.Babbage.Binary.Cddl (readBabbageCddlFiles)
1313
import Test.Cardano.Ledger.Babbage.CDDL (babbageCDDL)
1414
import Test.Cardano.Ledger.Binary.Cddl (
1515
beforeAllCddlFile,
16+
cddlDecoderEquivalenceSpec,
1617
cddlRoundTripAnnCborSpec,
1718
cddlRoundTripCborSpec,
1819
)
1920
import Test.Cardano.Ledger.Binary.Cuddle (
21+
huddleDecoderEquivalenceSpec,
2022
huddleRoundTripAnnCborSpec,
2123
huddleRoundTripCborSpec,
2224
specWithHuddle,
@@ -49,6 +51,15 @@ spec =
4951
cddlRoundTripCborSpec @(Redeemers BabbageEra) v "redeemers"
5052
cddlRoundTripAnnCborSpec @(Tx BabbageEra) v "transaction"
5153
cddlRoundTripCborSpec @(Tx BabbageEra) v "transaction"
54+
describe "DecCBOR instances equivalence via CDDL" $ do
55+
cddlDecoderEquivalenceSpec @(TxBody BabbageEra) v "transaction_body"
56+
cddlDecoderEquivalenceSpec @(TxAuxData BabbageEra) v "auxiliary_data"
57+
cddlDecoderEquivalenceSpec @(Timelock BabbageEra) v "native_script"
58+
cddlDecoderEquivalenceSpec @(Data BabbageEra) v "plutus_data"
59+
cddlDecoderEquivalenceSpec @(Script BabbageEra) v "script"
60+
cddlDecoderEquivalenceSpec @(TxWits BabbageEra) v "transaction_witness_set"
61+
cddlDecoderEquivalenceSpec @(Redeemers BabbageEra) v "redeemers"
62+
cddlDecoderEquivalenceSpec @(Tx BabbageEra) v "transaction"
5263
describe "Huddle" $ specWithHuddle babbageCDDL 100 $ do
5364
huddleRoundTripCborSpec @(Value BabbageEra) v "coin"
5465
huddleRoundTripAnnCborSpec @(TxBody BabbageEra) v "transaction_body"
@@ -71,3 +82,12 @@ spec =
7182
huddleRoundTripCborSpec @(Redeemers BabbageEra) v "redeemers"
7283
huddleRoundTripAnnCborSpec @(Tx BabbageEra) v "transaction"
7384
huddleRoundTripCborSpec @(Tx BabbageEra) v "transaction"
85+
describe "DecCBOR instances equivalence via CDDL" $ do
86+
huddleDecoderEquivalenceSpec @(TxBody BabbageEra) v "transaction_body"
87+
huddleDecoderEquivalenceSpec @(TxAuxData BabbageEra) v "auxiliary_data"
88+
huddleDecoderEquivalenceSpec @(Timelock BabbageEra) v "native_script"
89+
huddleDecoderEquivalenceSpec @(Data BabbageEra) v "plutus_data"
90+
huddleDecoderEquivalenceSpec @(Script BabbageEra) v "script"
91+
huddleDecoderEquivalenceSpec @(TxWits BabbageEra) v "transaction_witness_set"
92+
huddleDecoderEquivalenceSpec @(Redeemers BabbageEra) v "redeemers"
93+
huddleDecoderEquivalenceSpec @(Tx BabbageEra) v "transaction"

eras/conway/impl/test/Test/Cardano/Ledger/Conway/Binary/CddlSpec.hs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ import Cardano.Ledger.Core
1212
import Cardano.Ledger.Plutus.Data (Data, Datum)
1313
import Test.Cardano.Ledger.Binary.Cddl (
1414
beforeAllCddlFile,
15+
cddlDecoderEquivalenceSpec,
1516
cddlRoundTripAnnCborSpec,
1617
cddlRoundTripCborSpec,
1718
)
1819
import Test.Cardano.Ledger.Binary.Cuddle (
20+
huddleDecoderEquivalenceSpec,
1921
huddleRoundTripAnnCborSpec,
2022
huddleRoundTripCborSpec,
2123
specWithHuddle,
@@ -55,6 +57,15 @@ spec = do
5557
cddlRoundTripCborSpec @(ProposalProcedure ConwayEra) v "proposal_procedure"
5658
cddlRoundTripCborSpec @(GovAction ConwayEra) v "gov_action"
5759
cddlRoundTripCborSpec @(TxCert ConwayEra) v "certificate"
60+
describe "DecCBOR instances equivalence via CDDL" $ do
61+
cddlDecoderEquivalenceSpec @(TxBody ConwayEra) v "transaction_body"
62+
cddlDecoderEquivalenceSpec @(TxAuxData ConwayEra) v "auxiliary_data"
63+
cddlDecoderEquivalenceSpec @(Timelock ConwayEra) v "native_script"
64+
cddlDecoderEquivalenceSpec @(Data ConwayEra) v "plutus_data"
65+
cddlDecoderEquivalenceSpec @(Script ConwayEra) v "script"
66+
cddlDecoderEquivalenceSpec @(TxWits ConwayEra) v "transaction_witness_set"
67+
cddlDecoderEquivalenceSpec @(Redeemers ConwayEra) v "redeemers"
68+
cddlDecoderEquivalenceSpec @(Tx ConwayEra) v "transaction"
5869
describe "Huddle" $ specWithHuddle conwayCDDL 100 $ do
5970
huddleRoundTripCborSpec @(Value ConwayEra) v "positive_coin"
6071
huddleRoundTripCborSpec @(Value ConwayEra) v "value"
@@ -82,3 +93,12 @@ spec = do
8293
huddleRoundTripCborSpec @(ProposalProcedure ConwayEra) v "proposal_procedure"
8394
huddleRoundTripCborSpec @(GovAction ConwayEra) v "gov_action"
8495
huddleRoundTripCborSpec @(TxCert ConwayEra) v "certificate"
96+
describe "DecCBOR instances equivalence via CDDL" $ do
97+
huddleDecoderEquivalenceSpec @(TxBody ConwayEra) v "transaction_body"
98+
huddleDecoderEquivalenceSpec @(TxAuxData ConwayEra) v "auxiliary_data"
99+
huddleDecoderEquivalenceSpec @(Timelock ConwayEra) v "native_script"
100+
huddleDecoderEquivalenceSpec @(Data ConwayEra) v "plutus_data"
101+
huddleDecoderEquivalenceSpec @(Script ConwayEra) v "script"
102+
huddleDecoderEquivalenceSpec @(TxWits ConwayEra) v "transaction_witness_set"
103+
huddleDecoderEquivalenceSpec @(Redeemers ConwayEra) v "redeemers"
104+
huddleDecoderEquivalenceSpec @(Tx ConwayEra) v "transaction"

eras/mary/impl/test/Test/Cardano/Ledger/Mary/Binary/CddlSpec.hs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Cardano.Ledger.Core
77
import Cardano.Ledger.Mary (MaryEra)
88
import Test.Cardano.Ledger.Binary.Cddl (
99
beforeAllCddlFile,
10+
cddlDecoderEquivalenceSpec,
1011
cddlRoundTripAnnCborSpec,
1112
cddlRoundTripCborSpec,
1213
)
@@ -27,6 +28,10 @@ spec =
2728
cddlRoundTripCborSpec @(Script MaryEra) v "native_script"
2829
cddlRoundTripAnnCborSpec @(TxAuxData MaryEra) v "auxiliary_data"
2930
cddlRoundTripCborSpec @(TxAuxData MaryEra) v "auxiliary_data"
31+
describe "DecCBOR instances equivalence via CDDL" $ do
32+
cddlDecoderEquivalenceSpec @(TxBody MaryEra) v "transaction_body"
33+
cddlDecoderEquivalenceSpec @(Script MaryEra) v "native_script"
34+
cddlDecoderEquivalenceSpec @(TxAuxData MaryEra) v "auxiliary_data"
3035
describe "Huddle" $ specWithHuddle maryCDDL 100 $ do
3136
huddleRoundTripCborSpec @(Value MaryEra) v "value"
3237
huddleRoundTripAnnCborSpec @(TxBody MaryEra) v "transaction_body"
@@ -35,3 +40,7 @@ spec =
3540
huddleRoundTripCborSpec @(TxAuxData MaryEra) v "auxiliary_data"
3641
huddleRoundTripAnnCborSpec @(Script MaryEra) v "native_script"
3742
huddleRoundTripCborSpec @(Script MaryEra) v "native_script"
43+
describe "DecCBOR instances equivalence via CDDL" $ do
44+
huddleDecoderEquivalenceSpec @(TxBody MaryEra) v "transaction_body"
45+
huddleDecoderEquivalenceSpec @(Script MaryEra) v "native_script"
46+
huddleDecoderEquivalenceSpec @(TxAuxData MaryEra) v "auxiliary_data"

eras/shelley/impl/test/Test/Cardano/Ledger/Shelley/Binary/CddlSpec.hs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ import Cardano.Ledger.Shelley.API (
1919
import Cardano.Ledger.TxIn (TxIn)
2020
import Test.Cardano.Ledger.Binary.Cddl (
2121
beforeAllCddlFile,
22+
cddlDecoderEquivalenceSpec,
2223
cddlRoundTripAnnCborSpec,
2324
cddlRoundTripCborSpec,
2425
)
2526
import Test.Cardano.Ledger.Binary.Cuddle (
27+
huddleDecoderEquivalenceSpec,
2628
huddleRoundTripAnnCborSpec,
2729
huddleRoundTripCborSpec,
2830
specWithHuddle,
@@ -56,6 +58,13 @@ spec =
5658
cddlRoundTripCborSpec @(PParamsUpdate ShelleyEra) v "protocol_param_update"
5759
cddlRoundTripAnnCborSpec @(Tx ShelleyEra) v "transaction"
5860
cddlRoundTripCborSpec @(Tx ShelleyEra) v "transaction"
61+
describe "DecCBOR instances equivalence via CDDL" $ do
62+
cddlDecoderEquivalenceSpec @BootstrapWitness v "bootstrap_witness"
63+
cddlDecoderEquivalenceSpec @(TxBody ShelleyEra) v "transaction_body"
64+
cddlDecoderEquivalenceSpec @(TxAuxData ShelleyEra) v "transaction_metadata"
65+
cddlDecoderEquivalenceSpec @(MultiSig ShelleyEra) v "multisig_script"
66+
cddlDecoderEquivalenceSpec @(Tx ShelleyEra) v "transaction"
67+
5968
describe "Huddle" $ specWithHuddle shelleyCDDL 100 $ do
6069
huddleRoundTripCborSpec @Addr v "address"
6170
huddleRoundTripAnnCborSpec @BootstrapWitness v "bootstrap_witness"
@@ -79,3 +88,9 @@ spec =
7988
huddleRoundTripCborSpec @(Tx ShelleyEra) v "transaction"
8089
huddleRoundTripAnnCborSpec @(TxWits ShelleyEra) v "transaction_witness_set"
8190
huddleRoundTripCborSpec @(TxWits ShelleyEra) v "transaction_witness_set"
91+
describe "DecCBOR instances equivalence via CDDL" $ do
92+
huddleDecoderEquivalenceSpec @BootstrapWitness v "bootstrap_witness"
93+
huddleDecoderEquivalenceSpec @(TxBody ShelleyEra) v "transaction_body"
94+
huddleDecoderEquivalenceSpec @(TxAuxData ShelleyEra) v "transaction_metadata"
95+
huddleDecoderEquivalenceSpec @(MultiSig ShelleyEra) v "multisig_script"
96+
huddleDecoderEquivalenceSpec @(Tx ShelleyEra) v "transaction"

libs/cardano-protocol-tpraos/test/Test/Cardano/Protocol/Binary/CddlSpec.hs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,14 @@ import Cardano.Protocol.TPraos.OCert (OCert)
1414
import qualified Data.ByteString.Lazy as BSL
1515
import Test.Cardano.Ledger.Binary.Cddl (
1616
beforeAllCddlFile,
17+
cddlDecoderEquivalenceSpec,
1718
cddlRoundTripAnnCborSpec,
1819
cddlRoundTripCborSpec,
1920
)
21+
import Test.Cardano.Ledger.Binary.Cuddle
2022
import Test.Cardano.Ledger.Common
2123
import Test.Cardano.Ledger.Shelley.Binary.Cddl (readShelleyCddlFiles)
24+
import Test.Cardano.Ledger.Shelley.CDDL (shelleyCDDL)
2225

2326
spec :: Spec
2427
spec =
@@ -28,10 +31,16 @@ spec =
2831

2932
specForEra :: forall era. Era era => IO [BSL.ByteString] -> Int -> Spec
3033
specForEra readCddlFiles n = do
31-
describe (eraName @era) $
34+
describe (eraName @era) $ do
35+
let v = eraProtVerLow @era
3236
beforeAllCddlFile n readCddlFiles $ do
33-
let v = eraProtVerLow @era
3437
cddlRoundTripAnnCborSpec @(BHeader StandardCrypto) v "header"
3538
cddlRoundTripCborSpec @(BHeader StandardCrypto) v "header"
3639
cddlRoundTripCborSpec @(BHBody StandardCrypto) v "header_body"
3740
cddlRoundTripCborSpec @(CBORGroup (OCert StandardCrypto)) v "[ operational_cert ]"
41+
-- TODO: add Huddle round trip tests
42+
describe "DecCBOR instances equivalence via CDDL" $ do
43+
cddlDecoderEquivalenceSpec @(BHeader StandardCrypto) v "header"
44+
describe "DecCBOR instances equivalence via CDDL - Huddle" $ do
45+
specWithHuddle shelleyCDDL 100 $ do
46+
huddleDecoderEquivalenceSpec @(BHeader StandardCrypto) v "header"

0 commit comments

Comments
 (0)