{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} module Test.Cardano.Ledger.Dijkstra.Binary.CddlSpec (spec) where import Cardano.Ledger.Alonzo.Scripts (CostModels) import Cardano.Ledger.Alonzo.TxWits (Redeemers) import Cardano.Ledger.Conway.Governance ( GovAction, ProposalProcedure, VotingProcedure, VotingProcedures, ) import Cardano.Ledger.Core import Cardano.Ledger.Dijkstra (DijkstraEra) import Cardano.Ledger.Dijkstra.HuddleSpec (dijkstraCDDL) import Cardano.Ledger.Dijkstra.Scripts (AccountBalanceInterval, AccountBalanceIntervals) import Cardano.Ledger.Dijkstra.Tx (Tx (..)) import Cardano.Ledger.Plutus.Data (Data, Datum) import Data.OSet.Strict (OSet) import Test.Cardano.Ledger.Alonzo.Arbitrary (genDatumPresent, genNonEmptyRedeemers) import Test.Cardano.Ledger.Binary.Cuddle ( noTwiddle, specWithHuddle, ) import Test.Cardano.Ledger.Common import Test.Cardano.Ledger.Conway.Arbitrary (genNonEmptyVotingProcedures) import Test.Cardano.Ledger.Core.Binary ( fullAnnCddlSpec, fullAnnGenCddlSpec, fullCddlSpec, fullGenCddlSpec, ) import Test.Cardano.Ledger.Dijkstra.Arbitrary ( genNonEmptyAccountBalanceIntervals, genSmallDijkstraBlockBody, ) import Test.Cardano.Ledger.Dijkstra.Binary.Annotator () spec :: Spec spec :: Spec spec = do 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 @DijkstraEra 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 HuddleEnv -> Spec specWithHuddle Huddle dijkstraCDDL (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. (Eq a, Show a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Gen a -> Version -> Text -> SpecWith HuddleEnv fullAnnGenCddlSpec @(BlockBody DijkstraEra) Gen (BlockBody DijkstraEra) Gen (DijkstraBlockBody DijkstraEra) forall era. (AlonzoEraTx era, Arbitrary (Tx TopTx era)) => Gen (DijkstraBlockBody era) genSmallDijkstraBlockBody Version v Text "block_body" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(AccountBalanceInterval DijkstraEra) Version v Text "account_balance_interval" forall a. (Eq a, Show a, EncCBOR a, DecCBOR a, HasCallStack) => Gen a -> Version -> Text -> SpecWith HuddleEnv fullGenCddlSpec @(AccountBalanceIntervals DijkstraEra) Gen (AccountBalanceIntervals DijkstraEra) forall era. Gen (AccountBalanceIntervals era) genNonEmptyAccountBalanceIntervals Version v Text "account_balance_intervals" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(Value DijkstraEra) Version v Text "value" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullAnnCddlSpec @(TxBody TopTx DijkstraEra) Version v Text "transaction_body" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullAnnCddlSpec @(TxBody SubTx DijkstraEra) Version v Text "sub_transaction_body" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullAnnCddlSpec @(TxAuxData DijkstraEra) Version v Text "auxiliary_data" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullAnnCddlSpec @(NativeScript DijkstraEra) Version v Text "native_script" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullAnnCddlSpec @(Data DijkstraEra) Version v Text "plutus_data" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(TxOut DijkstraEra) Version v Text "transaction_output" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullAnnCddlSpec @(Script DijkstraEra) Version v Text "script" forall a. (Eq a, Show a, EncCBOR a, DecCBOR a, HasCallStack) => Gen a -> Version -> Text -> SpecWith HuddleEnv fullGenCddlSpec @(Datum DijkstraEra) Gen (Datum DijkstraEra) forall era. Era era => Gen (Datum era) genDatumPresent Version v Text "datum_option" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullAnnCddlSpec @(TxWits DijkstraEra) Version v Text "transaction_witness_set" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(PParamsUpdate DijkstraEra) Version v Text "protocol_param_update" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @CostModels Version v Text "cost_models" forall a. (Eq a, Show a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Gen a -> Version -> Text -> SpecWith HuddleEnv fullAnnGenCddlSpec @(Redeemers DijkstraEra) Gen (Redeemers DijkstraEra) forall era. (AlonzoEraScript era, Arbitrary (PlutusPurpose AsIx era)) => Gen (Redeemers era) genNonEmptyRedeemers Version v Text "redeemers" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, DecCBOR (Annotator a), HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullAnnCddlSpec @(Tx TopTx DijkstraEra) Version v Text "transaction" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(VotingProcedure DijkstraEra) Version v Text "voting_procedure" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(ProposalProcedure DijkstraEra) Version v Text "proposal_procedure" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(GovAction DijkstraEra) Version v Text "gov_action" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(TxCert DijkstraEra) Version v Text "certificate" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(OSet (TxCert DijkstraEra)) Version v Text "certificates" forall a. (Eq a, Show a, Arbitrary a, EncCBOR a, DecCBOR a, HasCallStack) => Version -> Text -> SpecWith HuddleEnv fullCddlSpec @(OSet (ProposalProcedure DijkstraEra)) Version v Text "proposal_procedures" forall a. (Eq a, Show a, EncCBOR a, DecCBOR a, HasCallStack) => Gen a -> Version -> Text -> SpecWith HuddleEnv fullGenCddlSpec @(VotingProcedures DijkstraEra) Gen (VotingProcedures DijkstraEra) forall era. Era era => Gen (VotingProcedures era) genNonEmptyVotingProcedures Version v Text "voting_procedures"