{-# LANGUAGE DataKinds #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} module Test.Cardano.Ledger.Shelley.Binary.CddlSpec (spec) where import Cardano.Ledger.Core import Cardano.Ledger.Keys.Bootstrap (BootstrapWitness) import Cardano.Ledger.Shelley (ShelleyEra) import Cardano.Ledger.Shelley.API ( Credential, MultiSig, ProposedPPUpdates, Update, ) import Cardano.Ledger.Shelley.HuddleSpec (shelleyCDDL) import Cardano.Ledger.State (StakePoolRelay) import Cardano.Ledger.TxIn (TxIn) import Test.Cardano.Ledger.Binary.Cuddle ( huddleAntiCborSpec, huddleDecoderEquivalenceSpec, huddleRoundTripAnnCborSpec, huddleRoundTripArbitraryValidate, huddleRoundTripCborSpec, noTwiddle, specWithHuddle, ) import Test.Cardano.Ledger.Common import Test.Cardano.Ledger.Shelley.Binary.Annotator () spec :: Spec spec :: Spec spec = 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 eraProtVerLow @ShelleyEra String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Huddle" (Spec -> Spec) -> (SpecWith HuddleEnv -> Spec) -> SpecWith HuddleEnv -> Spec forall b c a. (b -> c) -> (a -> b) -> a -> c . Huddle -> SpecWith HuddleEnv -> Spec specWithHuddle Huddle shelleyCDDL (SpecWith HuddleEnv -> Spec) -> (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> Spec forall b c a. (b -> c) -> (a -> b) -> a -> c . SpecWith HuddleEnv -> SpecWith HuddleEnv noTwiddle (SpecWith HuddleEnv -> Spec) -> SpecWith HuddleEnv -> Spec forall a b. (a -> b) -> a -> b $ do forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @Addr Version v Text "address" forall a. (DecCBOR a, EncCBOR a, Arbitrary a, Show a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripArbitraryValidate @Addr Version v Text "address" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripAnnCborSpec @BootstrapWitness Version v Text "bootstrap_witness" forall a. (DecCBOR a, EncCBOR a, Arbitrary a, Show a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripArbitraryValidate @BootstrapWitness Version v Text "bootstrap_witness" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @BootstrapWitness Version v Text "bootstrap_witness" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @AccountAddress Version v Text "reward_account" forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @BootstrapWitness Version v Text "bootstrap_witness" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(Credential Staking) Version v Text "stake_credential" forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(Credential Staking) Version v Text "stake_credential" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripAnnCborSpec @(TxBody TopTx ShelleyEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(TxBody TopTx ShelleyEra) Version v Text "transaction_body" String -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix protver decoder" (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a b. (a -> b) -> a -> b $ forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(TxBody TopTx ShelleyEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(TxOut ShelleyEra) Version v Text "transaction_output" forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(TxOut ShelleyEra) Version v Text "transaction_output" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @StakePoolRelay Version v Text "relay" forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @StakePoolRelay Version v Text "relay" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(TxCert ShelleyEra) Version v Text "certificate" String -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix certificate" (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a b. (a -> b) -> a -> b $ forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(TxCert ShelleyEra) Version v Text "certificate" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @TxIn Version v Text "transaction_input" forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @TxIn Version v Text "transaction_input" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripAnnCborSpec @(TxAuxData ShelleyEra) Version v Text "metadata" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(TxAuxData ShelleyEra) Version v Text "metadata" String -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "too many discards" (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a b. (a -> b) -> a -> b $ forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(TxAuxData ShelleyEra) Version v Text "metadata" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripAnnCborSpec @(MultiSig ShelleyEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(MultiSig ShelleyEra) Version v Text "native_script" forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(MultiSig ShelleyEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(Update ShelleyEra) Version v Text "update" String -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix protver decoder" (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a b. (a -> b) -> a -> b $ forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(Update ShelleyEra) Version v Text "update" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(ProposedPPUpdates ShelleyEra) Version v Text "proposed_protocol_parameter_updates" String -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix protver decoder" (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a b. (a -> b) -> a -> b $ forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(ProposedPPUpdates ShelleyEra) Version v Text "proposed_protocol_parameter_updates" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(PParamsUpdate ShelleyEra) Version v Text "protocol_param_update" String -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix protver decoder" (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a b. (a -> b) -> a -> b $ forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(PParamsUpdate ShelleyEra) Version v Text "protocol_param_update" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripAnnCborSpec @(Tx TopTx ShelleyEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(Tx TopTx ShelleyEra) Version v Text "transaction" String -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix transaction fields" (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a b. (a -> b) -> a -> b $ forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(Tx TopTx ShelleyEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripAnnCborSpec @(TxWits ShelleyEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith HuddleEnv huddleRoundTripCborSpec @(TxWits ShelleyEra) Version v Text "transaction_witness_set" forall a. DecCBOR a => Version -> Text -> SpecWith HuddleEnv huddleAntiCborSpec @(TxWits ShelleyEra) Version v Text "transaction_witness_set" String -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DecCBOR instances equivalence via CDDL" (SpecWith HuddleEnv -> SpecWith HuddleEnv) -> SpecWith HuddleEnv -> SpecWith HuddleEnv forall a b. (a -> b) -> a -> b $ do forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleDecoderEquivalenceSpec @BootstrapWitness Version v Text "bootstrap_witness" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleDecoderEquivalenceSpec @(TxBody TopTx ShelleyEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleDecoderEquivalenceSpec @(TxAuxData ShelleyEra) Version v Text "metadata" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleDecoderEquivalenceSpec @(MultiSig ShelleyEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith HuddleEnv huddleDecoderEquivalenceSpec @(Tx TopTx ShelleyEra) Version v Text "transaction"