{-# 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.Shelley.Core (ShelleyEraTxCert) 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 as ShelleyImp spec :: forall era. ( AlonzoEraImp era , EraSpecificSpec era ) => Spec spec :: forall era. (AlonzoEraImp era, EraSpecificSpec era) => Spec spec = do forall era. (MaryEraImp era, EraSpecificSpec 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 => SpecWith (ImpInit (LedgerSpec era)) Utxo.spec SpecWith (ImpInit (LedgerSpec era)) forall era. AlonzoEraImp era => SpecWith (ImpInit (LedgerSpec era)) Utxos.spec SpecWith (ImpInit (LedgerSpec era)) forall era. AlonzoEraImp era => SpecWith (ImpInit (LedgerSpec era)) Utxow.spec alonzoEraSpecificSpec :: forall era. (AlonzoEraImp era, ShelleyEraTxCert era) => SpecWith (ImpInit (LedgerSpec era)) alonzoEraSpecificSpec :: forall era. (AlonzoEraImp era, ShelleyEraTxCert 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 $ do SpecWith (ImpInit (LedgerSpec era)) forall era. (AlonzoEraImp era, ShelleyEraTxCert 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, InjectRuleFailure "LEDGER" ShelleyDelegsPredFailure 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) => SpecWith (ImpInit (LedgerSpec era)) alonzoEraSpecificSpec