@@ -147,8 +147,10 @@ mod newtype_enum {
147
147
enum Inner {
148
148
Unit ,
149
149
Newtype ( u8 ) ,
150
+ Tuple0 ( ) ,
150
151
Tuple2 ( u8 , u8 ) ,
151
152
Struct { f : u8 } ,
153
+ EmptyStruct { } ,
152
154
}
153
155
154
156
// Reaches crate::private::de::content::VariantRefDeserializer::unit_variant
@@ -178,6 +180,22 @@ mod newtype_enum {
178
180
) ;
179
181
}
180
182
183
+ // Reaches crate::private::de::content::VariantRefDeserializer::tuple_variant
184
+ #[ test]
185
+ fn tuple0 ( ) {
186
+ assert_tokens (
187
+ & Outer :: Inner ( Inner :: Tuple0 ( ) ) ,
188
+ & [
189
+ Token :: TupleVariant {
190
+ name : "Inner" ,
191
+ variant : "Tuple0" ,
192
+ len : 0 ,
193
+ } ,
194
+ Token :: TupleVariantEnd ,
195
+ ] ,
196
+ ) ;
197
+ }
198
+
181
199
// Reaches crate::private::de::content::VariantRefDeserializer::tuple_variant
182
200
#[ test]
183
201
fn tuple2 ( ) {
@@ -233,6 +251,44 @@ mod newtype_enum {
233
251
] ,
234
252
) ;
235
253
}
254
+
255
+ // Reaches crate::private::de::content::VariantRefDeserializer::struct_variant
256
+ // Content::Map case
257
+ // Special case - empty map
258
+ #[ test]
259
+ fn empty_struct_from_map ( ) {
260
+ assert_de_tokens (
261
+ & Outer :: Inner ( Inner :: EmptyStruct { } ) ,
262
+ & [
263
+ Token :: Map { len : Some ( 1 ) } ,
264
+ // tag
265
+ Token :: Str ( "EmptyStruct" ) ,
266
+ // content
267
+ Token :: Map { len : Some ( 0 ) } ,
268
+ Token :: MapEnd ,
269
+ Token :: MapEnd ,
270
+ ] ,
271
+ ) ;
272
+ }
273
+
274
+ // Reaches crate::private::de::content::VariantRefDeserializer::struct_variant
275
+ // Content::Seq case
276
+ // Special case - empty seq
277
+ #[ test]
278
+ fn empty_struct_from_seq ( ) {
279
+ assert_de_tokens (
280
+ & Outer :: Inner ( Inner :: EmptyStruct { } ) ,
281
+ & [
282
+ Token :: Map { len : Some ( 1 ) } ,
283
+ // tag
284
+ Token :: Str ( "EmptyStruct" ) ,
285
+ // content
286
+ Token :: Seq { len : Some ( 0 ) } ,
287
+ Token :: SeqEnd ,
288
+ Token :: MapEnd ,
289
+ ] ,
290
+ ) ;
291
+ }
236
292
}
237
293
238
294
// Reaches crate::private::de::content::ContentRefDeserializer::deserialize_option
0 commit comments