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
    (TestTree -> IO ()) -> TestTree -> IO ()
forall a b. (a -> b) -> a -> b
$ TestName -> [TestTree] -> TestTree
testGroup TestName
"Cardano Ledger Tests"
    ([TestTree] -> TestTree) -> [TestTree] -> TestTree
forall a b. (a -> b) -> a -> b
$ TSGroup -> TestTree
tsGroupToTree
    (TSGroup -> TestTree) -> [TSGroup] -> [TestTree]
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
        , Group -> TSGroup
forall a b. a -> b -> a
const Group
Test.Cardano.Chain.Delegation.Certificate.tests
        , Group -> TSGroup
forall a b. a -> b -> a
const Group
Test.Cardano.Chain.Delegation.Model.tests
        , Group -> TSGroup
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
        , Group -> TSGroup
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
        ]