{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}

module Test.Cardano.Ledger.Conway.Binary.CddlSpec (spec) where

import Cardano.Ledger.Allegra.Scripts
import Cardano.Ledger.Alonzo.Scripts (CostModels)
import Cardano.Ledger.Alonzo.TxWits (Redeemers)
import Cardano.Ledger.Conway (ConwayEra)
import Cardano.Ledger.Conway.Governance (GovAction, ProposalProcedure, VotingProcedure)
import Cardano.Ledger.Conway.HuddleSpec (conwayCDDL)
import Cardano.Ledger.Core
import Cardano.Ledger.Plutus.Data (Data, Datum)
import Test.Cardano.Ledger.Alonzo.Arbitrary (genNonEmptyRedeemers)
import Test.Cardano.Ledger.Binary.Cuddle (
  huddleAntiCborSpec,
  huddleDecoderEquivalenceSpec,
  huddleRoundTripAnnCborSpec,
  huddleRoundTripArbitraryValidate,
  huddleRoundTripCborSpec,
  huddleRoundTripGenValidate,
  specWithHuddle,
 )
import Test.Cardano.Ledger.Common
import Test.Cardano.Ledger.Conway.Arbitrary ()
import Test.Cardano.Ledger.Conway.Binary.Annotator ()

spec :: Spec
spec :: Spec
spec = do
  String -> Spec -> Spec
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
describe String
"CDDL" (Spec -> Spec) -> Spec -> Spec
forall a b. (a -> b) -> a -> b
$ do
    let v :: Version
v = forall era. Era era => Version
eraProtVerHigh @ConwayEra
    String -> Spec -> Spec
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
describe String
"Huddle" (Spec -> Spec) -> Spec -> Spec
forall a b. (a -> b) -> a -> b
$ Huddle -> SpecWith (CTreeRoot MonoReferenced) -> Spec
specWithHuddle Huddle
conwayCDDL (SpecWith (CTreeRoot MonoReferenced) -> Spec)
-> SpecWith (CTreeRoot MonoReferenced) -> Spec
forall a b. (a -> b) -> a -> b
$ do
      -- Value
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(Value ConwayEra) Version
v Text
"positive_coin"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(Value ConwayEra) Version
v Text
"value"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(Value ConwayEra) Version
v Text
"value"
      forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(Value ConwayEra) Version
v Text
"value"
      -- TxBody
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripAnnCborSpec @(TxBody TopTx ConwayEra) Version
v Text
"transaction_body"
      -- TODO enable this once map/list expansion has been optimized in cuddle
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix scripts" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$
        forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(TxBody TopTx ConwayEra) Version
v Text
"transaction_body"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(TxBody TopTx ConwayEra) Version
v Text
"transaction_body"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix transaction_output" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$
        forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(TxBody TopTx ConwayEra) Version
v Text
"transaction_body"
      -- AuxData
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripAnnCborSpec @(TxAuxData ConwayEra) Version
v Text
"auxiliary_data"
      -- TODO fails because of plutus scripts
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix plutus scripts" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$
        forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(TxAuxData ConwayEra) Version
v Text
"auxiliary_data"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(TxAuxData ConwayEra) Version
v Text
"auxiliary_data"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix scripts" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(TxAuxData ConwayEra) Version
v Text
"auxiliary_data"
      -- NativeScript
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripAnnCborSpec @(Timelock ConwayEra) Version
v Text
"native_script"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(Timelock ConwayEra) Version
v Text
"native_script"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(Timelock ConwayEra) Version
v Text
"native_script"
      forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(Timelock ConwayEra) Version
v Text
"native_script"
      -- Data
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripAnnCborSpec @(Data ConwayEra) Version
v Text
"plutus_data"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(Data ConwayEra) Version
v Text
"plutus_data"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(Data ConwayEra) Version
v Text
"plutus_data"
      forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(Data ConwayEra) Version
v Text
"plutus_data"
      -- TxOut
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(TxOut ConwayEra) Version
v Text
"transaction_output"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix scripts" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(TxOut ConwayEra) Version
v Text
"transaction_output"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix distinct_bytes" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(TxOut ConwayEra) Version
v Text
"transaction_output"
      -- Script
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripAnnCborSpec @(Script ConwayEra) Version
v Text
"script"
      -- TODO fails because of `plutus_v1_script`
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix plutus_v1_script" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(Script ConwayEra) Version
v Text
"script"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(Script ConwayEra) Version
v Text
"script"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix distinct_bytes" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(Script ConwayEra) Version
v Text
"script"
      -- Datum
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(Datum ConwayEra) Version
v Text
"datum_option"
      forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(Datum ConwayEra) Version
v Text
"datum_option"
      -- TODO NoDatum is encoded as an empty bytestring
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix NoDatum" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(Datum ConwayEra) Version
v Text
"datum_option"
      -- TxWits
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripAnnCborSpec @(TxWits ConwayEra) Version
v Text
"transaction_witness_set"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix distinct_bytes" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(TxWits ConwayEra) Version
v Text
"transaction_witness_set"
      -- TODO fails because of plutus_v1_script
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix plutus_v1_script" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$
        forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(TxWits ConwayEra) Version
v Text
"transaction_witness_set"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(TxWits ConwayEra) Version
v Text
"transaction_witness_set"
      -- PParamsUpdate
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(PParamsUpdate ConwayEra) Version
v Text
"protocol_param_update"
      forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(PParamsUpdate ConwayEra) Version
v Text
"protocol_param_update"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(PParamsUpdate ConwayEra) Version
v Text
"protocol_param_update"
      -- CostModels
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @CostModels Version
v Text
"cost_models"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @CostModels Version
v Text
"cost_models"
      -- Redeemers
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripAnnCborSpec @(Redeemers ConwayEra) Version
v Text
"redeemers"
      forall a.
(DecCBOR a, Show a, EncCBOR a) =>
Gen a -> Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripGenValidate @(Redeemers ConwayEra) Gen (Redeemers ConwayEra)
forall era.
(AlonzoEraScript era, Arbitrary (PlutusPurpose AsIx era)) =>
Gen (Redeemers era)
genNonEmptyRedeemers Version
v Text
"redeemers"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(Redeemers ConwayEra) Version
v Text
"redeemers"
      forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(Redeemers ConwayEra) Version
v Text
"redeemers"
      -- Tx
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripAnnCborSpec @(Tx TopTx ConwayEra) Version
v Text
"transaction"
      -- TODO enable this once map/list expansion has been optimized in cuddle
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"hangs" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(Tx TopTx ConwayEra) Version
v Text
"transaction"
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(Tx TopTx ConwayEra) Version
v Text
"transaction"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix distinct_bytes" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(Tx TopTx ConwayEra) Version
v Text
"transaction"
      -- VotingProcedure
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(VotingProcedure ConwayEra) Version
v Text
"voting_procedure"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(VotingProcedure ConwayEra) Version
v Text
"voting_procedure"
      forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(VotingProcedure ConwayEra) Version
v Text
"voting_procedure"
      -- ProposalProcedure
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(ProposalProcedure ConwayEra) Version
v Text
"proposal_procedure"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(ProposalProcedure ConwayEra) Version
v Text
"proposal_procedure"
      forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(ProposalProcedure ConwayEra) Version
v Text
"proposal_procedure"
      -- GovAction
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(GovAction ConwayEra) Version
v Text
"gov_action"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(GovAction ConwayEra) Version
v Text
"gov_action"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
xdescribe String
"fix protocol_version" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$
        forall a.
DecCBOR a =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleAntiCborSpec @(GovAction ConwayEra) Version
v Text
"gov_action"
      -- TxCert
      forall a.
(HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripCborSpec @(TxCert ConwayEra) Version
v Text
"certificate"
      forall a.
(DecCBOR a, EncCBOR a, Arbitrary a, Show a) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleRoundTripArbitraryValidate @(TxCert ConwayEra) Version
v Text
"certificate"
      String
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
describe String
"DecCBOR instances equivalence via CDDL" (SpecWith (CTreeRoot MonoReferenced)
 -> SpecWith (CTreeRoot MonoReferenced))
-> SpecWith (CTreeRoot MonoReferenced)
-> SpecWith (CTreeRoot MonoReferenced)
forall a b. (a -> b) -> a -> b
$ do
        forall a.
(HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleDecoderEquivalenceSpec @(TxBody TopTx ConwayEra) Version
v Text
"transaction_body"
        forall a.
(HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleDecoderEquivalenceSpec @(TxAuxData ConwayEra) Version
v Text
"auxiliary_data"
        forall a.
(HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleDecoderEquivalenceSpec @(Timelock ConwayEra) Version
v Text
"native_script"
        forall a.
(HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleDecoderEquivalenceSpec @(Data ConwayEra) Version
v Text
"plutus_data"
        forall a.
(HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleDecoderEquivalenceSpec @(Script ConwayEra) Version
v Text
"script"
        forall a.
(HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleDecoderEquivalenceSpec @(TxWits ConwayEra) Version
v Text
"transaction_witness_set"
        forall a.
(HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleDecoderEquivalenceSpec @(Redeemers ConwayEra) Version
v Text
"redeemers"
        forall a.
(HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) =>
Version -> Text -> SpecWith (CTreeRoot MonoReferenced)
huddleDecoderEquivalenceSpec @(Tx TopTx ConwayEra) Version
v Text
"transaction"