Skip to content

Commit 2cbfd37

Browse files
committed
Move all other internally tagged enum tests into a dedicated file
Moved all except flattened tests: - test_internally_tagged_enum_with_skipped_conflict => with_skipped_conflict - test_internally_tagged_enum_new_type_with_unit => newtype_variant_containing_unit - test_internally_tagged_unit_enum_with_unknown_fields => unit_variant_with_unknown_fields - test_expecting_message_internally_tagged_enum => expecting_message - flatten::enum_::internally_tagged::straightforward => containing_flatten
1 parent 0939214 commit 2cbfd37

File tree

2 files changed

+134
-134
lines changed

2 files changed

+134
-134
lines changed

test_suite/tests/test_annotations.rs

Lines changed: 0 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -1607,58 +1607,6 @@ fn test_collect_other() {
16071607
);
16081608
}
16091609

1610-
#[test]
1611-
fn test_internally_tagged_enum_with_skipped_conflict() {
1612-
#[derive(Serialize, Deserialize, PartialEq, Debug)]
1613-
#[serde(tag = "t")]
1614-
enum Data {
1615-
A,
1616-
#[serde(skip)]
1617-
#[allow(dead_code)]
1618-
B {
1619-
t: String,
1620-
},
1621-
C {
1622-
#[serde(default, skip)]
1623-
t: String,
1624-
},
1625-
}
1626-
1627-
let data = Data::C { t: String::new() };
1628-
1629-
assert_tokens(
1630-
&data,
1631-
&[
1632-
Token::Struct {
1633-
name: "Data",
1634-
len: 1,
1635-
},
1636-
Token::Str("t"),
1637-
Token::Str("C"),
1638-
Token::StructEnd,
1639-
],
1640-
);
1641-
}
1642-
1643-
#[test]
1644-
fn test_internally_tagged_enum_new_type_with_unit() {
1645-
#[derive(Serialize, Deserialize, PartialEq, Debug)]
1646-
#[serde(tag = "t")]
1647-
enum Data {
1648-
A(()),
1649-
}
1650-
1651-
assert_tokens(
1652-
&Data::A(()),
1653-
&[
1654-
Token::Map { len: Some(1) },
1655-
Token::Str("t"),
1656-
Token::Str("A"),
1657-
Token::MapEnd,
1658-
],
1659-
);
1660-
}
1661-
16621610
#[test]
16631611
fn test_adjacently_tagged_enum_bytes() {
16641612
#[derive(Serialize, Deserialize, PartialEq, Debug)]
@@ -1968,29 +1916,6 @@ fn test_transparent_tuple_struct() {
19681916
assert_tokens(&Transparent(false, 1, false, PhantomData), &[Token::U32(1)]);
19691917
}
19701918

1971-
#[test]
1972-
fn test_internally_tagged_unit_enum_with_unknown_fields() {
1973-
#[derive(Deserialize, PartialEq, Debug)]
1974-
#[serde(tag = "t")]
1975-
enum Data {
1976-
A,
1977-
}
1978-
1979-
let data = Data::A;
1980-
1981-
assert_de_tokens(
1982-
&data,
1983-
&[
1984-
Token::Map { len: None },
1985-
Token::Str("t"),
1986-
Token::Str("A"),
1987-
Token::Str("b"),
1988-
Token::I32(0),
1989-
Token::MapEnd,
1990-
],
1991-
);
1992-
}
1993-
19941919
#[test]
19951920
fn test_expecting_message() {
19961921
#[derive(Deserialize, PartialEq, Debug)]
@@ -2055,27 +1980,6 @@ fn test_expecting_message_externally_tagged_enum() {
20551980
);
20561981
}
20571982

2058-
#[test]
2059-
fn test_expecting_message_internally_tagged_enum() {
2060-
#[derive(Deserialize)]
2061-
#[serde(tag = "tag")]
2062-
#[serde(expecting = "something strange...")]
2063-
enum Enum {
2064-
InternallyTagged,
2065-
}
2066-
2067-
assert_de_tokens_error::<Enum>(
2068-
&[Token::Str("InternallyTagged")],
2069-
r#"invalid type: string "InternallyTagged", expected something strange..."#,
2070-
);
2071-
2072-
// Check that #[serde(expecting = "...")] doesn't affect variant identifier error message
2073-
assert_de_tokens_error::<Enum>(
2074-
&[Token::Map { len: None }, Token::Str("tag"), Token::Unit],
2075-
"invalid type: unit value, expected variant identifier",
2076-
);
2077-
}
2078-
20791983
#[test]
20801984
fn test_expecting_message_adjacently_tagged_enum() {
20811985
#[derive(Deserialize)]
@@ -3123,43 +3027,6 @@ mod flatten {
31233027
mod internally_tagged {
31243028
use super::*;
31253029

3126-
#[test]
3127-
fn straightforward() {
3128-
#[derive(Serialize, Deserialize, PartialEq, Debug)]
3129-
#[serde(tag = "t")]
3130-
enum Data {
3131-
A {
3132-
a: i32,
3133-
#[serde(flatten)]
3134-
flat: Flat,
3135-
},
3136-
}
3137-
3138-
#[derive(Serialize, Deserialize, PartialEq, Debug)]
3139-
struct Flat {
3140-
b: i32,
3141-
}
3142-
3143-
let data = Data::A {
3144-
a: 0,
3145-
flat: Flat { b: 0 },
3146-
};
3147-
3148-
assert_tokens(
3149-
&data,
3150-
&[
3151-
Token::Map { len: None },
3152-
Token::Str("t"),
3153-
Token::Str("A"),
3154-
Token::Str("a"),
3155-
Token::I32(0),
3156-
Token::Str("b"),
3157-
Token::I32(0),
3158-
Token::MapEnd,
3159-
],
3160-
);
3161-
}
3162-
31633030
#[test]
31643031
fn structs() {
31653032
#[derive(Debug, PartialEq, Serialize, Deserialize)]

test_suite/tests/test_enum_internally_tagged.rs

Lines changed: 134 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -668,4 +668,137 @@ fn newtype_variant_containing_unit_struct() {
668668
Token::SeqEnd,
669669
],
670670
);
671-
}
671+
}
672+
673+
#[test]
674+
fn with_skipped_conflict() {
675+
#[derive(Serialize, Deserialize, PartialEq, Debug)]
676+
#[serde(tag = "t")]
677+
enum Data {
678+
A,
679+
#[serde(skip)]
680+
#[allow(dead_code)]
681+
B {
682+
t: String,
683+
},
684+
C {
685+
#[serde(default, skip)]
686+
t: String,
687+
},
688+
}
689+
690+
let data = Data::C { t: String::new() };
691+
692+
assert_tokens(
693+
&data,
694+
&[
695+
Token::Struct {
696+
name: "Data",
697+
len: 1,
698+
},
699+
Token::Str("t"),
700+
Token::Str("C"),
701+
Token::StructEnd,
702+
],
703+
);
704+
}
705+
706+
#[test]
707+
fn containing_flatten() {
708+
#[derive(Serialize, Deserialize, PartialEq, Debug)]
709+
#[serde(tag = "t")]
710+
enum Data {
711+
A {
712+
a: i32,
713+
#[serde(flatten)]
714+
flat: Flat,
715+
},
716+
}
717+
718+
#[derive(Serialize, Deserialize, PartialEq, Debug)]
719+
struct Flat {
720+
b: i32,
721+
}
722+
723+
let data = Data::A {
724+
a: 0,
725+
flat: Flat { b: 0 },
726+
};
727+
728+
assert_tokens(
729+
&data,
730+
&[
731+
Token::Map { len: None },
732+
Token::Str("t"),
733+
Token::Str("A"),
734+
Token::Str("a"),
735+
Token::I32(0),
736+
Token::Str("b"),
737+
Token::I32(0),
738+
Token::MapEnd,
739+
],
740+
);
741+
}
742+
743+
#[test]
744+
fn newtype_variant_containing_unit() {
745+
#[derive(Serialize, Deserialize, PartialEq, Debug)]
746+
#[serde(tag = "t")]
747+
enum Data {
748+
A(()),
749+
}
750+
751+
assert_tokens(
752+
&Data::A(()),
753+
&[
754+
Token::Map { len: Some(1) },
755+
Token::Str("t"),
756+
Token::Str("A"),
757+
Token::MapEnd,
758+
],
759+
);
760+
}
761+
762+
#[test]
763+
fn unit_variant_with_unknown_fields() {
764+
#[derive(Deserialize, PartialEq, Debug)]
765+
#[serde(tag = "t")]
766+
enum Data {
767+
A,
768+
}
769+
770+
let data = Data::A;
771+
772+
assert_de_tokens(
773+
&data,
774+
&[
775+
Token::Map { len: None },
776+
Token::Str("t"),
777+
Token::Str("A"),
778+
Token::Str("b"),
779+
Token::I32(0),
780+
Token::MapEnd,
781+
],
782+
);
783+
}
784+
785+
#[test]
786+
fn expecting_message() {
787+
#[derive(Deserialize)]
788+
#[serde(tag = "tag")]
789+
#[serde(expecting = "something strange...")]
790+
enum Enum {
791+
InternallyTagged,
792+
}
793+
794+
assert_de_tokens_error::<Enum>(
795+
&[Token::Str("InternallyTagged")],
796+
r#"invalid type: string "InternallyTagged", expected something strange..."#,
797+
);
798+
799+
// Check that #[serde(expecting = "...")] doesn't affect variant identifier error message
800+
assert_de_tokens_error::<Enum>(
801+
&[Token::Map { len: None }, Token::Str("tag"), Token::Unit],
802+
"invalid type: unit value, expected variant identifier",
803+
);
804+
}

0 commit comments

Comments
 (0)