Implement test suite seq macro without tt muncher
This commit is contained in:
parent
157dc44c51
commit
7e39623f72
@ -1,3 +1,6 @@
|
|||||||
|
use serde_test::Token;
|
||||||
|
use std::iter;
|
||||||
|
|
||||||
macro_rules! btreeset {
|
macro_rules! btreeset {
|
||||||
() => {
|
() => {
|
||||||
BTreeSet::new()
|
BTreeSet::new()
|
||||||
@ -54,23 +57,21 @@ macro_rules! hashmap {
|
|||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! seq_impl {
|
pub trait SingleTokenIntoIterator {
|
||||||
(.. $first:expr $(,)?) => {
|
fn into_iter(self) -> iter::Once<Token>;
|
||||||
$first.into_iter()
|
}
|
||||||
};
|
|
||||||
(.. $first:expr, $($elem:tt)*) => {
|
impl SingleTokenIntoIterator for Token {
|
||||||
$first.into_iter().chain(seq!($($elem)*))
|
fn into_iter(self) -> iter::Once<Token> {
|
||||||
};
|
iter::once(self)
|
||||||
($first:expr $(,)?) => {
|
}
|
||||||
Some($first).into_iter()
|
|
||||||
};
|
|
||||||
($first:expr, $($elem:tt)*) => {
|
|
||||||
Some($first).into_iter().chain(seq!($($elem)*))
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! seq {
|
macro_rules! seq {
|
||||||
($($tt: tt)*) => {
|
($($elem:expr),* $(,)?) => {{
|
||||||
seq_impl!($($tt)*).collect::<Vec<_>>()
|
use crate::macros::SingleTokenIntoIterator;
|
||||||
};
|
let mut vec = Vec::new();
|
||||||
|
$(<Vec<Token> as Extend<Token>>::extend(&mut vec, $elem.into_iter());)*
|
||||||
|
vec
|
||||||
|
}};
|
||||||
}
|
}
|
||||||
|
@ -1552,7 +1552,7 @@ fn test_net_ipv4addr_compact() {
|
|||||||
net::Ipv4Addr::from(*b"1234").compact(),
|
net::Ipv4Addr::from(*b"1234").compact(),
|
||||||
&seq![
|
&seq![
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234".iter().copied().map(Token::U8),
|
b"1234".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd
|
Token::TupleEnd
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -1564,7 +1564,7 @@ fn test_net_ipv6addr_compact() {
|
|||||||
net::Ipv6Addr::from(*b"1234567890123456").compact(),
|
net::Ipv6Addr::from(*b"1234567890123456").compact(),
|
||||||
&seq![
|
&seq![
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234567890123456".iter().copied().map(Token::U8),
|
b"1234567890123456".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd
|
Token::TupleEnd
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -1580,7 +1580,7 @@ fn test_net_ipaddr_compact() {
|
|||||||
variant: "V4"
|
variant: "V4"
|
||||||
},
|
},
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234".iter().copied().map(Token::U8),
|
b"1234".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd
|
Token::TupleEnd
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -1597,7 +1597,7 @@ fn test_net_socketaddr_compact() {
|
|||||||
},
|
},
|
||||||
Token::Tuple { len: 2 },
|
Token::Tuple { len: 2 },
|
||||||
Token::Tuple { len: 16 },
|
Token::Tuple { len: 16 },
|
||||||
..b"1234567890123456".iter().copied().map(Token::U8),
|
b"1234567890123456".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
Token::U16(1234),
|
Token::U16(1234),
|
||||||
Token::TupleEnd
|
Token::TupleEnd
|
||||||
@ -1612,7 +1612,7 @@ fn test_net_socketaddr_compact() {
|
|||||||
},
|
},
|
||||||
Token::Tuple { len: 2 },
|
Token::Tuple { len: 2 },
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234".iter().copied().map(Token::U8),
|
b"1234".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
Token::U16(1234),
|
Token::U16(1234),
|
||||||
Token::TupleEnd
|
Token::TupleEnd
|
||||||
@ -1623,7 +1623,7 @@ fn test_net_socketaddr_compact() {
|
|||||||
&seq![
|
&seq![
|
||||||
Token::Tuple { len: 2 },
|
Token::Tuple { len: 2 },
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234".iter().copied().map(Token::U8),
|
b"1234".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
Token::U16(1234),
|
Token::U16(1234),
|
||||||
Token::TupleEnd
|
Token::TupleEnd
|
||||||
@ -1634,7 +1634,7 @@ fn test_net_socketaddr_compact() {
|
|||||||
&seq![
|
&seq![
|
||||||
Token::Tuple { len: 2 },
|
Token::Tuple { len: 2 },
|
||||||
Token::Tuple { len: 16 },
|
Token::Tuple { len: 16 },
|
||||||
..b"1234567890123456".iter().copied().map(Token::U8),
|
b"1234567890123456".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
Token::U16(1234),
|
Token::U16(1234),
|
||||||
Token::TupleEnd
|
Token::TupleEnd
|
||||||
|
@ -16,7 +16,7 @@ fn ip_addr_roundtrip() {
|
|||||||
variant: "V4"
|
variant: "V4"
|
||||||
},
|
},
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234".iter().copied().map(Token::U8),
|
b"1234".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -33,7 +33,7 @@ fn socket_addr_roundtrip() {
|
|||||||
},
|
},
|
||||||
Token::Tuple { len: 2 },
|
Token::Tuple { len: 2 },
|
||||||
Token::Tuple { len: 16 },
|
Token::Tuple { len: 16 },
|
||||||
..b"1234567890123456".iter().copied().map(Token::U8),
|
b"1234567890123456".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
Token::U16(1234),
|
Token::U16(1234),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
|
@ -549,14 +549,14 @@ declare_tests! {
|
|||||||
test_net_ipv4addr_compact {
|
test_net_ipv4addr_compact {
|
||||||
net::Ipv4Addr::from(*b"1234") => &seq![
|
net::Ipv4Addr::from(*b"1234") => &seq![
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234".iter().copied().map(Token::U8),
|
b"1234".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
test_net_ipv6addr_compact {
|
test_net_ipv6addr_compact {
|
||||||
net::Ipv6Addr::from(*b"1234567890123456") => &seq![
|
net::Ipv6Addr::from(*b"1234567890123456") => &seq![
|
||||||
Token::Tuple { len: 16 },
|
Token::Tuple { len: 16 },
|
||||||
..b"1234567890123456".iter().copied().map(Token::U8),
|
b"1234567890123456".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@ -565,7 +565,7 @@ declare_tests! {
|
|||||||
Token::NewtypeVariant { name: "IpAddr", variant: "V4" },
|
Token::NewtypeVariant { name: "IpAddr", variant: "V4" },
|
||||||
|
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234".iter().copied().map(Token::U8),
|
b"1234".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
@ -576,7 +576,7 @@ declare_tests! {
|
|||||||
Token::Tuple { len: 2 },
|
Token::Tuple { len: 2 },
|
||||||
|
|
||||||
Token::Tuple { len: 16 },
|
Token::Tuple { len: 16 },
|
||||||
..b"1234567890123456".iter().copied().map(Token::U8),
|
b"1234567890123456".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
|
|
||||||
Token::U16(1234),
|
Token::U16(1234),
|
||||||
@ -586,7 +586,7 @@ declare_tests! {
|
|||||||
Token::Tuple { len: 2 },
|
Token::Tuple { len: 2 },
|
||||||
|
|
||||||
Token::Tuple { len: 4 },
|
Token::Tuple { len: 4 },
|
||||||
..b"1234".iter().copied().map(Token::U8),
|
b"1234".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
|
|
||||||
Token::U16(1234),
|
Token::U16(1234),
|
||||||
@ -596,7 +596,7 @@ declare_tests! {
|
|||||||
Token::Tuple { len: 2 },
|
Token::Tuple { len: 2 },
|
||||||
|
|
||||||
Token::Tuple { len: 16 },
|
Token::Tuple { len: 16 },
|
||||||
..b"1234567890123456".iter().copied().map(Token::U8),
|
b"1234567890123456".iter().copied().map(Token::U8),
|
||||||
Token::TupleEnd,
|
Token::TupleEnd,
|
||||||
|
|
||||||
Token::U16(1234),
|
Token::U16(1234),
|
||||||
|
Loading…
Reference in New Issue
Block a user