Convert test_internally_tagged_enum into module

(review this commit with "ignore whitespace changes" option on)
This commit is contained in:
Mingun 2023-04-22 20:36:41 +05:00 committed by Mingun
parent af376c22c3
commit aa0654332d

View File

@ -679,8 +679,9 @@ fn test_untagged_enum() {
); );
} }
#[test] mod internally_tagged_enum {
fn test_internally_tagged_enum() { use super::*;
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
struct Newtype(BTreeMap<String, String>); struct Newtype(BTreeMap<String, String>);
@ -699,119 +700,137 @@ fn test_internally_tagged_enum() {
E(Struct), E(Struct),
} }
assert_tokens( #[test]
&InternallyTagged::A { a: 1 }, fn struct_() {
&[ assert_tokens(
Token::Struct { &InternallyTagged::A { a: 1 },
name: "InternallyTagged", &[
len: 2, Token::Struct {
}, name: "InternallyTagged",
Token::Str("type"), len: 2,
Token::Str("A"), },
Token::Str("a"), Token::Str("type"),
Token::U8(1), Token::Str("A"),
Token::StructEnd, Token::Str("a"),
], Token::U8(1),
); Token::StructEnd,
],
);
assert_de_tokens( assert_de_tokens(
&InternallyTagged::A { a: 1 }, &InternallyTagged::A { a: 1 },
&[ &[
Token::Seq { len: Some(2) }, Token::Seq { len: Some(2) },
Token::Str("A"), Token::Str("A"),
Token::U8(1), Token::U8(1),
Token::SeqEnd, Token::SeqEnd,
], ],
); );
}
assert_tokens( #[test]
&InternallyTagged::B, fn unit() {
&[ assert_tokens(
Token::Struct { &InternallyTagged::B,
name: "InternallyTagged", &[
len: 1, Token::Struct {
}, name: "InternallyTagged",
Token::Str("type"), len: 1,
Token::Str("B"), },
Token::StructEnd, Token::Str("type"),
], Token::Str("B"),
); Token::StructEnd,
],
);
assert_de_tokens( assert_de_tokens(
&InternallyTagged::B, &InternallyTagged::B,
&[Token::Seq { len: Some(1) }, Token::Str("B"), Token::SeqEnd], &[Token::Seq { len: Some(1) }, Token::Str("B"), Token::SeqEnd],
); );
}
assert_tokens( #[test]
&InternallyTagged::C(BTreeMap::new()), fn newtype_map() {
&[ assert_tokens(
Token::Map { len: Some(1) }, &InternallyTagged::C(BTreeMap::new()),
Token::Str("type"), &[
Token::Str("C"), Token::Map { len: Some(1) },
Token::MapEnd, Token::Str("type"),
], Token::Str("C"),
); Token::MapEnd,
],
);
assert_de_tokens_error::<InternallyTagged>( assert_de_tokens_error::<InternallyTagged>(
&[ &[
Token::Seq { len: Some(2) }, Token::Seq { len: Some(2) },
Token::Str("C"), Token::Str("C"),
Token::Map { len: Some(0) }, Token::Map { len: Some(0) },
Token::MapEnd, Token::MapEnd,
Token::SeqEnd, Token::SeqEnd,
], ],
"invalid type: sequence, expected a map", "invalid type: sequence, expected a map",
); );
}
assert_tokens( #[test]
&InternallyTagged::D(Newtype(BTreeMap::new())), fn newtype_newtype() {
&[ assert_tokens(
Token::Map { len: Some(1) }, &InternallyTagged::D(Newtype(BTreeMap::new())),
Token::Str("type"), &[
Token::Str("D"), Token::Map { len: Some(1) },
Token::MapEnd, Token::Str("type"),
], Token::Str("D"),
); Token::MapEnd,
],
);
}
assert_tokens( #[test]
&InternallyTagged::E(Struct { f: 6 }), fn newtype_struct() {
&[ assert_tokens(
Token::Struct { &InternallyTagged::E(Struct { f: 6 }),
name: "Struct", &[
len: 2, Token::Struct {
}, name: "Struct",
Token::Str("type"), len: 2,
Token::Str("E"), },
Token::Str("f"), Token::Str("type"),
Token::U8(6), Token::Str("E"),
Token::StructEnd, Token::Str("f"),
], Token::U8(6),
); Token::StructEnd,
],
);
assert_de_tokens( assert_de_tokens(
&InternallyTagged::E(Struct { f: 6 }), &InternallyTagged::E(Struct { f: 6 }),
&[ &[
Token::Seq { len: Some(2) }, Token::Seq { len: Some(2) },
Token::Str("E"), Token::Str("E"),
Token::U8(6), Token::U8(6),
Token::SeqEnd, Token::SeqEnd,
], ],
); );
}
assert_de_tokens_error::<InternallyTagged>( #[test]
&[Token::Map { len: Some(0) }, Token::MapEnd], fn wrong_tag() {
"missing field `type`", assert_de_tokens_error::<InternallyTagged>(
); &[Token::Map { len: Some(0) }, Token::MapEnd],
"missing field `type`",
);
assert_de_tokens_error::<InternallyTagged>( assert_de_tokens_error::<InternallyTagged>(
&[ &[
Token::Map { len: Some(1) }, Token::Map { len: Some(1) },
Token::Str("type"), Token::Str("type"),
Token::Str("Z"), Token::Str("Z"),
Token::MapEnd, Token::MapEnd,
], ],
"unknown variant `Z`, expected one of `A`, `B`, `C`, `D`, `E`", "unknown variant `Z`, expected one of `A`, `B`, `C`, `D`, `E`",
); );
}
} }
#[test] #[test]