{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -Wno-orphans #-}

module Test.Cardano.Ledger.Allegra.Imp (spec) where

import Cardano.Ledger.Allegra (AllegraEra)
import qualified Test.Cardano.Ledger.Allegra.Imp.UtxowSpec as UtxowSpec
import Test.Cardano.Ledger.Allegra.ImpTest
import Test.Cardano.Ledger.Imp.Common
import qualified Test.Cardano.Ledger.Shelley.Imp as ShelleyImp

spec :: forall era. (ShelleyEraImp era, EraSpecificSpec era) => Spec
spec :: forall era. (ShelleyEraImp era, EraSpecificSpec era) => Spec
spec = do
  forall era. (ShelleyEraImp era, EraSpecificSpec era) => Spec
ShelleyImp.spec @era
  String -> Spec -> Spec
forall a. HasCallStack => String -> SpecWith a -> SpecWith a
describe String
"AllegraImpSpec" (Spec -> Spec)
-> (SpecWith (ImpInit (LedgerSpec era)) -> Spec)
-> SpecWith (ImpInit (LedgerSpec era))
-> Spec
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall era.
ShelleyEraImp era =>
SpecWith (ImpInit (LedgerSpec era)) -> Spec
withEachEraVersion @era (SpecWith (ImpInit (LedgerSpec era)) -> Spec)
-> SpecWith (ImpInit (LedgerSpec era)) -> Spec
forall a b. (a -> b) -> a -> b
$
    SpecWith (ImpInit (LedgerSpec era))
forall era.
ShelleyEraImp era =>
SpecWith (ImpInit (LedgerSpec era))
UtxowSpec.spec

instance EraSpecificSpec AllegraEra