@@ -3,6 +3,7 @@ extern crate serde;
33
44use std:: collections:: { BTreeMap , HashSet } ;
55use serde:: { Deserialize , Serialize , Deserializer } ;
6+ use serde:: de:: Unexpected ;
67
78use bson:: { Bson , Encoder , Decoder , DecoderError } ;
89
@@ -58,17 +59,16 @@ macro_rules! t {
5859}
5960
6061macro_rules! encode( ( $t: expr) => ( {
61- let mut e = Encoder :: new( ) ;
62- t!( $t. serialize( & mut e) ) ;
63- match e. bson( ) {
62+ let e = Encoder :: new( ) ;
63+ match $t. serialize( e) {
6464 Ok ( b) => b,
6565 Err ( e) => panic!( "Failed to serialize: {}" , e) ,
6666 }
6767} ) ) ;
6868
6969macro_rules! decode( ( $t: expr) => ( {
70- let mut d = Decoder :: new( $t) ;
71- t!( Deserialize :: deserialize( & mut d) )
70+ let d = Decoder :: new( $t) ;
71+ t!( Deserialize :: deserialize( d) )
7272} ) ) ;
7373
7474#[ test]
@@ -118,24 +118,24 @@ fn application_decode_error() {
118118 #[ derive( PartialEq , Debug ) ]
119119 struct Range10 ( usize ) ;
120120 impl Deserialize for Range10 {
121- fn deserialize < D : Deserializer > ( d : & mut D ) -> Result < Range10 , D :: Error > {
121+ fn deserialize < D : Deserializer > ( d : D ) -> Result < Range10 , D :: Error > {
122122 let x: usize = try!( Deserialize :: deserialize ( d) ) ;
123123 if x > 10 {
124- Err ( serde:: de:: Error :: invalid_value ( "more than 10" ) )
124+ Err ( serde:: de:: Error :: invalid_value ( Unexpected :: Unsigned ( x as u64 ) , & "more than 10" ) )
125125 } else {
126126 Ok ( Range10 ( x) )
127127 }
128128 }
129129 }
130- let mut d_good = Decoder :: new ( Bson :: I64 ( 5 ) ) ;
131- let mut d_bad1 = Decoder :: new ( Bson :: String ( "not an isize" . to_string ( ) ) ) ;
132- let mut d_bad2 = Decoder :: new ( Bson :: I64 ( 11 ) ) ;
130+ let d_good = Decoder :: new ( Bson :: I64 ( 5 ) ) ;
131+ let d_bad1 = Decoder :: new ( Bson :: String ( "not an isize" . to_string ( ) ) ) ;
132+ let d_bad2 = Decoder :: new ( Bson :: I64 ( 11 ) ) ;
133133
134- assert_eq ! ( Range10 ( 5 ) , t!( Deserialize :: deserialize( & mut d_good) ) ) ;
134+ assert_eq ! ( Range10 ( 5 ) , t!( Deserialize :: deserialize( d_good) ) ) ;
135135
136- let err1: Result < Range10 , _ > = Deserialize :: deserialize ( & mut d_bad1) ;
136+ let err1: Result < Range10 , _ > = Deserialize :: deserialize ( d_bad1) ;
137137 assert ! ( err1. is_err( ) ) ;
138- let err2: Result < Range10 , _ > = Deserialize :: deserialize ( & mut d_bad2) ;
138+ let err2: Result < Range10 , _ > = Deserialize :: deserialize ( d_bad2) ;
139139 assert ! ( err2. is_err( ) ) ;
140140}
141141
@@ -316,10 +316,10 @@ fn type_conversion() {
316316 #[ derive( Serialize , Deserialize , PartialEq , Debug ) ]
317317 struct Foo { bar : i32 }
318318
319- let mut d = Decoder :: new ( bdoc ! {
319+ let d = Decoder :: new ( bdoc ! {
320320 "bar" => ( 1.0 )
321321 } ) ;
322- let a: Result < Foo , DecoderError > = Deserialize :: deserialize ( & mut d) ;
322+ let a: Result < Foo , DecoderError > = Deserialize :: deserialize ( d) ;
323323 assert_eq ! (
324324 a. unwrap( ) ,
325325 Foo { bar: 1 }
@@ -331,8 +331,8 @@ fn missing_errors() {
331331 #[ derive( Serialize , Deserialize , PartialEq , Debug ) ]
332332 struct Foo { bar : i32 }
333333
334- let mut d = Decoder :: new ( bdoc ! { } ) ;
335- let a: Result < Foo , DecoderError > = Deserialize :: deserialize ( & mut d) ;
334+ let d = Decoder :: new ( bdoc ! { } ) ;
335+ let a: Result < Foo , DecoderError > = Deserialize :: deserialize ( d) ;
336336
337337 assert ! ( a. is_err( ) ) ;
338338}
@@ -419,12 +419,12 @@ fn unused_fields() {
419419 struct Foo { a : i32 }
420420
421421 let v = Foo { a : 2 } ;
422- let mut d = Decoder :: new ( bdoc ! {
422+ let d = Decoder :: new ( bdoc ! {
423423 "a" => 2 ,
424424 "b" => 5
425425 } ) ;
426426
427- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
427+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
428428}
429429
430430#[ test]
@@ -435,14 +435,14 @@ fn unused_fields2() {
435435 struct Bar { a : i32 }
436436
437437 let v = Foo { a : Bar { a : 2 } } ;
438- let mut d = Decoder :: new ( bdoc ! {
438+ let d = Decoder :: new ( bdoc ! {
439439 "a" => {
440440 "a" => 2 ,
441441 "b" => 5
442442 }
443443 } ) ;
444444
445- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
445+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
446446}
447447
448448#[ test]
@@ -453,12 +453,12 @@ fn unused_fields3() {
453453 struct Bar { a : i32 }
454454
455455 let v = Foo { a : Bar { a : 2 } } ;
456- let mut d = Decoder :: new ( bdoc ! {
456+ let d = Decoder :: new ( bdoc ! {
457457 "a" => {
458458 "a" => 2
459459 }
460460 } ) ;
461- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
461+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
462462}
463463
464464#[ test]
@@ -469,12 +469,12 @@ fn unused_fields4() {
469469 let mut map = BTreeMap :: new ( ) ;
470470 map. insert ( "a" . to_owned ( ) , "foo" . to_owned ( ) ) ;
471471 let v = Foo { a : map } ;
472- let mut d = Decoder :: new ( bdoc ! {
472+ let d = Decoder :: new ( bdoc ! {
473473 "a" => {
474474 "a" => "foo"
475475 }
476476 } ) ;
477- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
477+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
478478}
479479
480480#[ test]
@@ -483,10 +483,10 @@ fn unused_fields5() {
483483 struct Foo { a : Vec < String > }
484484
485485 let v = Foo { a : vec ! [ "a" . to_string( ) ] } ;
486- let mut d = Decoder :: new ( bdoc ! {
486+ let d = Decoder :: new ( bdoc ! {
487487 "a" => [ "a" ]
488488 } ) ;
489- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
489+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
490490}
491491
492492#[ test]
@@ -495,10 +495,10 @@ fn unused_fields6() {
495495 struct Foo { a : Option < Vec < String > > }
496496
497497 let v = Foo { a : Some ( vec ! [ ] ) } ;
498- let mut d = Decoder :: new ( bdoc ! {
498+ let d = Decoder :: new ( bdoc ! {
499499 "a" => [ ]
500500 } ) ;
501- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
501+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
502502}
503503
504504#[ test]
@@ -509,22 +509,25 @@ fn unused_fields7() {
509509 struct Bar { a : i32 }
510510
511511 let v = Foo { a : vec ! [ Bar { a: 1 } ] } ;
512- let mut d = Decoder :: new ( bdoc ! {
512+ let d = Decoder :: new ( bdoc ! {
513513 "a" => [ { "a" => 1 , "b" => 2 } ]
514514 } ) ;
515- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
515+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
516516}
517517
518518#[ test]
519519fn empty_arrays ( ) {
520520 #[ derive( Serialize , Deserialize , PartialEq , Debug ) ]
521- struct Foo { a : Vec < Bar > }
521+ struct Foo {
522+ #[ serde( default ) ]
523+ a : Vec < Bar >
524+ }
522525 #[ derive( Serialize , Deserialize , PartialEq , Debug ) ]
523526 struct Bar ;
524527
525528 let v = Foo { a : vec ! [ ] } ;
526- let mut d = Decoder :: new ( bdoc ! { } ) ;
527- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
529+ let d = Decoder :: new ( bdoc ! { } ) ;
530+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
528531}
529532
530533#[ test]
@@ -535,12 +538,12 @@ fn empty_arrays2() {
535538 struct Bar ;
536539
537540 let v = Foo { a : None } ;
538- let mut d = Decoder :: new ( bdoc ! { } ) ;
539- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
541+ let d = Decoder :: new ( bdoc ! { } ) ;
542+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
540543
541544 let v = Foo { a : Some ( vec ! [ ] ) } ;
542- let mut d = Decoder :: new ( bdoc ! {
545+ let d = Decoder :: new ( bdoc ! {
543546 "a" => [ ]
544547 } ) ;
545- assert_eq ! ( v, t!( Deserialize :: deserialize( & mut d) ) ) ;
548+ assert_eq ! ( v, t!( Deserialize :: deserialize( d) ) ) ;
546549}
0 commit comments