{-# LANGUAGE DataKinds #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE TypeApplications #-} module Test.Cardano.Ledger.Conformance.Imp.Conway (spec) where import Cardano.Ledger.BaseTypes import Cardano.Ledger.Conway (ConwayEra) import Test.Cardano.Ledger.Alonzo.Imp.UtxoSpec qualified as AlonzoUTXO import Test.Cardano.Ledger.Alonzo.Imp.UtxosSpec qualified as AlonzoUTXOS import Test.Cardano.Ledger.Alonzo.Imp.UtxowSpec qualified as AlonzoUTXOW import Test.Cardano.Ledger.Babbage.Imp.UtxoSpec qualified as BabbageUTXO import Test.Cardano.Ledger.Babbage.Imp.UtxosSpec qualified as BabbageUTXOS import Test.Cardano.Ledger.Babbage.Imp.UtxowSpec qualified as BabbageUTXOW import Test.Cardano.Ledger.Conformance.Imp.Conway.Ratify qualified as RatifySpec import Test.Cardano.Ledger.Conformance.Imp.Core import Test.Cardano.Ledger.Conway.Imp.BbodySpec qualified as BBODY import Test.Cardano.Ledger.Conway.Imp.CertsSpec qualified as CERTS import Test.Cardano.Ledger.Conway.Imp.DelegSpec qualified as DELEG import Test.Cardano.Ledger.Conway.Imp.EnactSpec qualified as ENACT import Test.Cardano.Ledger.Conway.Imp.EpochSpec qualified as EPOCH import Test.Cardano.Ledger.Conway.Imp.GovCertSpec qualified as GOVCERT import Test.Cardano.Ledger.Conway.Imp.GovSpec qualified as GOV import Test.Cardano.Ledger.Conway.Imp.LedgerSpec qualified as LEDGER import Test.Cardano.Ledger.Conway.Imp.RatifySpec qualified as RATIFY import Test.Cardano.Ledger.Conway.Imp.UtxoSpec qualified as UTXO import Test.Cardano.Ledger.Conway.Imp.UtxosSpec qualified as UTXOS import Test.Cardano.Ledger.Conway.Imp.UtxowSpec qualified as UTXOW import Test.Cardano.Ledger.Conway.ImpTest import Test.Cardano.Ledger.Imp.Common hiding (Args) import Test.Cardano.Ledger.Mary.Imp.UtxoSpec qualified as MaryUTXO import Test.Cardano.Ledger.Shelley.Imp.UtxoSpec qualified as ShelleyUTXO import Test.Cardano.Ledger.Shelley.Imp.UtxowSpec qualified as ShelleyUTXOW spec :: Spec spec :: Spec spec = do String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Imp" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do forall t. ImpSpec t => SpecWith (ImpInit t) -> Spec withImpInit @(LedgerSpec ConwayEra) (SpecWith (ImpInit (LedgerSpec ConwayEra)) -> Spec) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> Spec forall a b. (a -> b) -> a -> b $ forall era. (ShelleyEraImp era, ShelleyEraImp era) => Version -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) modifyImpInitProtVer @ConwayEra (forall (v :: Natural). (KnownNat v, MinVersion <= v, v <= MaxVersion) => Version natVersion @11) (SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra))) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall a b. (a -> b) -> a -> b $ (forall t. Globals -> TRC (EraRule "LEDGER" ConwayEra) -> Either (NonEmpty (PredicateFailure (EraRule "LEDGER" ConwayEra))) (State (EraRule "LEDGER" ConwayEra), [Event (EraRule "LEDGER" ConwayEra)]) -> ImpM t ()) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (forall t. Globals -> TRC (EraRule "LEDGER" era) -> Either (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) (State (EraRule "LEDGER" era), [Event (EraRule "LEDGER" era)]) -> ImpM t ()) -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) modifyImpInitPostSubmitTxHook Globals -> TRC (EraRule "LEDGER" ConwayEra) -> Either (NonEmpty (PredicateFailure (EraRule "LEDGER" ConwayEra))) (State (EraRule "LEDGER" ConwayEra), [Event (EraRule "LEDGER" ConwayEra)]) -> ImpM t () forall t. Globals -> TRC (EraRule "LEDGER" ConwayEra) -> Either (NonEmpty (PredicateFailure (EraRule "LEDGER" ConwayEra))) (State (EraRule "LEDGER" ConwayEra), [Event (EraRule "LEDGER" ConwayEra)]) -> ImpM t () forall era t. (HasCallStack, ExecSpecTopLevelRule "LEDGER" era) => Globals -> TRC (EraRule "LEDGER" era) -> Either (NonEmpty (PredicateFailure (EraRule "LEDGER" era))) (State (EraRule "LEDGER" era), [Event (EraRule "LEDGER" era)]) -> ImpM t () submitTxConformanceHook (SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra))) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall a b. (a -> b) -> a -> b $ do (forall t. Globals -> TRC (EraRule "NEWEPOCH" ConwayEra) -> State (EraRule "NEWEPOCH" ConwayEra) -> ImpM t ()) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (forall t. Globals -> TRC (EraRule "NEWEPOCH" era) -> State (EraRule "NEWEPOCH" era) -> ImpM t ()) -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) modifyImpInitPostEpochBoundaryHook Globals -> TRC (EraRule "NEWEPOCH" ConwayEra) -> State (EraRule "NEWEPOCH" ConwayEra) -> ImpM t () forall t. Globals -> TRC (EraRule "NEWEPOCH" ConwayEra) -> State (EraRule "NEWEPOCH" ConwayEra) -> ImpM t () forall era t. (ExecSpecTopLevelRule "NEWEPOCH" era, ToExpr (Event (EraRule "NEWEPOCH" era))) => Globals -> TRC (EraRule "NEWEPOCH" era) -> State (EraRule "NEWEPOCH" era) -> ImpM t () epochBoundaryConformanceHook (SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra))) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) -> SpecWith (ImpInit (LedgerSpec ConwayEra)) forall a b. (a -> b) -> a -> b $ do SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) BBODY.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) CERTS.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) DELEG.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (ConwayEraImp era, Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era) => SpecWith (ImpInit (LedgerSpec era)) ENACT.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (ConwayEraImp era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era) => SpecWith (ImpInit (LedgerSpec era)) EPOCH.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) GOV.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) GOVCERT.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) LEDGER.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (HasCallStack, ConwayEraImp era) => SpecWith (ImpInit (LedgerSpec era)) RATIFY.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) ShelleyUTXO.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (HasCallStack, MaryEraImp era) => SpecWith (ImpInit (LedgerSpec era)) MaryUTXO.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. AlonzoEraImp era => SpecWith (ImpInit (LedgerSpec era)) AlonzoUTXO.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. (AlonzoEraImp era, BabbageEraTxBody era, InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) BabbageUTXO.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXO.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) ShelleyUTXOW.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. AlonzoEraImp era => SpecWith (ImpInit (LedgerSpec era)) AlonzoUTXOW.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. BabbageEraImp era => SpecWith (ImpInit (LedgerSpec era)) BabbageUTXOW.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXOW.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. AlonzoEraImp era => SpecWith (ImpInit (LedgerSpec era)) AlonzoUTXOS.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. BabbageEraImp era => SpecWith (ImpInit (LedgerSpec era)) BabbageUTXOS.spec SpecWith (ImpInit (LedgerSpec ConwayEra)) forall era. ConwayEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXOS.spec String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Imp (only spec)" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do RatifySpec.spec