@@ -302,64 +302,112 @@ mod unit {
302
302
}
303
303
}
304
304
305
- #[ test]
306
- fn newtype ( ) {
307
- let value = AdjacentlyTagged :: Newtype :: < u8 > ( 1 ) ;
305
+ mod newtype {
306
+ use super :: * ;
308
307
309
- // newtype with tag first
310
- assert_tokens (
311
- & value,
312
- & [
313
- Token :: Struct {
314
- name : "AdjacentlyTagged" ,
315
- len : 2 ,
316
- } ,
317
- Token :: Str ( "t" ) ,
318
- Token :: UnitVariant {
319
- name : "AdjacentlyTagged" ,
320
- variant : "Newtype" ,
321
- } ,
322
- Token :: Str ( "c" ) ,
323
- Token :: U8 ( 1 ) ,
324
- Token :: StructEnd ,
325
- ] ,
326
- ) ;
308
+ #[ test]
309
+ fn map_tag_content ( ) {
310
+ let value = AdjacentlyTagged :: Newtype :: < u8 > ( 1 ) ;
327
311
328
- // newtype with content first
329
- assert_de_tokens (
330
- & value,
331
- & [
332
- Token :: Struct {
333
- name : "AdjacentlyTagged" ,
334
- len : 2 ,
335
- } ,
336
- Token :: Str ( "c " ) ,
337
- Token :: U8 ( 1 ) ,
338
- Token :: Str ( "t" ) ,
339
- Token :: UnitVariant {
340
- name : "AdjacentlyTagged" ,
341
- variant : "Newtype" ,
342
- } ,
343
- Token :: StructEnd ,
344
- ] ,
345
- ) ;
312
+ // Map: tag + content
313
+ assert_tokens (
314
+ & value,
315
+ & [
316
+ Token :: Struct {
317
+ name : "AdjacentlyTagged" ,
318
+ len : 2 ,
319
+ } ,
320
+ Token :: Str ( "t " ) ,
321
+ Token :: UnitVariant {
322
+ name : "AdjacentlyTagged" ,
323
+ variant : "Newtype" ,
324
+ } ,
325
+ Token :: Str ( "c" ) ,
326
+ Token :: U8 ( 1 ) ,
327
+ Token :: StructEnd ,
328
+ ] ,
329
+ ) ;
346
330
347
- // optional newtype with no content field
348
- assert_de_tokens (
349
- & AdjacentlyTagged :: Newtype :: < Option < u8 > > ( None ) ,
350
- & [
351
- Token :: Struct {
352
- name : "AdjacentlyTagged" ,
353
- len : 1 ,
354
- } ,
355
- Token :: Str ( "t" ) ,
356
- Token :: UnitVariant {
357
- name : "AdjacentlyTagged" ,
358
- variant : "Newtype" ,
359
- } ,
360
- Token :: StructEnd ,
361
- ] ,
362
- ) ;
331
+ // Map: content + tag
332
+ assert_de_tokens (
333
+ & value,
334
+ & [
335
+ Token :: Struct {
336
+ name : "AdjacentlyTagged" ,
337
+ len : 2 ,
338
+ } ,
339
+ Token :: Str ( "c" ) ,
340
+ Token :: U8 ( 1 ) ,
341
+ Token :: Str ( "t" ) ,
342
+ Token :: UnitVariant {
343
+ name : "AdjacentlyTagged" ,
344
+ variant : "Newtype" ,
345
+ } ,
346
+ Token :: StructEnd ,
347
+ ] ,
348
+ ) ;
349
+ }
350
+
351
+ #[ test]
352
+ fn map_tag_only ( ) {
353
+ // optional newtype with no content field
354
+ assert_de_tokens (
355
+ & AdjacentlyTagged :: Newtype :: < Option < u8 > > ( None ) ,
356
+ & [
357
+ Token :: Struct {
358
+ name : "AdjacentlyTagged" ,
359
+ len : 1 ,
360
+ } ,
361
+ Token :: Str ( "t" ) ,
362
+ Token :: UnitVariant {
363
+ name : "AdjacentlyTagged" ,
364
+ variant : "Newtype" ,
365
+ } ,
366
+ Token :: StructEnd ,
367
+ ] ,
368
+ ) ;
369
+ }
370
+
371
+ #[ test]
372
+ fn seq ( ) {
373
+ let value = AdjacentlyTagged :: Newtype :: < u8 > ( 1 ) ;
374
+
375
+ // Seq: tag and content
376
+ assert_de_tokens (
377
+ & value,
378
+ & [
379
+ Token :: Seq { len : Some ( 2 ) } ,
380
+ Token :: UnitVariant {
381
+ name : "AdjacentlyTagged" ,
382
+ variant : "Newtype" ,
383
+ } ,
384
+ Token :: U8 ( 1 ) ,
385
+ Token :: SeqEnd ,
386
+ ] ,
387
+ ) ;
388
+
389
+ // Seq: tag (as string) and content
390
+ assert_de_tokens (
391
+ & value,
392
+ & [
393
+ Token :: Seq { len : None } ,
394
+ Token :: Str ( "Newtype" ) , // tag
395
+ Token :: U8 ( 1 ) , // content
396
+ Token :: SeqEnd ,
397
+ ] ,
398
+ ) ;
399
+
400
+ // Seq: tag (as borrowed string) and content
401
+ assert_de_tokens (
402
+ & value,
403
+ & [
404
+ Token :: Seq { len : None } ,
405
+ Token :: BorrowedStr ( "Newtype" ) , // tag
406
+ Token :: U8 ( 1 ) , // content
407
+ Token :: SeqEnd ,
408
+ ] ,
409
+ ) ;
410
+ }
363
411
}
364
412
365
413
#[ test]
0 commit comments