{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# OPTIONS_GHC -Wno-orphans #-} module Test.Cardano.Ledger.Alonzo.Imp where import Cardano.Ledger.Alonzo (AlonzoEra) import Cardano.Ledger.Alonzo.Core import Cardano.Ledger.Alonzo.Rules ( AlonzoUtxoPredFailure, AlonzoUtxosPredFailure, AlonzoUtxowPredFailure, ) import Cardano.Ledger.Shelley.Rules ( ShelleyDelegPredFailure, ShelleyPoolPredFailure, ShelleyUtxoPredFailure, ShelleyUtxowPredFailure, ) import qualified Test.Cardano.Ledger.Alonzo.Imp.UtxoSpec as Utxo import qualified Test.Cardano.Ledger.Alonzo.Imp.UtxosSpec as Utxos import qualified Test.Cardano.Ledger.Alonzo.Imp.UtxowSpec as Utxow import Test.Cardano.Ledger.Alonzo.ImpTest import Test.Cardano.Ledger.Imp.Common import qualified Test.Cardano.Ledger.Mary.Imp as MaryImp import qualified Test.Cardano.Ledger.Shelley.Imp.PoolSpec as ShelleyImp spec :: forall era. ( AlonzoEraImp era , EraSpecificSpec era , InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era , InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era ) => Spec spec :: forall era. (AlonzoEraImp era, EraSpecificSpec era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era) => Spec spec = do forall era. (MaryEraImp era, EraSpecificSpec era, InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era) => Spec MaryImp.spec @era String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "AlonzoImpSpec" (Spec -> Spec) -> (SpecWith (ImpInit (LedgerSpec era)) -> Spec) -> SpecWith (ImpInit (LedgerSpec era)) -> Spec forall b c a. (b -> c) -> (a -> b) -> a -> c . 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 $ do SpecWith (ImpInit (LedgerSpec era)) forall era. (AlonzoEraImp era, InjectRuleFailure "LEDGER" AlonzoUtxoPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Utxo.spec SpecWith (ImpInit (LedgerSpec era)) forall era. (AlonzoEraImp era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Utxos.spec SpecWith (ImpInit (LedgerSpec era)) forall era. (AlonzoEraImp era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Utxow.spec alonzoEraSpecificSpec :: forall era. ( AlonzoEraImp era , ShelleyEraTxCert era , InjectRuleFailure "LEDGER" ShelleyDelegPredFailure era , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era , InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era ) => SpecWith (ImpInit (LedgerSpec era)) alonzoEraSpecificSpec :: forall era. (AlonzoEraImp era, ShelleyEraTxCert era, InjectRuleFailure "LEDGER" ShelleyDelegPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) alonzoEraSpecificSpec = do String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Alonzo 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 "Certificates without deposits" (SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era))) -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a b. (a -> b) -> a -> b $ SpecWith (ImpInit (LedgerSpec era)) forall era. (AlonzoEraImp era, ShelleyEraTxCert era, InjectRuleFailure "LEDGER" ShelleyDelegPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Utxow.alonzoEraSpecificSpec instance EraSpecificSpec AlonzoEra where eraSpecificSpec :: SpecWith (ImpInit (LedgerSpec AlonzoEra)) eraSpecificSpec = SpecWith (ImpInit (LedgerSpec AlonzoEra)) forall era. (ShelleyEraImp era, ShelleyEraTxCert era, InjectRuleFailure "LEDGER" ShelleyPoolPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) ShelleyImp.shelleyEraSpecificSpec SpecWith (ImpInit (LedgerSpec AlonzoEra)) -> SpecWith (ImpInit (LedgerSpec AlonzoEra)) -> SpecWith (ImpInit (LedgerSpec AlonzoEra)) forall a b. SpecM (ImpInit (LedgerSpec AlonzoEra)) a -> SpecM (ImpInit (LedgerSpec AlonzoEra)) b -> SpecM (ImpInit (LedgerSpec AlonzoEra)) b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> SpecWith (ImpInit (LedgerSpec AlonzoEra)) forall era. (AlonzoEraImp era, ShelleyEraTxCert era, InjectRuleFailure "LEDGER" ShelleyDelegPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxosPredFailure era, InjectRuleFailure "LEDGER" AlonzoUtxowPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) alonzoEraSpecificSpec