Tuple: add tests for deserialization from sequence

(review this commit with "ignore whitespace changes" option on)
This commit is contained in:
Mingun
2024-08-16 22:18:20 +05:00
parent a94d8750fb
commit c383e4f953
+71 -45
View File
@@ -437,53 +437,79 @@ fn newtype_with_newtype() {
); );
} }
#[test] mod tuple {
fn tuple() { use super::*;
let value = AdjacentlyTagged::Tuple::<u8>(1, 1);
// tuple with tag first #[test]
assert_tokens( fn map() {
&value, let value = AdjacentlyTagged::Tuple::<u8>(1, 1);
&[
Token::Struct {
name: "AdjacentlyTagged",
len: 2,
},
Token::Str("t"),
Token::UnitVariant {
name: "AdjacentlyTagged",
variant: "Tuple",
},
Token::Str("c"),
Token::Tuple { len: 2 },
Token::U8(1),
Token::U8(1),
Token::TupleEnd,
Token::StructEnd,
],
);
// tuple with content first // Map: tag + content
assert_de_tokens( assert_tokens(
&value, &value,
&[ &[
Token::Struct { Token::Struct {
name: "AdjacentlyTagged", name: "AdjacentlyTagged",
len: 2, len: 2,
}, },
Token::Str("c"), Token::Str("t"),
Token::Tuple { len: 2 }, Token::UnitVariant {
Token::U8(1), name: "AdjacentlyTagged",
Token::U8(1), variant: "Tuple",
Token::TupleEnd, },
Token::Str("t"), Token::Str("c"),
Token::UnitVariant { Token::Tuple { len: 2 },
name: "AdjacentlyTagged", Token::U8(1),
variant: "Tuple", Token::U8(1),
}, Token::TupleEnd,
Token::StructEnd, Token::StructEnd,
], ],
); );
// Map: content + tag
assert_de_tokens(
&value,
&[
Token::Struct {
name: "AdjacentlyTagged",
len: 2,
},
Token::Str("c"),
Token::Tuple { len: 2 },
Token::U8(1),
Token::U8(1),
Token::TupleEnd,
Token::Str("t"),
Token::UnitVariant {
name: "AdjacentlyTagged",
variant: "Tuple",
},
Token::StructEnd,
],
);
}
#[test]
fn seq() {
let value = AdjacentlyTagged::Tuple::<u8>(1, 1);
// Seq: tag + content
assert_de_tokens(
&value,
&[
Token::Seq { len: Some(2) },
Token::UnitVariant {
name: "AdjacentlyTagged",
variant: "Tuple",
},
Token::Tuple { len: 2 },
Token::U8(1),
Token::U8(1),
Token::TupleEnd,
Token::SeqEnd,
],
);
}
} }
#[test] #[test]