{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-orphans #-} module Test.Cardano.Ledger.Babbage.Imp (spec) where import Cardano.Ledger.Babbage (BabbageEra) import Cardano.Ledger.Babbage.Core import Cardano.Ledger.Babbage.State import Cardano.Ledger.Shelley.Rules import qualified Test.Cardano.Ledger.Alonzo.Imp as AlonzoImp 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 import qualified Test.Cardano.Ledger.Shelley.Imp as ShelleyImp spec :: forall era. ( BabbageEraImp era , EraSpecificSpec era , Event (EraRule "RUPD" era) ~ RupdEvent ) => Spec spec :: forall era. (BabbageEraImp era, EraSpecificSpec era, Event (EraRule "RUPD" era) ~ RupdEvent) => Spec spec = do forall era. (AlonzoEraImp era, EraSpecificSpec era, Event (EraRule "RUPD" era) ~ RupdEvent) => Spec AlonzoImp.spec @era forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) -> Spec withEachEraVersion @era (SpecWith (ImpInit (LedgerSpec era)) -> Spec) -> SpecWith (ImpInit (LedgerSpec era)) -> Spec forall a b. (a -> b) -> a -> b $ String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "BabbageImpSpec - era generic tests" (SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era))) -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) 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 forall era. BabbageEraImp era => SpecWith (ImpInit (LedgerSpec era)) Utxos.spec @era babbageEraSpecificSpec :: forall era. ( BabbageEraImp era , ShelleyEraAccounts era , Event (EraRule "NEWEPOCH" era) ~ ShelleyNewEpochEvent era ) => SpecWith (ImpInit (LedgerSpec era)) babbageEraSpecificSpec :: forall era. (BabbageEraImp era, ShelleyEraAccounts era, Event (EraRule "NEWEPOCH" era) ~ ShelleyNewEpochEvent era) => SpecWith (ImpInit (LedgerSpec era)) babbageEraSpecificSpec = do String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Babbage era specific Imp spec" (SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era))) -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a b. (a -> b) -> a -> b $ String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "POOL" SpecWith (ImpInit (LedgerSpec era)) forall era. (BabbageEraImp era, ShelleyEraAccounts era, Event (EraRule "NEWEPOCH" era) ~ ShelleyNewEpochEvent era) => SpecWith (ImpInit (LedgerSpec era)) Pool.babbageEraSpecificSpec instance EraSpecificSpec BabbageEra where eraSpecificSpec :: SpecWith (ImpInit (LedgerSpec BabbageEra)) eraSpecificSpec = SpecWith (ImpInit (LedgerSpec BabbageEra)) forall era. (ShelleyEraImp era, ShelleyEraAccounts era) => SpecWith (ImpInit (LedgerSpec era)) ShelleyImp.shelleyEraSpecificSpec SpecWith (ImpInit (LedgerSpec BabbageEra)) -> SpecWith (ImpInit (LedgerSpec BabbageEra)) -> SpecWith (ImpInit (LedgerSpec BabbageEra)) forall a b. SpecM (ImpInit (LedgerSpec BabbageEra)) a -> SpecM (ImpInit (LedgerSpec BabbageEra)) b -> SpecM (ImpInit (LedgerSpec BabbageEra)) b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> SpecWith (ImpInit (LedgerSpec BabbageEra)) forall era. (AlonzoEraImp era, ShelleyEraTxCert era) => SpecWith (ImpInit (LedgerSpec era)) AlonzoImp.alonzoEraSpecificSpec SpecWith (ImpInit (LedgerSpec BabbageEra)) -> SpecWith (ImpInit (LedgerSpec BabbageEra)) -> SpecWith (ImpInit (LedgerSpec BabbageEra)) forall a b. SpecM (ImpInit (LedgerSpec BabbageEra)) a -> SpecM (ImpInit (LedgerSpec BabbageEra)) b -> SpecM (ImpInit (LedgerSpec BabbageEra)) b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> SpecWith (ImpInit (LedgerSpec BabbageEra)) forall era. (BabbageEraImp era, ShelleyEraAccounts era, Event (EraRule "NEWEPOCH" era) ~ ShelleyNewEpochEvent era) => SpecWith (ImpInit (LedgerSpec era)) babbageEraSpecificSpec