Skip to content

Commit a0397d6

Browse files
committed
Improve serde tests for ignored fields
1 parent ad5e047 commit a0397d6

File tree

2 files changed

+102
-45
lines changed

2 files changed

+102
-45
lines changed

crates/bevy_reflect/src/serde/de.rs

Lines changed: 51 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,12 +1071,14 @@ mod tests {
10711071
struct_value: SomeStruct,
10721072
tuple_struct_value: SomeTupleStruct,
10731073
unit_struct: SomeUnitStruct,
1074-
ignored_struct: SomeIgnoredStruct,
1075-
ignored_enum: SomeIgnoredEnum,
10761074
unit_enum: SomeEnum,
10771075
newtype_enum: SomeEnum,
10781076
tuple_enum: SomeEnum,
10791077
struct_enum: SomeEnum,
1078+
ignored_struct: SomeIgnoredStruct,
1079+
ignored_tuple_struct: SomeIgnoredTupleStruct,
1080+
ignored_struct_variant: SomeIgnoredEnum,
1081+
ignored_tuple_variant: SomeIgnoredEnum,
10801082
custom_deserialize: CustomDeserialize,
10811083
}
10821084

@@ -1092,7 +1094,13 @@ mod tests {
10921094
struct SomeUnitStruct;
10931095

10941096
#[derive(Reflect, FromReflect, Debug, PartialEq)]
1095-
struct SomeIgnoredStruct(#[reflect(ignore)] i32);
1097+
struct SomeIgnoredStruct {
1098+
#[reflect(ignore)]
1099+
ignored: i32,
1100+
}
1101+
1102+
#[derive(Reflect, FromReflect, Debug, PartialEq)]
1103+
struct SomeIgnoredTupleStruct(#[reflect(ignore)] i32);
10961104

10971105
#[derive(Reflect, FromReflect, Debug, PartialEq, Deserialize)]
10981106
struct SomeDeserializableStruct {
@@ -1120,7 +1128,11 @@ mod tests {
11201128

11211129
#[derive(Reflect, FromReflect, Debug, PartialEq)]
11221130
enum SomeIgnoredEnum {
1123-
Ignored(#[reflect(ignore)] f32, #[reflect(ignore)] f32),
1131+
Tuple(#[reflect(ignore)] f32, #[reflect(ignore)] f32),
1132+
Struct {
1133+
#[reflect(ignore)]
1134+
foo: String,
1135+
},
11241136
}
11251137

11261138
fn get_registry() -> TypeRegistry {
@@ -1130,6 +1142,7 @@ mod tests {
11301142
registry.register::<SomeTupleStruct>();
11311143
registry.register::<SomeUnitStruct>();
11321144
registry.register::<SomeIgnoredStruct>();
1145+
registry.register::<SomeIgnoredTupleStruct>();
11331146
registry.register::<CustomDeserialize>();
11341147
registry.register::<SomeDeserializableStruct>();
11351148
registry.register::<SomeEnum>();
@@ -1167,14 +1180,18 @@ mod tests {
11671180
struct_value: SomeStruct { foo: 999999999 },
11681181
tuple_struct_value: SomeTupleStruct(String::from("Tuple Struct")),
11691182
unit_struct: SomeUnitStruct,
1170-
ignored_struct: SomeIgnoredStruct(0),
1171-
ignored_enum: SomeIgnoredEnum::Ignored(0.0, 0.0),
11721183
unit_enum: SomeEnum::Unit,
11731184
newtype_enum: SomeEnum::NewType(123),
11741185
tuple_enum: SomeEnum::Tuple(1.23, 3.21),
11751186
struct_enum: SomeEnum::Struct {
11761187
foo: String::from("Struct variant value"),
11771188
},
1189+
ignored_struct: SomeIgnoredStruct { ignored: 0 },
1190+
ignored_tuple_struct: SomeIgnoredTupleStruct(0),
1191+
ignored_struct_variant: SomeIgnoredEnum::Struct {
1192+
foo: String::default(),
1193+
},
1194+
ignored_tuple_variant: SomeIgnoredEnum::Tuple(0.0, 0.0),
11781195
custom_deserialize: CustomDeserialize {
11791196
value: 100,
11801197
inner_struct: SomeDeserializableStruct { foo: 101 },
@@ -1205,14 +1222,16 @@ mod tests {
12051222
),
12061223
tuple_struct_value: ("Tuple Struct"),
12071224
unit_struct: (),
1208-
ignored_struct: (),
1209-
ignored_enum: Ignored(),
12101225
unit_enum: Unit,
12111226
newtype_enum: NewType(123),
12121227
tuple_enum: Tuple(1.23, 3.21),
12131228
struct_enum: Struct(
12141229
foo: "Struct variant value",
12151230
),
1231+
ignored_struct: (),
1232+
ignored_tuple_struct: (),
1233+
ignored_struct_variant: Struct(),
1234+
ignored_tuple_variant: Tuple(),
12161235
custom_deserialize: (
12171236
value: 100,
12181237
renamed: (
@@ -1420,14 +1439,18 @@ mod tests {
14201439
struct_value: SomeStruct { foo: 999999999 },
14211440
tuple_struct_value: SomeTupleStruct(String::from("Tuple Struct")),
14221441
unit_struct: SomeUnitStruct,
1423-
ignored_struct: SomeIgnoredStruct(0),
1424-
ignored_enum: SomeIgnoredEnum::Ignored(0.0, 0.0),
14251442
unit_enum: SomeEnum::Unit,
14261443
newtype_enum: SomeEnum::NewType(123),
14271444
tuple_enum: SomeEnum::Tuple(1.23, 3.21),
14281445
struct_enum: SomeEnum::Struct {
14291446
foo: String::from("Struct variant value"),
14301447
},
1448+
ignored_struct: SomeIgnoredStruct { ignored: 0 },
1449+
ignored_tuple_struct: SomeIgnoredTupleStruct(0),
1450+
ignored_struct_variant: SomeIgnoredEnum::Struct {
1451+
foo: String::default(),
1452+
},
1453+
ignored_tuple_variant: SomeIgnoredEnum::Tuple(0.0, 0.0),
14311454
custom_deserialize: CustomDeserialize {
14321455
value: 100,
14331456
inner_struct: SomeDeserializableStruct { foo: 101 },
@@ -1445,10 +1468,11 @@ mod tests {
14451468
255, 255, 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 254, 255, 255, 255, 255,
14461469
255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 32, 0,
14471470
0, 0, 0, 0, 0, 0, 255, 201, 154, 59, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 84, 117, 112,
1448-
108, 101, 32, 83, 116, 114, 117, 99, 116, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 123, 0,
1449-
0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 164, 112, 157, 63, 164, 112, 77, 64, 3, 0, 0, 0, 20, 0,
1450-
0, 0, 0, 0, 0, 0, 83, 116, 114, 117, 99, 116, 32, 118, 97, 114, 105, 97, 110, 116, 32,
1451-
118, 97, 108, 117, 101, 100, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0,
1471+
108, 101, 32, 83, 116, 114, 117, 99, 116, 0, 0, 0, 0, 1, 0, 0, 0, 123, 0, 0, 0, 0, 0,
1472+
0, 0, 2, 0, 0, 0, 164, 112, 157, 63, 164, 112, 77, 64, 3, 0, 0, 0, 20, 0, 0, 0, 0, 0,
1473+
0, 0, 83, 116, 114, 117, 99, 116, 32, 118, 97, 114, 105, 97, 110, 116, 32, 118, 97,
1474+
108, 117, 101, 1, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0,
1475+
0,
14521476
];
14531477

14541478
let deserializer = UntypedReflectDeserializer::new(&registry);
@@ -1478,14 +1502,18 @@ mod tests {
14781502
struct_value: SomeStruct { foo: 999999999 },
14791503
tuple_struct_value: SomeTupleStruct(String::from("Tuple Struct")),
14801504
unit_struct: SomeUnitStruct,
1481-
ignored_struct: SomeIgnoredStruct(0),
1482-
ignored_enum: SomeIgnoredEnum::Ignored(0.0, 0.0),
14831505
unit_enum: SomeEnum::Unit,
14841506
newtype_enum: SomeEnum::NewType(123),
14851507
tuple_enum: SomeEnum::Tuple(1.23, 3.21),
14861508
struct_enum: SomeEnum::Struct {
14871509
foo: String::from("Struct variant value"),
14881510
},
1511+
ignored_struct: SomeIgnoredStruct { ignored: 0 },
1512+
ignored_tuple_struct: SomeIgnoredTupleStruct(0),
1513+
ignored_struct_variant: SomeIgnoredEnum::Struct {
1514+
foo: String::default(),
1515+
},
1516+
ignored_tuple_variant: SomeIgnoredEnum::Tuple(0.0, 0.0),
14891517
custom_deserialize: CustomDeserialize {
14901518
value: 100,
14911519
inner_struct: SomeDeserializableStruct { foo: 101 },
@@ -1497,14 +1525,15 @@ mod tests {
14971525
let input = vec![
14981526
129, 217, 40, 98, 101, 118, 121, 95, 114, 101, 102, 108, 101, 99, 116, 58, 58, 115,
14991527
101, 114, 100, 101, 58, 58, 100, 101, 58, 58, 116, 101, 115, 116, 115, 58, 58, 77, 121,
1500-
83, 116, 114, 117, 99, 116, 220, 0, 17, 123, 172, 72, 101, 108, 108, 111, 32, 119, 111,
1528+
83, 116, 114, 117, 99, 116, 220, 0, 19, 123, 172, 72, 101, 108, 108, 111, 32, 119, 111,
15011529
114, 108, 100, 33, 145, 123, 146, 202, 64, 73, 15, 219, 205, 5, 57, 149, 254, 255, 0,
15021530
1, 2, 149, 254, 255, 0, 1, 2, 129, 64, 32, 145, 206, 59, 154, 201, 255, 145, 172, 84,
1503-
117, 112, 108, 101, 32, 83, 116, 114, 117, 99, 116, 144, 144, 129, 167, 73, 103, 110,
1504-
111, 114, 101, 100, 144, 164, 85, 110, 105, 116, 129, 167, 78, 101, 119, 84, 121, 112,
1505-
101, 123, 129, 165, 84, 117, 112, 108, 101, 146, 202, 63, 157, 112, 164, 202, 64, 77,
1506-
112, 164, 129, 166, 83, 116, 114, 117, 99, 116, 145, 180, 83, 116, 114, 117, 99, 116,
1507-
32, 118, 97, 114, 105, 97, 110, 116, 32, 118, 97, 108, 117, 101, 146, 100, 145, 101,
1531+
117, 112, 108, 101, 32, 83, 116, 114, 117, 99, 116, 144, 164, 85, 110, 105, 116, 129,
1532+
167, 78, 101, 119, 84, 121, 112, 101, 123, 129, 165, 84, 117, 112, 108, 101, 146, 202,
1533+
63, 157, 112, 164, 202, 64, 77, 112, 164, 129, 166, 83, 116, 114, 117, 99, 116, 145,
1534+
180, 83, 116, 114, 117, 99, 116, 32, 118, 97, 114, 105, 97, 110, 116, 32, 118, 97, 108,
1535+
117, 101, 144, 144, 129, 166, 83, 116, 114, 117, 99, 116, 144, 129, 165, 84, 117, 112,
1536+
108, 101, 144, 146, 100, 145, 101,
15081537
];
15091538

15101539
let deserializer = UntypedReflectDeserializer::new(&registry);

crates/bevy_reflect/src/serde/ser.rs

Lines changed: 51 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -489,12 +489,14 @@ mod tests {
489489
struct_value: SomeStruct,
490490
tuple_struct_value: SomeTupleStruct,
491491
unit_struct: SomeUnitStruct,
492-
ignored_struct: SomeIgnoredStruct,
493-
ignored_enum: SomeIgnoredEnum,
494492
unit_enum: SomeEnum,
495493
newtype_enum: SomeEnum,
496494
tuple_enum: SomeEnum,
497495
struct_enum: SomeEnum,
496+
ignored_struct: SomeIgnoredStruct,
497+
ignored_tuple_struct: SomeIgnoredTupleStruct,
498+
ignored_struct_variant: SomeIgnoredEnum,
499+
ignored_tuple_variant: SomeIgnoredEnum,
498500
custom_serialize: CustomSerialize,
499501
}
500502

@@ -510,7 +512,13 @@ mod tests {
510512
struct SomeUnitStruct;
511513

512514
#[derive(Reflect, FromReflect, Debug, PartialEq)]
513-
struct SomeIgnoredStruct(#[reflect(ignore)] i32);
515+
struct SomeIgnoredStruct {
516+
#[reflect(ignore)]
517+
ignored: i32,
518+
}
519+
520+
#[derive(Reflect, FromReflect, Debug, PartialEq)]
521+
struct SomeIgnoredTupleStruct(#[reflect(ignore)] i32);
514522

515523
#[derive(Reflect, Debug, PartialEq)]
516524
enum SomeEnum {
@@ -522,7 +530,11 @@ mod tests {
522530

523531
#[derive(Reflect, FromReflect, Debug, PartialEq)]
524532
enum SomeIgnoredEnum {
525-
Ignored(#[reflect(ignore)] f32, #[reflect(ignore)] f32),
533+
Tuple(#[reflect(ignore)] f32, #[reflect(ignore)] f32),
534+
Struct {
535+
#[reflect(ignore)]
536+
foo: String,
537+
},
526538
}
527539

528540
#[derive(Reflect, Debug, PartialEq, Serialize)]
@@ -548,6 +560,7 @@ mod tests {
548560
registry.register::<SomeTupleStruct>();
549561
registry.register::<SomeUnitStruct>();
550562
registry.register::<SomeIgnoredStruct>();
563+
registry.register::<SomeIgnoredTupleStruct>();
551564
registry.register::<SomeIgnoredEnum>();
552565
registry.register::<CustomSerialize>();
553566
registry.register::<SomeEnum>();
@@ -575,14 +588,18 @@ mod tests {
575588
struct_value: SomeStruct { foo: 999999999 },
576589
tuple_struct_value: SomeTupleStruct(String::from("Tuple Struct")),
577590
unit_struct: SomeUnitStruct,
578-
ignored_struct: SomeIgnoredStruct(123),
579-
ignored_enum: SomeIgnoredEnum::Ignored(1.23, 3.45),
580591
unit_enum: SomeEnum::Unit,
581592
newtype_enum: SomeEnum::NewType(123),
582593
tuple_enum: SomeEnum::Tuple(1.23, 3.21),
583594
struct_enum: SomeEnum::Struct {
584595
foo: String::from("Struct variant value"),
585596
},
597+
ignored_struct: SomeIgnoredStruct { ignored: 123 },
598+
ignored_tuple_struct: SomeIgnoredTupleStruct(123),
599+
ignored_struct_variant: SomeIgnoredEnum::Struct {
600+
foo: String::from("Struct Variant"),
601+
},
602+
ignored_tuple_variant: SomeIgnoredEnum::Tuple(1.23, 3.45),
586603
custom_serialize: CustomSerialize {
587604
value: 100,
588605
inner_struct: SomeSerializableStruct { foo: 101 },
@@ -621,14 +638,16 @@ mod tests {
621638
),
622639
tuple_struct_value: ("Tuple Struct"),
623640
unit_struct: (),
624-
ignored_struct: (),
625-
ignored_enum: Ignored(),
626641
unit_enum: Unit,
627642
newtype_enum: NewType(123),
628643
tuple_enum: Tuple(1.23, 3.21),
629644
struct_enum: Struct(
630645
foo: "Struct variant value",
631646
),
647+
ignored_struct: (),
648+
ignored_tuple_struct: (),
649+
ignored_struct_variant: Struct(),
650+
ignored_tuple_variant: Tuple(),
632651
custom_serialize: (
633652
value: 100,
634653
renamed: (
@@ -769,14 +788,18 @@ mod tests {
769788
struct_value: SomeStruct { foo: 999999999 },
770789
tuple_struct_value: SomeTupleStruct(String::from("Tuple Struct")),
771790
unit_struct: SomeUnitStruct,
772-
ignored_struct: SomeIgnoredStruct(123),
773-
ignored_enum: SomeIgnoredEnum::Ignored(1.23, 3.45),
774791
unit_enum: SomeEnum::Unit,
775792
newtype_enum: SomeEnum::NewType(123),
776793
tuple_enum: SomeEnum::Tuple(1.23, 3.21),
777794
struct_enum: SomeEnum::Struct {
778795
foo: String::from("Struct variant value"),
779796
},
797+
ignored_struct: SomeIgnoredStruct { ignored: 123 },
798+
ignored_tuple_struct: SomeIgnoredTupleStruct(123),
799+
ignored_struct_variant: SomeIgnoredEnum::Struct {
800+
foo: String::from("Struct Variant"),
801+
},
802+
ignored_tuple_variant: SomeIgnoredEnum::Tuple(1.23, 3.45),
780803
custom_serialize: CustomSerialize {
781804
value: 100,
782805
inner_struct: SomeSerializableStruct { foo: 101 },
@@ -797,10 +820,11 @@ mod tests {
797820
255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 254, 255, 255, 255,
798821
255, 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 32,
799822
0, 0, 0, 0, 0, 0, 0, 255, 201, 154, 59, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 84, 117,
800-
112, 108, 101, 32, 83, 116, 114, 117, 99, 116, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 123,
801-
0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 164, 112, 157, 63, 164, 112, 77, 64, 3, 0, 0, 0, 20,
802-
0, 0, 0, 0, 0, 0, 0, 83, 116, 114, 117, 99, 116, 32, 118, 97, 114, 105, 97, 110, 116,
803-
32, 118, 97, 108, 117, 101, 100, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0,
823+
112, 108, 101, 32, 83, 116, 114, 117, 99, 116, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
824+
0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 164, 112, 157, 63, 164, 112, 77, 64, 3,
825+
0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 83, 116, 114, 117, 99, 116, 32, 118, 97, 114, 105,
826+
97, 110, 116, 32, 118, 97, 108, 117, 101, 100, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0,
827+
0, 0,
804828
];
805829

806830
assert_eq!(expected, bytes);
@@ -822,14 +846,18 @@ mod tests {
822846
struct_value: SomeStruct { foo: 999999999 },
823847
tuple_struct_value: SomeTupleStruct(String::from("Tuple Struct")),
824848
unit_struct: SomeUnitStruct,
825-
ignored_struct: SomeIgnoredStruct(123),
826-
ignored_enum: SomeIgnoredEnum::Ignored(1.23, 3.45),
827849
unit_enum: SomeEnum::Unit,
828850
newtype_enum: SomeEnum::NewType(123),
829851
tuple_enum: SomeEnum::Tuple(1.23, 3.21),
830852
struct_enum: SomeEnum::Struct {
831853
foo: String::from("Struct variant value"),
832854
},
855+
ignored_struct: SomeIgnoredStruct { ignored: 123 },
856+
ignored_tuple_struct: SomeIgnoredTupleStruct(123),
857+
ignored_struct_variant: SomeIgnoredEnum::Struct {
858+
foo: String::from("Struct Variant"),
859+
},
860+
ignored_tuple_variant: SomeIgnoredEnum::Tuple(1.23, 3.45),
833861
custom_serialize: CustomSerialize {
834862
value: 100,
835863
inner_struct: SomeSerializableStruct { foo: 101 },
@@ -844,15 +872,15 @@ mod tests {
844872
let expected: Vec<u8> = vec![
845873
129, 217, 41, 98, 101, 118, 121, 95, 114, 101, 102, 108, 101, 99, 116, 58, 58, 115,
846874
101, 114, 100, 101, 58, 58, 115, 101, 114, 58, 58, 116, 101, 115, 116, 115, 58, 58, 77,
847-
121, 83, 116, 114, 117, 99, 116, 220, 0, 17, 123, 172, 72, 101, 108, 108, 111, 32, 119,
875+
121, 83, 116, 114, 117, 99, 116, 220, 0, 19, 123, 172, 72, 101, 108, 108, 111, 32, 119,
848876
111, 114, 108, 100, 33, 145, 123, 146, 202, 64, 73, 15, 219, 205, 5, 57, 149, 254, 255,
849877
0, 1, 2, 149, 254, 255, 0, 1, 2, 129, 64, 32, 145, 206, 59, 154, 201, 255, 145, 172,
850-
84, 117, 112, 108, 101, 32, 83, 116, 114, 117, 99, 116, 144, 144, 129, 167, 73, 103,
851-
110, 111, 114, 101, 100, 144, 164, 85, 110, 105, 116, 129, 167, 78, 101, 119, 84, 121,
852-
112, 101, 123, 129, 165, 84, 117, 112, 108, 101, 146, 202, 63, 157, 112, 164, 202, 64,
853-
77, 112, 164, 129, 166, 83, 116, 114, 117, 99, 116, 145, 180, 83, 116, 114, 117, 99,
854-
116, 32, 118, 97, 114, 105, 97, 110, 116, 32, 118, 97, 108, 117, 101, 146, 100, 145,
855-
101,
878+
84, 117, 112, 108, 101, 32, 83, 116, 114, 117, 99, 116, 144, 144, 144, 129, 166, 83,
879+
116, 114, 117, 99, 116, 144, 129, 165, 84, 117, 112, 108, 101, 144, 164, 85, 110, 105,
880+
116, 129, 167, 78, 101, 119, 84, 121, 112, 101, 123, 129, 165, 84, 117, 112, 108, 101,
881+
146, 202, 63, 157, 112, 164, 202, 64, 77, 112, 164, 129, 166, 83, 116, 114, 117, 99,
882+
116, 145, 180, 83, 116, 114, 117, 99, 116, 32, 118, 97, 114, 105, 97, 110, 116, 32,
883+
118, 97, 108, 117, 101, 146, 100, 145, 101,
856884
];
857885

858886
assert_eq!(expected, bytes);

0 commit comments

Comments
 (0)