{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeApplications #-} module Test.Cardano.Ledger.Alonzo.Binary.CddlSpec (spec) where import Cardano.Ledger.Allegra.Scripts import Cardano.Ledger.Alonzo (AlonzoEra) import Cardano.Ledger.Alonzo.Scripts (CostModels) import Cardano.Ledger.Alonzo.TxWits (AlonzoTxWits, Redeemers) import Cardano.Ledger.Core import Cardano.Ledger.Plutus.Data (Data) import Test.Cardano.Ledger.Alonzo.Binary.Annotator () import Test.Cardano.Ledger.Alonzo.Binary.Cddl (readAlonzoCddlFiles) import Test.Cardano.Ledger.Alonzo.CDDL (alonzoCDDL) 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 = 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 @AlonzoEra String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Ruby-based" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ HasCallStack => Int -> IO [ByteString] -> SpecWith CddlData -> Spec Int -> IO [ByteString] -> SpecWith CddlData -> Spec beforeAllCddlFile Int 3 IO [ByteString] readAlonzoCddlFiles (SpecWith CddlData -> Spec) -> SpecWith CddlData -> Spec 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 AlonzoEra) Version v Text "coin" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(TxBody AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(TxBody AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(TxAuxData AlonzoEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(TxAuxData AlonzoEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Timelock AlonzoEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Timelock AlonzoEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Data AlonzoEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Data AlonzoEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(TxOut AlonzoEra) Version v Text "transaction_output" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(AlonzoTxWits AlonzoEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(AlonzoTxWits AlonzoEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(PParamsUpdate AlonzoEra) Version v Text "protocol_param_update" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Redeemers AlonzoEra) Version v Text "[* redeemer]" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Redeemers AlonzoEra) Version v Text "[* redeemer]" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Tx AlonzoEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Tx AlonzoEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @CostModels Version v Text "cost_models" String -> SpecWith CddlData -> SpecWith CddlData forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DecCBOR instances equivalence via CDDL" (SpecWith CddlData -> SpecWith CddlData) -> SpecWith CddlData -> SpecWith CddlData 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 AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(TxAuxData AlonzoEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Timelock AlonzoEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Data AlonzoEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(AlonzoTxWits AlonzoEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Redeemers AlonzoEra) Version v Text "[* redeemer]" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CddlData cddlDecoderEquivalenceSpec @(Tx AlonzoEra) Version v Text "transaction" 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 -> Int -> SpecWith CuddleData -> Spec specWithHuddle Huddle alonzoCDDL Int 100 (SpecWith CuddleData -> Spec) -> SpecWith CuddleData -> Spec 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 AlonzoEra) Version v Text "coin" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(TxBody AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(TxBody AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(TxAuxData AlonzoEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(TxAuxData AlonzoEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Timelock AlonzoEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Timelock AlonzoEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Data AlonzoEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Data AlonzoEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(TxOut AlonzoEra) Version v Text "transaction_output" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(AlonzoTxWits AlonzoEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(AlonzoTxWits AlonzoEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(PParamsUpdate AlonzoEra) Version v Text "protocol_param_update" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Redeemers AlonzoEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Redeemers AlonzoEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleRoundTripAnnCborSpec @(Tx AlonzoEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Tx AlonzoEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @CostModels Version v Text "cost_models" String -> SpecWith CuddleData -> SpecWith CuddleData forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DecCBOR instances equivalence via CDDL" (SpecWith CuddleData -> SpecWith CuddleData) -> SpecWith CuddleData -> SpecWith CuddleData 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 AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(TxAuxData AlonzoEra) Version v Text "auxiliary_data" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Timelock AlonzoEra) Version v Text "native_script" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Data AlonzoEra) Version v Text "plutus_data" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(AlonzoTxWits AlonzoEra) Version v Text "transaction_witness_set" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Redeemers AlonzoEra) Version v Text "redeemers" forall a. (HasCallStack, Eq a, Show a, DecCBOR a, DecCBOR (Annotator a)) => Version -> Text -> SpecWith CuddleData huddleDecoderEquivalenceSpec @(Tx AlonzoEra) Version v Text "transaction"