module Test.CompactFilter
    ( genBlockFilter
    ) where

import           Control.Monad                (replicateM)
import           Haskoin.Constants            (btc)
import           Haskoin.Util.Arbitrary.Block (arbitraryBlock)
import           Haskoin.Util.Arbitrary.Util  (arbitraryBS1)
import           Test.Tasty.QuickCheck        (Gen, choose)

import           Bitcoin.CompactFilter        (BlockFilter, encodeFilter)


genBlockFilter :: Gen BlockFilter
genBlockFilter = encodeFilter <$> scripts <*> arbitraryBlock btc
    where
    scripts = do
        n <- choose (1, 100)
        replicateM n arbitraryBS1