Properly deserialize non-readable IpAddr and SocketAddr

This commit is contained in:
Markus Westerlind
2017-09-14 16:54:47 +02:00
parent 85c05d301a
commit e36915300f
5 changed files with 173 additions and 29 deletions
+4 -4
View File
@@ -781,9 +781,9 @@ declare_non_human_readable_tests!{
}
test_non_human_readable_net_socketaddr {
net::SocketAddr::from((*b"1234567890123456", 1234)) => &seq![
Token::NewtypeVariant { name: "SocketAddr", variant: "V6" },
Token::Tuple { len: 2 },
Token::Enum { name: "IpAddr" },
Token::U32(1),
Token::Tuple { len: 16 },
seq b"1234567890123456".iter().map(|&b| Token::U8(b)),
@@ -793,9 +793,9 @@ declare_non_human_readable_tests!{
Token::TupleEnd
],
net::SocketAddr::from((*b"1234", 1234)) => &seq![
Token::NewtypeVariant { name: "SocketAddr", variant: "V4" },
Token::Tuple { len: 2 },
Token::Enum { name: "IpAddr" },
Token::U32(0),
Token::Tuple { len: 4 },
seq b"1234".iter().map(|&b| Token::U8(b)),
+45
View File
@@ -0,0 +1,45 @@
extern crate serde_test;
use self::serde_test::{Token, assert_tokens_readable};
use std::net;
#[macro_use]
#[allow(unused_macros)]
mod macros;
#[test]
fn ip_addr_roundtrip() {
assert_tokens_readable(
&net::IpAddr::from(*b"1234"),
&seq![
Token::NewtypeVariant { name: "IpAddr", variant: "V4" },
Token::Tuple { len: 4 },
seq b"1234".iter().map(|&b| Token::U8(b)),
Token::TupleEnd,
],
false,
);
}
#[test]
fn socked_addr_roundtrip() {
assert_tokens_readable(
&net::SocketAddr::from((*b"1234567890123456", 1234)),
&seq![
Token::NewtypeVariant { name: "SocketAddr", variant: "V6" },
Token::Tuple { len: 2 },
Token::Tuple { len: 16 },
seq b"1234567890123456".iter().map(|&b| Token::U8(b)),
Token::TupleEnd,
Token::U16(1234),
Token::TupleEnd,
],
false,
);
}