{-# 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.BaseTypes (StrictMaybe) 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 Test.Cardano.Ledger.Alonzo.Binary.RoundTrip (roundTripAlonzoCommonSpec) import Test.Cardano.Ledger.Common import Test.Cardano.Ledger.Conway.Arbitrary () import Test.Cardano.Ledger.Conway.Era (ConwayEraTest) import Test.Cardano.Ledger.Core.Binary.RoundTrip roundTripConwayCommonSpec :: forall era. ( ConwayEraTest era , RuleListEra era ) => Spec roundTripConwayCommonSpec :: forall era. (ConwayEraTest 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, ConwayEraAccounts era) => Spec roundTripConwayEraTypesSpec @era forall era. (AlonzoEraTest 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 , ConwayEraAccounts era ) => Spec roundTripConwayEraTypesSpec :: forall era. (Arbitrary (PParams era), Arbitrary (PParamsUpdate era), Arbitrary (PParamsHKD StrictMaybe era), Arbitrary (InstantStake era), EraPParams era, EraStake era, ConwayEraAccounts era) => Spec roundTripConwayEraTypesSpec = do String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe (forall era. Era era => String eraName @era String -> String -> String forall a. Semigroup a => a -> a -> a <> String " Transaction Types") (Spec -> Spec) -> Spec -> Spec 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 String -> (CostModels -> Expectation) -> Spec forall prop. (HasCallStack, Testable prop) => String -> prop -> Spec prop String "CostModels" ((CostModels -> Expectation) -> Spec) -> (CostModels -> Expectation) -> Spec 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 String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe (forall era. Era era => String eraName @era String -> String -> String forall a. Semigroup a => a -> a -> a <> String " State Types") (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do forall era (t :: * -> *). (Era era, Typeable t, 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, Typeable t, 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, Typeable t, 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, Typeable t, 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, Typeable t, 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, Typeable t, 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, Typeable t, 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" ]