{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -Wno-orphans #-} module Test.Cardano.Ledger.Shelley.Imp (spec, shelleyToBabbageSpec) where import Cardano.Ledger.Core (EraRule) import Cardano.Ledger.Shelley.Rules (RupdEvent) import Cardano.Ledger.Shelley.State (ShelleyEraAccounts) import Control.State.Transition (Event) import Test.Cardano.Ledger.Imp.Common import qualified Test.Cardano.Ledger.Shelley.Imp.DelegSpec as DELEG 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.PoolSpec as POOL 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 import qualified Test.Cardano.Ledger.Shelley.UnitTests.InstantStakeTest as Instant spec :: forall proxy era. ( ShelleyEraImp era , Event (EraRule "RUPD" era) ~ RupdEvent ) => proxy era -> Spec spec :: forall (proxy :: * -> *) era. (ShelleyEraImp era, Event (EraRule "RUPD" era) ~ RupdEvent) => proxy era -> Spec spec proxy era era = do String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "ShelleyEra 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. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) DELEG.spec SpecWith (ImpInit (LedgerSpec era)) forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) EPOCH.spec SpecWith (ImpInit (LedgerSpec era)) forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) LEDGER.spec SpecWith (ImpInit (LedgerSpec era)) forall era. (ShelleyEraImp era, Event (EraRule "RUPD" era) ~ RupdEvent) => SpecWith (ImpInit (LedgerSpec era)) POOL.spec SpecWith (ImpInit (LedgerSpec era)) forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXOW.spec SpecWith (ImpInit (LedgerSpec era)) forall era. ShelleyEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXO.spec String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "ShelleyEraPureTests" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do forall era. ShelleyEraImp era => Spec Instant.spec @era shelleyToBabbageSpec :: ( ShelleyEraImp era , ShelleyEraAccounts era ) => proxy era -> Spec shelleyToBabbageSpec :: forall era (proxy :: * -> *). (ShelleyEraImp era, ShelleyEraAccounts era) => proxy era -> Spec shelleyToBabbageSpec proxy era era = 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 String -> SpecWith (ImpInit (LedgerSpec era)) -> SpecWith (ImpInit (LedgerSpec era)) forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "ShelleyEra Specific" (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. (ShelleyEraImp era, ShelleyEraAccounts era) => SpecWith (ImpInit (LedgerSpec era)) DELEG.shelleyToBabbageSpec