Skip to content

Commit

Permalink
Add tests for using visit_seq for deserialzation struct variants of a…
Browse files Browse the repository at this point in the history
…djacently tagged and untagged enums

serde-rs#2465 maked such deserialization possible
  • Loading branch information
Mingun committed Jul 23, 2024
1 parent 5f7d386 commit 61121b9
Showing 1 changed file with 142 additions and 0 deletions.
142 changes: 142 additions & 0 deletions test_suite/tests/test_skip.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1639,6 +1639,34 @@ mod enum_ {
Token::SeqEnd,
],
);

// Map: Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Struct {
name: "Enum",
len: 2,
},
Token::Str("tag"),
Token::Str("Struct0"),
Token::Str("content"),
Token::Seq { len: None },
Token::SeqEnd,
Token::StructEnd,
],
);
// Seq: Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Seq { len: None },
Token::Str("Struct0"), // tag
Token::Seq { len: None }, // content
Token::SeqEnd,
Token::SeqEnd,
],
);
}

#[test]
Expand Down Expand Up @@ -1683,6 +1711,36 @@ mod enum_ {
Token::SeqEnd,
],
);

// Map: Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Struct {
name: "Enum",
len: 2,
},
Token::Str("tag"),
Token::Str("Struct1"),
Token::Str("content"),
Token::Seq { len: None },
Token::U32(42), // a
Token::SeqEnd,
Token::StructEnd,
],
);
// Seq: Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Seq { len: None },
Token::Str("Struct1"), // tag
Token::Seq { len: None }, // content
Token::U32(42), // a
Token::SeqEnd,
Token::SeqEnd,
],
);
}

#[test]
Expand Down Expand Up @@ -1726,6 +1784,34 @@ mod enum_ {
Token::SeqEnd,
],
);

// Map: Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Struct {
name: "Enum",
len: 2,
},
Token::Str("tag"),
Token::Str("Struct2as0"),
Token::Str("content"),
Token::Seq { len: None },
Token::SeqEnd,
Token::StructEnd,
],
);
// Seq: Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Seq { len: None },
Token::Str("Struct2as0"), // tag
Token::Seq { len: None }, // content
Token::SeqEnd,
Token::SeqEnd,
],
);
}

#[test]
Expand Down Expand Up @@ -1773,6 +1859,36 @@ mod enum_ {
Token::SeqEnd,
],
);

// Map: Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Struct {
name: "Enum",
len: 2,
},
Token::Str("tag"),
Token::Str("Struct2as1"),
Token::Str("content"),
Token::Seq { len: None },
Token::U32(20), // b
Token::SeqEnd,
Token::StructEnd,
],
);
// Seq: Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Seq { len: None },
Token::Str("Struct2as1"), // tag
Token::Seq { len: None }, // content
Token::U32(20), // b
Token::SeqEnd,
Token::SeqEnd,
],
);
}
}
}
Expand Down Expand Up @@ -1959,6 +2075,9 @@ mod enum_ {
Token::StructEnd,
],
);

// Uses visit_seq
assert_de_tokens(&value, &[Token::Seq { len: None }, Token::SeqEnd]);
}

#[test]
Expand All @@ -1978,6 +2097,16 @@ mod enum_ {
Token::StructEnd,
],
);

// Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Seq { len: None },
Token::U32(42), // a
Token::SeqEnd,
],
);
}

#[test]
Expand All @@ -1998,6 +2127,9 @@ mod enum_ {
Token::StructEnd,
],
);

// Uses visit_seq
assert_de_tokens(&value, &[Token::Seq { len: None }, Token::SeqEnd]);
}

#[test]
Expand All @@ -2020,6 +2152,16 @@ mod enum_ {
Token::StructEnd,
],
);

// Uses visit_seq
assert_de_tokens(
&value,
&[
Token::Seq { len: None },
Token::U32(20), // a
Token::SeqEnd,
],
);
}
}
}
Expand Down

0 comments on commit 61121b9

Please sign in to comment.