1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#![warn(missing_docs)]
extern crate rand;
pub use action::Action;
pub use event::Event;
pub use node::Node;
pub use node_options::NodeOptions;
pub use ttl::TimeToLive;
mod action;
mod event;
mod node;
mod node_options;
mod ttl;
pub mod message;
#[cfg(test)]
mod test {
use rand;
use super::message::ProtocolMessage;
use super::*;
macro_rules! assert_some {
($e:expr) => {
if let Some(x) = $e {
x
} else {
panic!("{:?} must be `Some(_)`", stringify!($e));
}
};
}
#[test]
fn single_join_works() {
let mut node = Node::new("foo", rand::thread_rng());
node.join("bar");
let action = assert_some!(node.poll_action());
assert_eq!(action, Action::send("bar", ProtocolMessage::join(&"foo")));
assert!(node.poll_action().is_none());
}
}