{-# LANGUAGE TypeApplications #-} module Main where import Cardano.Ledger.Dijkstra (DijkstraEra) import Cardano.Ledger.Dijkstra.Rules () import Cardano.Ledger.Plutus (SLanguage (..)) import Test.Cardano.Ledger.Babbage.TxInfoSpec (txInfoSpec) import qualified Test.Cardano.Ledger.Babbage.TxInfoSpec as BabbageTxInfo import Test.Cardano.Ledger.Common import Test.Cardano.Ledger.Conway.Binary.RoundTrip (roundTripConwayCommonSpec) import Test.Cardano.Ledger.Dijkstra.Binary.Annotator () import qualified Test.Cardano.Ledger.Dijkstra.Binary.CddlSpec as Cddl import qualified Test.Cardano.Ledger.Dijkstra.Binary.Golden as Golden import Test.Cardano.Ledger.Dijkstra.Binary.RoundTrip () import qualified Test.Cardano.Ledger.Dijkstra.GoldenSpec as GoldenSpec import qualified Test.Cardano.Ledger.Dijkstra.Imp as Imp import Test.Cardano.Ledger.Dijkstra.ImpTest () import qualified Test.Cardano.Ledger.Dijkstra.TxInfoSpec as DijkstraTxInfoSpec import Test.Cardano.Ledger.Shelley.JSON (roundTripJsonShelleyEraSpec) main :: IO () IO () main = Spec -> IO () ledgerTestMain (Spec -> IO ()) -> Spec -> IO () forall a b. (a -> b) -> a -> b $ String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Dijkstra" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "RoundTrip" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do forall era. (ConwayEraTest era, RuleListEra era) => Spec roundTripConwayCommonSpec @DijkstraEra Spec Cddl.spec Spec GoldenSpec.spec forall era. ShelleyEraTest era => Spec roundTripJsonShelleyEraSpec @DijkstraEra String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Imp" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do forall era. (DijkstraEraImp era, EraSpecificSpec era, Event (EraRule "EPOCH" era) ~ ConwayEpochEvent era, Event (EraRule "NEWEPOCH" era) ~ ConwayNewEpochEvent era, Event (EraRule "HARDFORK" era) ~ ConwayHardForkEvent era, InjectRuleFailure "LEDGER" DijkstraUtxoPredFailure era) => Spec Imp.spec @DijkstraEra String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "TxInfo" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do forall era. (EraTx era, BabbageEraTxBody era, Value era ~ MaryValue, Inject (BabbageContextError era) (ContextError era), EraPlutusTxInfo 'PlutusV1 era, EraPlutusTxInfo 'PlutusV2 era) => Spec BabbageTxInfo.spec @DijkstraEra forall era (l :: Language). (EraTx era, EraPlutusTxInfo l era, EraPlutusTxInfo 'PlutusV2 era, BabbageEraTxBody era, Value era ~ MaryValue, Inject (BabbageContextError era) (ContextError era), Show (PlutusTxInInfo era l), Eq (PlutusTxInInfo era l)) => SLanguage l -> Spec txInfoSpec @DijkstraEra SLanguage 'PlutusV3 SPlutusV3 forall era (l :: Language). (EraTx era, EraPlutusTxInfo l era, EraPlutusTxInfo 'PlutusV2 era, BabbageEraTxBody era, Value era ~ MaryValue, Inject (BabbageContextError era) (ContextError era), Show (PlutusTxInInfo era l), Eq (PlutusTxInInfo era l)) => SLanguage l -> Spec txInfoSpec @DijkstraEra SLanguage 'PlutusV4 SPlutusV4 forall era. (EraPlutusTxInfo 'PlutusV4 era, Inject (DijkstraContextError era) (ContextError era), ConwayEraTxBody era, EraTx era, Arbitrary (Value era)) => Spec DijkstraTxInfoSpec.spec @DijkstraEra String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Golden" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do forall era. DijkstraEraTest era => Spec Golden.spec @DijkstraEra