module Haskoin.Util.Arbitrary.Message where
import Haskoin.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
arbitraryMessageHeader :: Gen MessageHeader
=
Word32 -> MessageCommand -> Word32 -> CheckSum32 -> MessageHeader
MessageHeader forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a. Arbitrary a => Gen a
arbitrary
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen MessageCommand
arbitraryMessageCommand
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Arbitrary a => Gen a
arbitrary
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Gen CheckSum32
arbitraryCheckSum32
arbitraryMessage :: Network -> Gen Message
arbitraryMessage :: Network -> Gen Message
arbitraryMessage Network
net =
forall a. [Gen a] -> Gen a
oneof
[ Version -> Message
MVersion forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Version
arbitraryVersion
, forall (m :: * -> *) a. Monad m => a -> m a
return Message
MVerAck
, Addr -> Message
MAddr forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Addr
arbitraryAddr1
, Inv -> Message
MInv forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Inv
arbitraryInv1
, GetData -> Message
MGetData forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen GetData
arbitraryGetData
, NotFound -> Message
MNotFound forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen NotFound
arbitraryNotFound
, GetBlocks -> Message
MGetBlocks forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen GetBlocks
arbitraryGetBlocks
, GetHeaders -> Message
MGetHeaders forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen GetHeaders
arbitraryGetHeaders
, Tx -> Message
MTx forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Network -> Gen Tx
arbitraryTx Network
net
, Block -> Message
MBlock forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Network -> Gen Block
arbitraryBlock Network
net
, MerkleBlock -> Message
MMerkleBlock forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen MerkleBlock
arbitraryMerkleBlock
, Headers -> Message
MHeaders forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Headers
arbitraryHeaders
, forall (m :: * -> *) a. Monad m => a -> m a
return Message
MGetAddr
, FilterLoad -> Message
MFilterLoad forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen FilterLoad
arbitraryFilterLoad
, FilterAdd -> Message
MFilterAdd forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen FilterAdd
arbitraryFilterAdd
, forall (m :: * -> *) a. Monad m => a -> m a
return Message
MFilterClear
, Ping -> Message
MPing forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Ping
arbitraryPing
, Pong -> Message
MPong forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Pong
arbitraryPong
, Alert -> Message
MAlert forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Alert
arbitraryAlert
, Reject -> Message
MReject forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Gen Reject
arbitraryReject
, forall (m :: * -> *) a. Monad m => a -> m a
return Message
MSendHeaders
]