{-# LANGUAGE TypeApplications #-}

module Main where

import Cardano.Ledger.Mary (Mary)
import Test.Cardano.Ledger.Common
import qualified Test.Cardano.Ledger.Mary.Binary.CddlSpec as CddlSpec
import qualified Test.Cardano.Ledger.Mary.BinarySpec as BinarySpec
import qualified Test.Cardano.Ledger.Mary.Imp as Imp
import Test.Cardano.Ledger.Mary.ImpTest ()
import qualified Test.Cardano.Ledger.Mary.ValueSpec as ValueSpec

main :: IO ()
IO ()
main =
  Spec -> IO ()
ledgerTestMain forall a b. (a -> b) -> a -> b
$
    forall a. HasCallStack => String -> SpecWith a -> SpecWith a
describe String
"Mary" forall a b. (a -> b) -> a -> b
$ do
      Spec
ValueSpec.spec
      Spec
BinarySpec.spec
      Spec
CddlSpec.spec
      forall a. HasCallStack => String -> SpecWith a -> SpecWith a
describe String
"Imp" forall a b. (a -> b) -> a -> b
$ do
        forall era.
(Arbitrary (TxAuxData era), MaryEraImp era, AllegraEraScript era,
 InjectRuleFailure "LEDGER" ShelleyUtxoPredFailure era,
 InjectRuleFailure "LEDGER" ShelleyUtxowPredFailure era) =>
Spec
Imp.spec @Mary