haskoin-core-1.2.2: src/Haskoin/Util/Arbitrary/Message.hs
-- |
-- Module : Haskoin.Test.Message
-- Copyright : No rights reserved
-- License : MIT
-- Maintainer : jprupp@protonmail.ch
-- Stability : experimental
-- Portability : POSIX
module Haskoin.Util.Arbitrary.Message where
import Haskoin.Crypto (Ctx)
import Haskoin.Network.Data
import Haskoin.Network.Message
import Haskoin.Util.Arbitrary.Block
import Haskoin.Util.Arbitrary.Crypto
import Haskoin.Util.Arbitrary.Network
import Haskoin.Util.Arbitrary.Transaction
import Test.QuickCheck
-- | Arbitrary 'MessageHeader'.
arbitraryMessageHeader :: Gen MessageHeader
arbitraryMessageHeader =
MessageHeader
<$> arbitrary
<*> arbitraryMessageCommand
<*> arbitrary
<*> arbitraryCheckSum32
-- | Arbitrary 'Message'.
arbitraryMessage :: Network -> Ctx -> Gen Message
arbitraryMessage net ctx =
oneof
[ MVersion <$> arbitraryVersion,
return MVerAck,
MAddr <$> arbitraryAddr1,
MInv <$> arbitraryInv1,
MGetData <$> arbitraryGetData,
MNotFound <$> arbitraryNotFound,
MGetBlocks <$> arbitraryGetBlocks,
MGetHeaders <$> arbitraryGetHeaders,
MTx <$> arbitraryTx net ctx,
MBlock <$> arbitraryBlock net ctx,
MMerkleBlock <$> arbitraryMerkleBlock,
MHeaders <$> arbitraryHeaders,
return MGetAddr,
MFilterLoad <$> arbitraryFilterLoad,
MFilterAdd <$> arbitraryFilterAdd,
return MFilterClear,
MPing <$> arbitraryPing,
MPong <$> arbitraryPong,
MAlert <$> arbitraryAlert,
MReject <$> arbitraryReject,
return MSendHeaders
]