module Main where import Protolude import Test.Tasty import Test.Tasty.QuickCheck import Test.QuickCheck.Monadic import qualified Data.ByteString as BS import Crypto.Hash.MerkleTree newtype MerkleTest = MerkleTest Int deriving (Show) instance Arbitrary MerkleTest where arbitrary = MerkleTest <$> choose (100,10000) main :: IO () main = defaultMain merkleTests merkleTests :: TestTree merkleTests = testGroup "Merkle Tree & Proof tests" [ testProperty "Random Tree/Proof construction and validation:" $ \(MerkleTest n) -> monadicIO $ assert =<< liftIO (testMerkleProofN n) ]