{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} module Test.Cardano.Ledger.Shelley.Imp (spec) where import Cardano.Ledger.Core import Cardano.Ledger.Shelley.Rules (ShelleyUtxoPredFailure, ShelleyUtxowPredFailure) import Test.Cardano.Ledger.Imp.Common import qualified Test.Cardano.Ledger.Shelley.Imp.EpochSpec as Epoch import qualified Test.Cardano.Ledger.Shelley.Imp.LedgerSpec as Ledger import qualified Test.Cardano.Ledger.Shelley.Imp.UtxoSpec as Utxo import qualified Test.Cardano.Ledger.Shelley.Imp.UtxowSpec as Utxow import Test.Cardano.Ledger.Shelley.ImpTest (LedgerSpec, ShelleyEraImp) import qualified Test.Cardano.Ledger.Shelley.UnitTests.InstantStakeTest as Instant spec :: forall era. ( ShelleyEraImp era , InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era , InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era ) => Spec spec :: forall era. (ShelleyEraImp era, InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era) => Spec spec = do String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "ShelleyImpSpec" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ forall t. ImpSpec t => SpecWith (ImpInit t) -> Spec withImpInit @(LedgerSpec 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. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) Ledger.spec SpecWith (ImpInit (LedgerSpec era)) forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) Epoch.spec SpecWith (ImpInit (LedgerSpec era)) forall era. (ShelleyEraImp era, InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Utxow.spec SpecWith (ImpInit (LedgerSpec era)) forall era. (ShelleyEraImp era, InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era) => SpecWith (ImpInit (LedgerSpec era)) Utxo.spec String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "ShelleyPureTests" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do forall era. (EraTxOut era, EraStake era) => Spec Instant.spec @era