macro_rules! test_serialize {
($hex:expr, $msg:expr) => {
let mut serialized = Vec::new();
{
let mut writer = Writer::new(&mut serialized);
$msg.write_message(&mut writer).unwrap();
}
let serialized_hex = encode_hex(&serialized);
let hex = encode_hex(&decode_hex($hex));
assert_eq!(serialized_hex, hex);
};
}
macro_rules! test_deserialize {
($hex:expr, $msg:expr, $name:ident) => {
let bytes = decode_hex($hex);
{
let mut reader = BytesReader::from_bytes(&bytes);
let parsed = $name::from_reader(&mut reader, &bytes).unwrap();
assert!($msg.eq(&parsed));
}
};
}
macro_rules! test_serialize_deserialize_length_delimited {
($msg:expr, $name:ident) => {
let mut serialized = Vec::new();
{
let mut writer = Writer::new(&mut serialized);
writer.write_message($msg).unwrap();
}
let mut reader = BytesReader::from_bytes(&serialized);
let parsed: $name = reader.read_message(&serialized).unwrap();
assert!($msg.eq(&parsed));
};
}
macro_rules! test_serialize_deserialize {
($hex:expr, $msg:expr, $name:ident) => {
let expected_bytes = decode_hex($hex);
assert_eq!(expected_bytes.len(), $msg.get_size() as usize);
test_serialize!($hex, $msg);
test_deserialize!($hex, $msg, $name);
test_serialize_deserialize_length_delimited!($msg, $name);
};
}