module Main (main) where

import Test.Byron.AbstractSize.Properties (testAbstractSize, testProperty)
import Test.Byron.Spec.Chain.STS.Properties as CHAIN
import Test.Tasty (TestTree, defaultMain, testGroup)

main :: IO ()
IO ()
main = TestTree -> IO ()
defaultMain TestTree
tests
  where
    tests :: TestTree
    tests :: TestTree
tests =
      TestName -> [TestTree] -> TestTree
testGroup
        TestName
"Chain"
        [ TestName -> [TestTree] -> TestTree
testGroup
            TestName
"Properties"
            [ TestName -> Property -> TestTree
testProperty TestName
"Increasing slots" Property
CHAIN.slotsIncrease
            , TestName -> Property -> TestTree
testProperty TestName
"Block issuers are delegates" Property
CHAIN.blockIssuersAreDelegates
            , TestTree
testAbstractSize
            , TestName -> Property -> TestTree
testProperty TestName
"Only valid signals are generated" Property
CHAIN.onlyValidSignalsAreGenerated
            , TestName -> Property -> TestTree
testProperty TestName
"Signers list is bounded by k " Property
CHAIN.signersListIsBoundedByK
            , TestName -> Property -> TestTree
testProperty TestName
"We are generating reasonable Chain Traces" Property
CHAIN.relevantCasesAreCovered
            ]
        ]