MCPcopy Create free account
hub / github.com/apache/fory / test_struct_evolving_override

Function test_struct_evolving_override

rust/tests/tests/test_simple_struct.rs:83–119  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

81
82#[test]
83fn test_struct_evolving_override() {
84 #[derive(ForyStruct, Debug, PartialEq)]
85 struct Evolving {
86 id: i32,
87 }
88
89 #[derive(ForyStruct, Debug, PartialEq)]
90 #[fory(evolving = false)]
91 struct Fixed {
92 id: i32,
93 }
94
95 let mut fory = Fory::builder()
96 .xlang(true)
97 .compatible(true)
98 .track_ref(false)
99 .build();
100 fory.register::<Evolving>(100).unwrap();
101 fory.register::<Fixed>(101).unwrap();
102
103 let evolving = Evolving { id: 123 };
104 let evolving_bytes = fory.serialize(&evolving).unwrap();
105 assert!(evolving_bytes.len() > 2);
106 assert_eq!(evolving_bytes[2], TypeId::COMPATIBLE_STRUCT as u8);
107
108 let fixed = Fixed { id: 123 };
109 let fixed_bytes = fory.serialize(&fixed).unwrap();
110 assert!(fixed_bytes.len() > 2);
111 assert_eq!(fixed_bytes[2], TypeId::STRUCT as u8);
112 assert!(fixed_bytes.len() < evolving_bytes.len());
113
114 let evolving_result: Evolving = fory.deserialize(&evolving_bytes).unwrap();
115 assert_eq!(evolving, evolving_result);
116
117 let fixed_result: Fixed = fory.deserialize(&fixed_bytes).unwrap();
118 assert_eq!(fixed, fixed_result);
119}
120
121// Test 4: Compatible mode - serialize with field, deserialize with empty struct
122#[test]

Callers

nothing calls this directly

Calls 7

serializeMethod · 0.65
deserializeMethod · 0.65
buildMethod · 0.45
track_refMethod · 0.45
compatibleMethod · 0.45
xlangMethod · 0.45
unwrapMethod · 0.45

Tested by

no test coverage detected