module Main (
  main,
)
where

import Cardano.Prelude
import qualified Test.Cardano.Chain.Block.CBOR
import qualified Test.Cardano.Chain.Block.Model
import qualified Test.Cardano.Chain.Block.Size
import qualified Test.Cardano.Chain.Block.Validation
import qualified Test.Cardano.Chain.Block.ValidationMode
import qualified Test.Cardano.Chain.Buildable
import qualified Test.Cardano.Chain.Byron.API
import qualified Test.Cardano.Chain.Common.Address
import qualified Test.Cardano.Chain.Common.Attributes
import qualified Test.Cardano.Chain.Common.CBOR
import qualified Test.Cardano.Chain.Common.Compact
import qualified Test.Cardano.Chain.Common.Lovelace
import qualified Test.Cardano.Chain.Delegation.CBOR
import qualified Test.Cardano.Chain.Delegation.Certificate
import qualified Test.Cardano.Chain.Delegation.Model
import qualified Test.Cardano.Chain.Elaboration.Delegation
import qualified Test.Cardano.Chain.Epoch.File
import qualified Test.Cardano.Chain.Genesis.CBOR
import qualified Test.Cardano.Chain.Genesis.Json
import qualified Test.Cardano.Chain.MempoolPayload.CBOR
import qualified Test.Cardano.Chain.Slotting.CBOR
import qualified Test.Cardano.Chain.Slotting.Properties
import qualified Test.Cardano.Chain.Ssc.CBOR
import qualified Test.Cardano.Chain.UTxO.CBOR
import qualified Test.Cardano.Chain.UTxO.Compact
import qualified Test.Cardano.Chain.UTxO.Model
import qualified Test.Cardano.Chain.UTxO.ValidationMode
import qualified Test.Cardano.Chain.Update.CBOR
import qualified Test.Cardano.Chain.Update.Properties
import Test.Options (ShouldAssertNF (..), mainWithTestScenario, tsGroupToTree)
import Test.Tasty (testGroup)

main :: IO ()
IO ()
main =
  TestTree -> IO ()
mainWithTestScenario forall a b. (a -> b) -> a -> b
$
    TestName -> [TestTree] -> TestTree
testGroup TestName
"Cardano Ledger Tests" forall a b. (a -> b) -> a -> b
$
      TSGroup -> TestTree
tsGroupToTree
        forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ TSGroup
Test.Cardano.Chain.Block.CBOR.tests
            , TSGroup
Test.Cardano.Chain.Block.Model.tests
            , TSGroup
Test.Cardano.Chain.Block.Size.tests
            , ShouldAssertNF -> TSGroup
Test.Cardano.Chain.Block.Validation.tests ShouldAssertNF
NoAssertNF
            , TSGroup
Test.Cardano.Chain.Block.ValidationMode.tests
            , TSGroup
Test.Cardano.Chain.Buildable.tests
            , TSGroup
Test.Cardano.Chain.Common.Address.tests
            , TSGroup
Test.Cardano.Chain.Common.Attributes.tests
            , TSGroup
Test.Cardano.Chain.Common.CBOR.tests
            , TSGroup
Test.Cardano.Chain.Common.Compact.tests
            , TSGroup
Test.Cardano.Chain.Common.Lovelace.tests
            , TSGroup
Test.Cardano.Chain.Delegation.CBOR.tests
            , forall a b. a -> b -> a
const Group
Test.Cardano.Chain.Delegation.Certificate.tests
            , forall a b. a -> b -> a
const Group
Test.Cardano.Chain.Delegation.Model.tests
            , forall a b. a -> b -> a
const Group
Test.Cardano.Chain.Epoch.File.tests
            , TSGroup
Test.Cardano.Chain.Elaboration.Delegation.tests
            , TSGroup
Test.Cardano.Chain.Genesis.CBOR.tests
            , TSGroup
Test.Cardano.Chain.Genesis.Json.tests
            , TSGroup
Test.Cardano.Chain.MempoolPayload.CBOR.tests
            , TSGroup
Test.Cardano.Chain.Slotting.CBOR.tests
            , TSGroup
Test.Cardano.Chain.Slotting.Properties.tests
            , forall a b. a -> b -> a
const Group
Test.Cardano.Chain.Ssc.CBOR.tests
            , TSGroup
Test.Cardano.Chain.UTxO.CBOR.tests
            , TSGroup
Test.Cardano.Chain.UTxO.Compact.tests
            , TSGroup
Test.Cardano.Chain.UTxO.Model.tests
            , TSGroup
Test.Cardano.Chain.UTxO.ValidationMode.tests
            , TSGroup
Test.Cardano.Chain.Update.CBOR.tests
            , TSGroup
Test.Cardano.Chain.Update.Properties.tests
            , TSGroup
Test.Cardano.Chain.Byron.API.tests
            ]