{-# 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, 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) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ Huddle -> SpecWith (CTreeRoot MonoReferenced) -> Spec specWithHuddle Huddle shelleyCDDL (SpecWith (CTreeRoot MonoReferenced) -> Spec) -> SpecWith (CTreeRoot MonoReferenced) -> Spec forall a b. (a -> b) -> a -> b $ do forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @Addr Version v Text "address" forall a. (DecCBOR a, EncCBOR a, Arbitrary a, Show a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripArbitraryValidate @Addr Version v Text "address" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripAnnCborSpec @BootstrapWitness Version v Text "bootstrap_witness" forall a. (DecCBOR a, EncCBOR a, Arbitrary a, Show a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripArbitraryValidate @BootstrapWitness Version v Text "bootstrap_witness" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @BootstrapWitness Version v Text "bootstrap_witness" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @AccountAddress Version v Text "reward_account" String -> SpecWith (CTreeRoot MonoReferenced) -> SpecWith (CTreeRoot MonoReferenced) forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "no decision points" (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 @AccountAddress Version v Text "reward_account" 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 @BootstrapWitness Version v Text "bootstrap_witness" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(Credential Staking) Version v Text "stake_credential" forall a. DecCBOR a => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleAntiCborSpec @(Credential Staking) Version v Text "stake_credential" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripAnnCborSpec @(TxBody TopTx ShelleyEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(TxBody TopTx ShelleyEra) Version v Text "transaction_body" 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 @(TxBody TopTx ShelleyEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(TxOut ShelleyEra) Version v Text "transaction_output" forall a. DecCBOR a => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleAntiCborSpec @(TxOut ShelleyEra) Version v Text "transaction_output" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @StakePoolRelay Version v Text "relay" String -> SpecWith (CTreeRoot MonoReferenced) -> SpecWith (CTreeRoot MonoReferenced) forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix ipv4 spec" (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 @StakePoolRelay Version v Text "relay" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(TxCert ShelleyEra) Version v Text "certificate" forall a. DecCBOR a => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleAntiCborSpec @(TxCert ShelleyEra) Version v Text "certificate" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @TxIn Version v Text "transaction_input" forall a. DecCBOR a => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleAntiCborSpec @TxIn Version v Text "transaction_input" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripAnnCborSpec @(TxAuxData ShelleyEra) Version v Text "metadata" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(TxAuxData ShelleyEra) Version v Text "metadata" String -> SpecWith (CTreeRoot MonoReferenced) -> SpecWith (CTreeRoot MonoReferenced) forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix metadatum" (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 ShelleyEra) Version v Text "metadata" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripAnnCborSpec @(MultiSig ShelleyEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(MultiSig ShelleyEra) Version v Text "native_script" String -> SpecWith (CTreeRoot MonoReferenced) -> SpecWith (CTreeRoot MonoReferenced) forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix script_n_of_k decoder" (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 @(MultiSig ShelleyEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(Update ShelleyEra) Version v Text "update" String -> SpecWith (CTreeRoot MonoReferenced) -> SpecWith (CTreeRoot MonoReferenced) forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix major_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 @(Update ShelleyEra) Version v Text "update" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(ProposedPPUpdates ShelleyEra) Version v Text "proposed_protocol_parameter_updates" String -> SpecWith (CTreeRoot MonoReferenced) -> SpecWith (CTreeRoot MonoReferenced) forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix major_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 @(ProposedPPUpdates ShelleyEra) Version v Text "proposed_protocol_parameter_updates" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(PParamsUpdate ShelleyEra) Version v Text "protocol_param_update" String -> SpecWith (CTreeRoot MonoReferenced) -> SpecWith (CTreeRoot MonoReferenced) forall a. HasCallStack => String -> SpecWith a -> SpecWith a xdescribe String "fix major_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 @(PParamsUpdate ShelleyEra) Version v Text "protocol_param_update" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripAnnCborSpec @(Tx TopTx ShelleyEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(Tx TopTx ShelleyEra) 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 ShelleyEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripAnnCborSpec @(TxWits ShelleyEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleRoundTripCborSpec @(TxWits ShelleyEra) 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 ShelleyEra) Version v Text "transaction_witness_set" 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 @BootstrapWitness Version v Text "bootstrap_witness" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleDecoderEquivalenceSpec @(TxBody TopTx ShelleyEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleDecoderEquivalenceSpec @(TxAuxData ShelleyEra) Version v Text "metadata" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleDecoderEquivalenceSpec @(MultiSig ShelleyEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith (CTreeRoot MonoReferenced) huddleDecoderEquivalenceSpec @(Tx TopTx ShelleyEra) Version v Text "transaction"