{-# 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), Typeable a) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(TxBody TopTx AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(TxBody TopTx AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR (Annotator a), Typeable 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), Typeable 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), Typeable 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), Typeable 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), Typeable 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), Typeable a) => Version -> Text -> SpecWith CddlData cddlRoundTripAnnCborSpec @(Tx TopTx AlonzoEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CddlData cddlRoundTripCborSpec @(Tx TopTx 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 TopTx 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 TopTx 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 TopTx AlonzoEra) Version v Text "transaction_body" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(TxBody TopTx 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 TopTx AlonzoEra) Version v Text "transaction" forall a. (HasCallStack, Eq a, Show a, EncCBOR a, DecCBOR a) => Version -> Text -> SpecWith CuddleData huddleRoundTripCborSpec @(Tx TopTx 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 TopTx 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 TopTx AlonzoEra) Version v Text "transaction"