{-# LANGUAGE TypeApplications #-}

module Test.Consensus.Byron.LedgerTables (tests) where

import Ouroboros.Consensus.Byron.Ledger
import Test.Consensus.Byron.Generators ()
import Test.LedgerTables
import Test.Tasty
import Test.Tasty.QuickCheck

tests :: TestTree
tests :: TestTree
tests =
  TestName -> [TestTree] -> TestTree
testGroup
    TestName
"LedgerTables"
    [ TestName
-> (LedgerState ByronBlock EmptyMK
    -> LedgerState ByronBlock ValuesMK -> Property)
-> TestTree
forall a. Testable a => TestName -> a -> TestTree
testProperty TestName
"Stowable laws" (forall blk.
(HasLedgerTables LedgerState blk,
 CanStowLedgerTables (LedgerState blk), Show (TxIn blk),
 Show (TxOut blk)) =>
LedgerState blk EmptyMK -> LedgerState blk ValuesMK -> Property
prop_stowable_laws @ByronBlock)
    , TestName
-> (LedgerState ByronBlock EmptyMK
    -> LedgerTables ByronBlock ValuesMK -> Property)
-> TestTree
forall a. Testable a => TestName -> a -> TestTree
testProperty TestName
"HasLedgerTables laws" (forall blk.
(HasLedgerTables LedgerState blk, Show (TxIn blk),
 Show (TxOut blk)) =>
LedgerState blk EmptyMK -> LedgerTables blk ValuesMK -> Property
prop_hasledgertables_laws @ByronBlock)
    ]