{-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -Wno-orphans #-} module Test.Cardano.Ledger.Dijkstra.Imp where import qualified Cardano.Ledger.Conway.Rules as Conway import Cardano.Ledger.Dijkstra import Cardano.Ledger.Dijkstra.Core import qualified Cardano.Ledger.Shelley.Rules as Shelley import Control.State.Transition (Event) import Data.Proxy import Test.Cardano.Ledger.Common import qualified Test.Cardano.Ledger.Conway.Imp as ConwayImp import qualified Test.Cardano.Ledger.Dijkstra.Imp.BbodySpec as BBODY import qualified Test.Cardano.Ledger.Dijkstra.Imp.CertSpec as CERT import qualified Test.Cardano.Ledger.Dijkstra.Imp.EbSpec as EB import qualified Test.Cardano.Ledger.Dijkstra.Imp.EntitiesSpec as ENTITIES import qualified Test.Cardano.Ledger.Dijkstra.Imp.LedgerSpec as LEDGER import qualified Test.Cardano.Ledger.Dijkstra.Imp.LeiosCertSpec as LEIOSCERT import qualified Test.Cardano.Ledger.Dijkstra.Imp.MempoolSpec as MEMPOOL import qualified Test.Cardano.Ledger.Dijkstra.Imp.PoolSpec as POOL import qualified Test.Cardano.Ledger.Dijkstra.Imp.SnapSpec as SNAP import qualified Test.Cardano.Ledger.Dijkstra.Imp.SubDelegSpec as SUBDELEG import qualified Test.Cardano.Ledger.Dijkstra.Imp.SubGovCertSpec as SUBGOVCERT import qualified Test.Cardano.Ledger.Dijkstra.Imp.SubGovSpec as SUBGOV import qualified Test.Cardano.Ledger.Dijkstra.Imp.SubLedgerSpec as SUBLEDGER import qualified Test.Cardano.Ledger.Dijkstra.Imp.SubPoolSpec as SUBPOOL import qualified Test.Cardano.Ledger.Dijkstra.Imp.SubUtxoSpec as SUBUTXO import qualified Test.Cardano.Ledger.Dijkstra.Imp.SubUtxowSpec as SUBUTXOW import qualified Test.Cardano.Ledger.Dijkstra.Imp.UtxoSpec as UTXO import qualified Test.Cardano.Ledger.Dijkstra.Imp.UtxosSpec as UTXOS import qualified Test.Cardano.Ledger.Dijkstra.Imp.UtxowSpec as UTXOW import Test.Cardano.Ledger.Dijkstra.ImpTest spec :: ( DijkstraEraImp era , Event (EraRule "EPOCH" era) ~ Conway.ConwayEpochEvent era , Event (EraRule "NEWEPOCH" era) ~ Conway.ConwayNewEpochEvent era , Event (EraRule "HARDFORK" era) ~ Conway.ConwayHardForkEvent era , Event (EraRule "RUPD" era) ~ Shelley.RupdEvent , HashAnnotated (Tx TopTx era) EraIndependentTx ) => proxy era -> Spec spec :: forall era (proxy :: * -> *). (DijkstraEraImp era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era, Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era, Event (EraRule "RUPD" era) ~ RupdEvent, HashAnnotated (Tx TopTx era) EraIndependentTx) => proxy era -> Spec spec proxy era era = do proxy era -> Spec forall era (proxy :: * -> *). (ConwayEraImp era, Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era, Event (EraRule "RUPD" era) ~ RupdEvent) => proxy era -> Spec ConwayImp.spec proxy era era String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DijkstraEra 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. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) BBODY.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) LEIOSCERT.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) LEDGER.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) MEMPOOL.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) SUBLEDGER.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) CERT.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) ENTITIES.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) SUBGOV.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) POOL.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) SNAP.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXOW.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXOS.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) UTXO.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) SUBUTXO.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) SUBUTXOW.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) SUBDELEG.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) SUBPOOL.spec SpecWith (ImpInit (LedgerSpec era)) forall era. DijkstraEraImp era => SpecWith (ImpInit (LedgerSpec era)) SUBGOVCERT.spec SpecWith (ImpInit (LedgerSpec era)) forall era. (DijkstraEraImp era, HashAnnotated (Tx TopTx era) EraIndependentTx) => SpecWith (ImpInit (LedgerSpec era)) EB.spec dijkstraOnlySpec :: Spec dijkstraOnlySpec :: Spec dijkstraOnlySpec = String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "DijkstraEra Specific" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ Proxy DijkstraEra -> SpecWith (ImpInit (LedgerSpec DijkstraEra)) -> Spec forall (proxy :: * -> *) era. ShelleyEraImp era => proxy era -> SpecWith (ImpInit (LedgerSpec era)) -> Spec withImpInitEachEraVersion (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @DijkstraEra) (SpecWith (ImpInit (LedgerSpec DijkstraEra)) -> Spec) -> SpecWith (ImpInit (LedgerSpec DijkstraEra)) -> Spec forall a b. (a -> b) -> a -> b $ do POOL.dijkstraOnlySpec