Skip to content

Commit 9f72ce6

Browse files
committed
Struct: add tests for deserialization from sequence
(review this commit with "ignore whitespace changes" option on)
1 parent c383e4f commit 9f72ce6

File tree

1 file changed

+80
-51
lines changed

1 file changed

+80
-51
lines changed

test_suite/tests/test_enum_adjacently_tagged.rs

Lines changed: 80 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -512,59 +512,88 @@ mod tuple {
512512
}
513513
}
514514

515-
#[test]
516-
fn struct_() {
517-
let value = AdjacentlyTagged::Struct::<u8> { f: 1 };
515+
mod struct_ {
516+
use super::*;
518517

519-
// struct with tag first
520-
assert_tokens(
521-
&value,
522-
&[
523-
Token::Struct {
524-
name: "AdjacentlyTagged",
525-
len: 2,
526-
},
527-
Token::Str("t"),
528-
Token::UnitVariant {
529-
name: "AdjacentlyTagged",
530-
variant: "Struct",
531-
},
532-
Token::Str("c"),
533-
Token::Struct {
534-
name: "Struct",
535-
len: 1,
536-
},
537-
Token::Str("f"),
538-
Token::U8(1),
539-
Token::StructEnd,
540-
Token::StructEnd,
541-
],
542-
);
518+
#[test]
519+
fn map() {
520+
let value = AdjacentlyTagged::Struct::<u8> { f: 1 };
543521

544-
// struct with content first
545-
assert_de_tokens(
546-
&value,
547-
&[
548-
Token::Struct {
549-
name: "AdjacentlyTagged",
550-
len: 2,
551-
},
552-
Token::Str("c"),
553-
Token::Struct {
554-
name: "Struct",
555-
len: 1,
556-
},
557-
Token::Str("f"),
558-
Token::U8(1),
559-
Token::StructEnd,
560-
Token::Str("t"),
561-
Token::UnitVariant {
562-
name: "AdjacentlyTagged",
563-
variant: "Struct",
564-
},
565-
Token::StructEnd,
566-
],
567-
);
522+
// Map: tag + content
523+
assert_tokens(
524+
&value,
525+
&[
526+
Token::Struct {
527+
name: "AdjacentlyTagged",
528+
len: 2,
529+
},
530+
Token::Str("t"),
531+
Token::UnitVariant {
532+
name: "AdjacentlyTagged",
533+
variant: "Struct",
534+
},
535+
Token::Str("c"),
536+
Token::Struct {
537+
name: "Struct",
538+
len: 1,
539+
},
540+
Token::Str("f"),
541+
Token::U8(1),
542+
Token::StructEnd,
543+
Token::StructEnd,
544+
],
545+
);
546+
547+
// Map: content + tag
548+
assert_de_tokens(
549+
&value,
550+
&[
551+
Token::Struct {
552+
name: "AdjacentlyTagged",
553+
len: 2,
554+
},
555+
Token::Str("c"),
556+
Token::Struct {
557+
name: "Struct",
558+
len: 1,
559+
},
560+
Token::Str("f"),
561+
Token::U8(1),
562+
Token::StructEnd,
563+
Token::Str("t"),
564+
Token::UnitVariant {
565+
name: "AdjacentlyTagged",
566+
variant: "Struct",
567+
},
568+
Token::StructEnd,
569+
],
570+
);
571+
}
572+
573+
#[test]
574+
fn seq() {
575+
let value = AdjacentlyTagged::Struct::<u8> { f: 1 };
576+
577+
// Seq: tag + content
578+
assert_de_tokens(
579+
&value,
580+
&[
581+
Token::Seq { len: Some(2) },
582+
Token::UnitVariant {
583+
name: "AdjacentlyTagged",
584+
variant: "Struct",
585+
},
586+
Token::Struct {
587+
name: "Struct",
588+
len: 1,
589+
},
590+
Token::Str("f"),
591+
Token::U8(1),
592+
Token::StructEnd,
593+
Token::SeqEnd,
594+
],
595+
);
596+
}
568597
}
569598

570599
#[test]

0 commit comments

Comments
 (0)