{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeApplications #-} module Test.Cardano.Ledger.Babbage.Binary.CddlSpec (spec) where import Cardano.Ledger.Allegra.Scripts import Cardano.Ledger.Alonzo.Scripts (CostModels) import Cardano.Ledger.Alonzo.TxWits (Redeemers) import Cardano.Ledger.Babbage (BabbageEra) import Cardano.Ledger.Core import Cardano.Ledger.Plutus.Data (Data, Datum) import Test.Cardano.Ledger.Babbage.Binary.Annotator () import Test.Cardano.Ledger.Babbage.Binary.Cddl (readBabbageCddlFiles) import Test.Cardano.Ledger.Babbage.CDDL (babbageCDDL) import Test.Cardano.Ledger.Binary.Cddl ( beforeAllCddlFile, cddlDecoderEquivalenceSpec, cddlRoundTripAnnCborSpec, cddlRoundTripCborSpec, ) import Test.Cardano.Ledger.Binary.Cuddle ( huddleDecoderEquivalenceSpec, huddleRoundTripAnnCborSpec, huddleRoundTripCborSpec, specWithHuddle, ) import Test.Cardano.Ledger.Common spec :: Spec spec :: Spec spec = forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "CDDL" forall a b. (a -> b) -> a -> b $ do let v :: Version v = forall era. Era era => Version eraProtVerHigh @BabbageEra forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Ruby-based" forall a b. (a -> b) -> a -> b $ HasCallStack => Int -> IO [ByteString] -> SpecWith CddlData -> Spec beforeAllCddlFile Int 3 IO [ByteString] readBabbageCddlFiles forall a b. (a -> b) -> a -> b $ do forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Value BabbageEra) Version v Text "coin" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(TxBody BabbageEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(TxBody BabbageEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(TxAuxData BabbageEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(TxAuxData BabbageEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Timelock BabbageEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Timelock BabbageEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Data BabbageEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Data BabbageEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(TxOut BabbageEra) Version v Text "transaction_output" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Script BabbageEra) Version v Text "script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Script BabbageEra) Version v Text "script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Datum BabbageEra) Version v Text "datum_option" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(TxWits BabbageEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(TxWits BabbageEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(PParamsUpdate BabbageEra) Version v Text "protocol_param_update" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @CostModels Version v Text "cost_models" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Redeemers BabbageEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Redeemers BabbageEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Tx BabbageEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Tx BabbageEra) Version v Text "transaction" forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DecCBOR instances equivalence via CDDL" forall a b. (a -> b) -> a -> b $ do forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(TxBody BabbageEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(TxAuxData BabbageEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Timelock BabbageEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Data BabbageEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Script BabbageEra) Version v Text "script" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(TxWits BabbageEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Redeemers BabbageEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Tx BabbageEra) Version v Text "transaction" forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Huddle" forall a b. (a -> b) -> a -> b $ Huddle -> Int -> SpecWith CuddleData -> Spec specWithHuddle Huddle babbageCDDL Int 100 forall a b. (a -> b) -> a -> b $ do forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Value BabbageEra) Version v Text "coin" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(TxBody BabbageEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(TxBody BabbageEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(TxAuxData BabbageEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(TxAuxData BabbageEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Timelock BabbageEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Timelock BabbageEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Data BabbageEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Data BabbageEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(TxOut BabbageEra) Version v Text "transaction_output" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Script BabbageEra) Version v Text "script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Script BabbageEra) Version v Text "script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Datum BabbageEra) Version v Text "datum_option" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(TxWits BabbageEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(TxWits BabbageEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(PParamsUpdate BabbageEra) Version v Text "protocol_param_update" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @CostModels Version v Text "cost_models" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Redeemers BabbageEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Redeemers BabbageEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Tx BabbageEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Tx BabbageEra) Version v Text "transaction" forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DecCBOR instances equivalence via CDDL" forall a b. (a -> b) -> a -> b $ do forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(TxBody BabbageEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(TxAuxData BabbageEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Timelock BabbageEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Data BabbageEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Script BabbageEra) Version v Text "script" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(TxWits BabbageEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Redeemers BabbageEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Tx BabbageEra) Version v Text "transaction"