{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -Wno-orphans #-} module Test.Cardano.Ledger.Conway.Binary.RoundTrip ( roundTripConwayCommonSpec, roundTripConwayEraTypesSpec, ) where import Cardano.Ledger.Alonzo.Scripts ( AlonzoEraScript (..), AsIx (..), ) import Cardano.Ledger.BaseTypes (StrictMaybe) import Cardano.Ledger.Binary (DecCBOR) import Cardano.Ledger.Compactible import Cardano.Ledger.Conway (ConwayEra) import Cardano.Ledger.Conway.Governance import Cardano.Ledger.Conway.State import Cardano.Ledger.Core import Cardano.Ledger.Plutus (CostModels) import Cardano.Ledger.Shelley.LedgerState import Test.Cardano.Ledger.Alonzo.Binary.RoundTrip (roundTripAlonzoCommonSpec) import Test.Cardano.Ledger.Common import Test.Cardano.Ledger.Conway.Arbitrary () import Test.Cardano.Ledger.Core.Binary.RoundTrip roundTripConwayCommonSpec :: forall era. ( EraTx era , EraGov era , EraStake era , EraCertState era , AlonzoEraScript era , StashedAVVMAddresses era ~ () , Arbitrary (Tx era) , Arbitrary (TxBody era) , Arbitrary (TxOut era) , Arbitrary (TxCert era) , Arbitrary (TxWits era) , Arbitrary (TxAuxData era) , Arbitrary (Value era) , Arbitrary (CompactForm (Value era)) , Arbitrary (Script era) , Arbitrary (GovState era) , Arbitrary (PlutusPurpose AsIx era) , Arbitrary (PParams era) , Arbitrary (PParamsUpdate era) , Arbitrary (PParamsHKD StrictMaybe era) , Arbitrary (InstantStake era) , Arbitrary (CertState era) , DecCBOR (Script era) , DecCBOR (TxAuxData era) , DecCBOR (TxWits era) , DecCBOR (TxBody era) , DecCBOR (Tx era) , RuleListEra era ) => Spec roundTripConwayCommonSpec :: forall era. (EraTx era, EraGov era, EraStake era, EraCertState era, AlonzoEraScript era, StashedAVVMAddresses era ~ (), Arbitrary (Tx era), Arbitrary (TxBody era), Arbitrary (TxOut era), Arbitrary (TxCert era), Arbitrary (TxWits era), Arbitrary (TxAuxData era), Arbitrary (Value era), Arbitrary (CompactForm (Value era)), Arbitrary (Script era), Arbitrary (GovState era), Arbitrary (PlutusPurpose AsIx era), Arbitrary (PParams era), Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era), Arbitrary (InstantStake era), Arbitrary (CertState era), DecCBOR (Script era), DecCBOR (TxAuxData era), DecCBOR (TxWits era), DecCBOR (TxBody era), DecCBOR (Tx era), RuleListEra era) => Spec roundTripConwayCommonSpec = do forall era. (Arbitrary (PParams era), Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era), Arbitrary (InstantStake era), EraPParams era, EraStake era) => Spec roundTripConwayEraTypesSpec @era forall era. (EraTx era, EraGov era, EraStake era, EraCertState era, AlonzoEraScript era, StashedAVVMAddresses era ~ (), Arbitrary (Tx era), Arbitrary (TxBody era), Arbitrary (TxOut era), Arbitrary (TxCert era), Arbitrary (TxWits era), Arbitrary (TxAuxData era), Arbitrary (Value era), Arbitrary (CompactForm (Value era)), Arbitrary (Script era), Arbitrary (GovState era), Arbitrary (PlutusPurpose AsIx era), Arbitrary (PParams era), Arbitrary (PParamsUpdate era), Arbitrary (CertState era), Arbitrary (InstantStake era), DecCBOR (Script era), DecCBOR (TxAuxData era), DecCBOR (TxWits era), DecCBOR (TxBody era), DecCBOR (Tx era), RuleListEra era) => Spec roundTripAlonzoCommonSpec @era roundTripConwayEraTypesSpec :: forall era. ( Arbitrary (PParams era) , Arbitrary (PParamsUpdate era) , Arbitrary (PParamsHKD StrictMaybe era) , Arbitrary (InstantStake era) , EraPParams era , EraStake era ) => Spec roundTripConwayEraTypesSpec :: forall era. (Arbitrary (PParams era), Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era), Arbitrary (InstantStake era), EraPParams era, EraStake era) => Spec roundTripConwayEraTypesSpec = do forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Conway Transaction Types" forall a b. (a -> b) -> a -> b $ do forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripEraTypeSpec @era @GovAction forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripEraTypeSpec @era @VotingProcedure forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripEraTypeSpec @era @VotingProcedures forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripEraTypeSpec @era @ProposalProcedure forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripEraTypeSpec @era @Constitution forall prop. (HasCallStack, Testable prop) => String -> prop -> Spec prop String "CostModels" forall a b. (a -> b) -> a -> b $ forall era t. (Era era, Show t, Eq t, EncCBOR t, DecCBOR t, HasCallStack) => t -> Expectation roundTripEraExpectation @era @CostModels forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Conway State Types" forall a b. (a -> b) -> a -> b $ do forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripShareEraTypeSpec @era @EnactState forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripShareEraTypeSpec @era @GovActionState forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripShareEraTypeSpec @era @Proposals forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripShareEraTypeSpec @era @DRepPulsingState forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripShareEraTypeSpec @era @PulsingSnapshot forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripShareEraTypeSpec @era @RatifyState forall era (t :: * -> *). (Era era, Show (t era), Eq (t era), EncCBOR (t era), DecShareCBOR (t era), Arbitrary (t era), HasCallStack) => Spec roundTripShareEraTypeSpec @era @VState instance RuleListEra ConwayEra where type EraRules ConwayEra = '[ "BBODY" , "CERT" , "CERTS" , "DELEG" , "GOVCERT" , "GOV" , "LEDGER" , "LEDGERS" , "POOL" , "UTXO" , "UTXOS" , "UTXOW" ]