{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} module Test.Cardano.Ledger.Babbage.Imp ( spec, Alonzo.shelleyToBabbageSpec, Alonzo.alonzoToConwaySpec, babbageOnlySpec, ) where import Cardano.Ledger.Babbage.Core import Cardano.Ledger.Babbage.State import qualified Cardano.Ledger.Shelley.Rules as Shelley import qualified Test.Cardano.Ledger.Alonzo.Imp as Alonzo import Test.Cardano.Ledger.Alonzo.ImpTest import qualified Test.Cardano.Ledger.Babbage.Imp.PoolSpec as POOL import qualified Test.Cardano.Ledger.Babbage.Imp.UtxoSpec as UTXO import qualified Test.Cardano.Ledger.Babbage.Imp.UtxosSpec as UTXOS import qualified Test.Cardano.Ledger.Babbage.Imp.UtxowSpec as UTXOW import Test.Cardano.Ledger.Babbage.ImpTest (BabbageEraImp) import Test.Cardano.Ledger.Imp.Common spec :: ( BabbageEraImp era , Shelley.Event (EraRule "RUPD" era) ~ Shelley.RupdEvent ) => proxy era -> Spec spec :: forall era (proxy :: * -> *). (BabbageEraImp era, Event (EraRule "RUPD" era) ~ RupdEvent) => proxy era -> Spec spec proxy era era = do proxy era -> Spec forall era (proxy :: * -> *). (AlonzoEraImp era, Event (EraRule "RUPD" era) ~ RupdEvent) => proxy era -> Spec Alonzo.spec proxy era era String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "BabbageEra Onwards" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ proxy era -> SpecWith (ImpInit (LedgerSpec era)) -> Spec forall (proxy :: * -> *) era. ShelleyEraImp era => proxy era -> SpecWith (ImpInit (LedgerSpec era)) -> Spec withImpInitEachEraVersion proxy era era (SpecWith (ImpInit (LedgerSpec era)) -> Spec) -> SpecWith (ImpInit (LedgerSpec era)) -> Spec forall a b. (a -> b) -> a -> b $ do SpecWith (ImpInit (LedgerSpec era)) forall era. (AlonzoEraImp era, BabbageEraTxBody era, InjectRuleFailure "LEDGER" BabbageUtxoPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) UTXO.spec SpecWith (ImpInit (LedgerSpec era)) forall era. BabbageEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXOW.spec SpecWith (ImpInit (LedgerSpec era)) forall era. BabbageEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXOS.spec babbageOnlySpec :: ( BabbageEraImp era , ShelleyEraAccounts era , Shelley.Event (EraRule "NEWEPOCH" era) ~ Shelley.ShelleyNewEpochEvent era ) => proxy era -> Spec babbageOnlySpec :: forall era (proxy :: * -> *). (BabbageEraImp era, ShelleyEraAccounts era, Event (EraRule "NEWEPOCH" era) ~ ShelleyNewEpochEvent era) => proxy era -> Spec babbageOnlySpec proxy era era = do String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "BabbageEra Specific" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ proxy era -> SpecWith (ImpInit (LedgerSpec era)) -> Spec forall (proxy :: * -> *) era. ShelleyEraImp era => proxy era -> SpecWith (ImpInit (LedgerSpec era)) -> Spec withImpInitEachEraVersion proxy era era (SpecWith (ImpInit (LedgerSpec era)) -> Spec) -> SpecWith (ImpInit (LedgerSpec era)) -> Spec forall a b. (a -> b) -> a -> b $ do POOL.babbageEraSpecificSpec