From c2411f4315ff19f873fb50718c3cd7aea45d07e5 Mon Sep 17 00:00:00 2001 From: Deirdre Connolly Date: Mon, 16 Dec 2019 16:21:50 -0500 Subject: [PATCH] Add a little proptest around Magic's Debug impl --- zebra-network/src/protocol/external/types.rs | 32 +++++++++++++++++++ .../src/protocol/internal/request.rs | 20 ------------ .../src/protocol/internal/response.rs | 20 ------------ 3 files changed, 32 insertions(+), 40 deletions(-) diff --git a/zebra-network/src/protocol/external/types.rs b/zebra-network/src/protocol/external/types.rs index 156d4a95..f836dae1 100644 --- a/zebra-network/src/protocol/external/types.rs +++ b/zebra-network/src/protocol/external/types.rs @@ -1,8 +1,12 @@ use hex; use std::fmt; +#[cfg(test)] +use proptest_derive::Arbitrary; + /// A magic number identifying the network. #[derive(Copy, Clone, Eq, PartialEq)] +#[cfg_attr(test, derive(Arbitrary))] pub struct Magic(pub [u8; 4]); impl fmt::Debug for Magic { @@ -67,3 +71,31 @@ mod tests { assert_eq!(format!("{:?}", magics::TESTNET), "Magic(\"fa1af9bf\")"); } } + +#[cfg(test)] +mod proptest { + + use hex; + + use proptest::prelude::*; + + use super::Magic; + + // impl Arbitrary for Magic { + // type Parameters = (); + + // fn arbitrary_with(_args: Self::Parameters) -> Self::Strategy { + // Magic + // } + + // type Strategy = BoxedStrategy; + // } + + proptest! { + + #[test] + fn proptest_magic_from_array(data in any::<[u8; 4]>()) { + assert_eq!(format!("{:?}", Magic(data)), format!("Magic({:x?})", hex::encode(data))); + } + } +} diff --git a/zebra-network/src/protocol/internal/request.rs b/zebra-network/src/protocol/internal/request.rs index 35bf6960..bfeb5bff 100644 --- a/zebra-network/src/protocol/internal/request.rs +++ b/zebra-network/src/protocol/internal/request.rs @@ -1,40 +1,20 @@ -#[cfg(test)] -use proptest_derive::Arbitrary; - use crate::meta_addr::MetaAddr; use super::super::types::Nonce; /// A network request, represented in internal format. #[derive(Clone, Debug, Eq, PartialEq)] -#[cfg_attr(test, derive(Arbitrary))] pub enum Request { /// Requests additional peers from the server. GetPeers, /// Advertises peers to the remote server. - #[cfg_attr(test, proptest(skip))] PushPeers(Vec), /// Heartbeats triggered on peer connection start. // This is included as a bit of a hack, it should only be used // internally for connection management. You should not expect to // be firing or handling `Ping` requests or `Pong` responses. - #[cfg_attr(test, proptest(skip))] Ping(Nonce), /// Requests the transactions the remote server has verified but /// not yet confirmed. GetMempool, } - -#[cfg(test)] -mod test { - use proptest::prelude::*; - - use super::Request; - - proptest! { - #[test] - fn proptest_response(res in any::()) { - println!("{:?}", res); - } - } -} diff --git a/zebra-network/src/protocol/internal/response.rs b/zebra-network/src/protocol/internal/response.rs index 49545489..4ec617d9 100644 --- a/zebra-network/src/protocol/internal/response.rs +++ b/zebra-network/src/protocol/internal/response.rs @@ -1,8 +1,5 @@ use std::error::Error; -#[cfg(test)] -use proptest_derive::Arbitrary; - // XXX clean module layout of zebra_chain use zebra_chain::transaction::Transaction; @@ -10,17 +7,14 @@ use crate::meta_addr::MetaAddr; /// A response to a network request, represented in internal format. #[derive(Clone, Debug, Eq, PartialEq)] -#[cfg_attr(test, derive(Arbitrary))] pub enum Response { /// Generic success. Ok, /// Generic error. Error, /// A list of peers, used to respond to `GetPeers`. - #[cfg_attr(test, proptest(skip))] Peers(Vec), /// A list of transactions, such as in response to `GetMempool - #[cfg_attr(test, proptest(skip))] Transactions(Vec), } @@ -32,17 +26,3 @@ where Self::Error } } - -#[cfg(test)] -mod test { - use proptest::prelude::*; - - use super::Response; - - proptest! { - #[test] - fn proptest_response(res in any::()) { - println!("{:?}", res); - } - } -}