22#![ cfg_attr( feature = "serde_macros" , plugin( serde_macros) ) ]
33
44extern crate serde;
5+ extern crate rmp;
56extern crate rmp_serde;
67
78use std:: io:: Cursor ;
89
910use serde:: Serialize ;
1011
11- use rmp_serde:: new_default_serializer ;
12+ use rmp_serde:: Serializer ;
1213use rmp_serde:: encode:: Error ;
1314
14- #[ cfg( feature = "serde_macros" ) ]
15- use rmp_serde:: { Serializer , StructMapWriter } ;
16-
1715#[ test]
1816fn pass_null ( ) {
1917 let mut buf = [ 0x00 ] ;
2018
2119 let val = ( ) ;
22- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
20+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
2321
2422 assert_eq ! ( [ 0xc0 ] , buf) ;
2523}
@@ -30,7 +28,7 @@ fn fail_null() {
3028
3129 let val = ( ) ;
3230
33- match val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) {
31+ match val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) {
3432 Err ( Error :: InvalidFixedValueWrite ( ..) ) => ( ) ,
3533 other => panic ! ( "unexpected result: {:?}" , other)
3634 }
@@ -43,7 +41,7 @@ fn pass_bool() {
4341 {
4442 let mut cur = Cursor :: new ( & mut buf[ ..] ) ;
4543
46- let mut encoder = new_default_serializer ( & mut cur) ;
44+ let mut encoder = Serializer :: new ( & mut cur) ;
4745
4846 let val = true ;
4947 val. serialize ( & mut encoder) . ok ( ) . unwrap ( ) ;
@@ -59,7 +57,7 @@ fn pass_usize() {
5957 let mut buf = [ 0x00 , 0x00 ] ;
6058
6159 let val = 255usize ;
62- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
60+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
6361
6462 assert_eq ! ( [ 0xcc , 0xff ] , buf) ;
6563}
@@ -69,7 +67,7 @@ fn pass_u8() {
6967 let mut buf = [ 0x00 , 0x00 ] ;
7068
7169 let val = 255u8 ;
72- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
70+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
7371
7472 assert_eq ! ( [ 0xcc , 0xff ] , buf) ;
7573}
@@ -79,7 +77,7 @@ fn pass_u16() {
7977 let mut buf = [ 0x00 , 0x00 , 0x00 ] ;
8078
8179 let val = 65535u16 ;
82- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
80+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
8381
8482 assert_eq ! ( [ 0xcd , 0xff , 0xff ] , buf) ;
8583}
@@ -89,7 +87,7 @@ fn pass_u32() {
8987 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
9088
9189 let val = 4294967295u32 ;
92- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
90+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
9391
9492 assert_eq ! ( [ 0xce , 0xff , 0xff , 0xff , 0xff ] , buf) ;
9593}
@@ -99,7 +97,7 @@ fn pass_u64() {
9997 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
10098
10199 let val = 18446744073709551615u64 ;
102- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
100+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
103101
104102 assert_eq ! ( [ 0xcf , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ] , buf) ;
105103}
@@ -109,7 +107,7 @@ fn pass_isize() {
109107 let mut buf = [ 0x00 , 0x00 ] ;
110108
111109 let val = -128isize ;
112- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
110+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
113111
114112 assert_eq ! ( [ 0xd0 , 0x80 ] , buf) ;
115113}
@@ -119,7 +117,7 @@ fn pass_i8() {
119117 let mut buf = [ 0x00 , 0x00 ] ;
120118
121119 let val = -128i8 ;
122- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
120+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
123121
124122 assert_eq ! ( [ 0xd0 , 0x80 ] , buf) ;
125123}
@@ -129,7 +127,7 @@ fn pass_i16() {
129127 let mut buf = [ 0x00 , 0x00 , 0x00 ] ;
130128
131129 let val = -32768i16 ;
132- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
130+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
133131
134132 assert_eq ! ( [ 0xd1 , 0x80 , 0x00 ] , buf) ;
135133}
@@ -139,7 +137,7 @@ fn pass_i32() {
139137 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
140138
141139 let val = -2147483648i32 ;
142- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
140+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
143141
144142 assert_eq ! ( [ 0xd2 , 0x80 , 0x00 , 0x00 , 0x00 ] , buf) ;
145143}
@@ -149,7 +147,7 @@ fn pass_i64() {
149147 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
150148
151149 let val = -9223372036854775808i64 ;
152- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
150+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
153151
154152 assert_eq ! ( [ 0xd3 , 0x80 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] , buf) ;
155153}
@@ -159,7 +157,7 @@ fn pass_f32() {
159157 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
160158
161159 let val = 3.4028234e38_f32 ;
162- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
160+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
163161
164162 assert_eq ! ( [ 0xca , 0x7f , 0x7f , 0xff , 0xff ] , buf) ;
165163}
@@ -169,7 +167,7 @@ fn pass_f64() {
169167 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
170168
171169 let val = 42f64 ;
172- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
170+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
173171
174172 assert_eq ! ( [ 0xcb , 0x40 , 0x45 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] , buf) ;
175173}
@@ -179,7 +177,7 @@ fn pass_char() {
179177 let mut buf = [ 0x00 , 0x00 ] ;
180178
181179 let val = '!' ;
182- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
180+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
183181
184182 assert_eq ! ( [ 0xa1 , 0x21 ] , buf) ;
185183}
@@ -190,7 +188,7 @@ fn pass_string() {
190188 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
191189
192190 let val = "le message" ;
193- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
191+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
194192
195193 assert_eq ! ( [ 0xaa , 0x6c , 0x65 , 0x20 , 0x6d , 0x65 , 0x73 , 0x73 , 0x61 , 0x67 , 0x65 ] , buf) ;
196194}
@@ -204,7 +202,7 @@ fn pass_struct() {
204202 struct Decoded { id : u32 , value : u32 }
205203
206204 let val = Decoded { id : 42 , value : 100500 } ;
207- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
205+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
208206
209207 assert_eq ! ( [ 0x92 , 0x2a , 0xce , 0x0 , 0x1 , 0x88 , 0x94 ] , buf) ;
210208}
@@ -214,7 +212,7 @@ fn pass_tuple() {
214212 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
215213
216214 let val = ( 42u32 , 100500u32 ) ;
217- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
215+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
218216
219217 assert_eq ! ( [ 0x92 , 0x2a , 0xce , 0x0 , 0x1 , 0x88 , 0x94 ] , buf) ;
220218}
@@ -224,7 +222,7 @@ fn pass_option_some() {
224222 let mut buf = [ 0x00 ] ;
225223
226224 let val = Some ( 100u32 ) ;
227- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
225+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
228226
229227 assert_eq ! ( [ 0x64 ] , buf) ;
230228}
@@ -234,7 +232,7 @@ fn pass_option_none() {
234232 let mut buf = [ 0x00 ] ;
235233
236234 let val: Option < u32 > = None ;
237- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
235+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
238236
239237 assert_eq ! ( [ 0xc0 ] , buf) ;
240238}
@@ -244,7 +242,7 @@ fn pass_seq() {
244242 let mut buf = [ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ] ;
245243
246244 let val = vec ! [ "le" , "shit" ] ;
247- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
245+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
248246
249247 assert_eq ! ( [ 0x92 , 0xa2 , 0x6c , 0x65 , 0xa4 , 0x73 , 0x68 , 0x69 , 0x74 ] , buf) ;
250248}
@@ -258,7 +256,7 @@ fn pass_map() {
258256 let mut val = BTreeMap :: new ( ) ;
259257 val. insert ( 0u8 , "le" ) ;
260258 val. insert ( 1u8 , "shit" ) ;
261- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
259+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
262260
263261 let out = [
264262 0x82 , // 2 (size)
@@ -273,6 +271,27 @@ fn pass_map() {
273271#[ cfg( feature = "serde_macros" ) ]
274272#[ test]
275273fn pass_struct_map ( ) {
274+ use std:: io:: Write ;
275+ use rmp:: Marker ;
276+ use rmp:: encode:: { ValueWriteError , write_map_len, write_str} ;
277+ use rmp_serde:: encode:: VariantWriter ;
278+
279+ struct StructMapWriter ;
280+
281+ impl VariantWriter for StructMapWriter {
282+ fn write_struct_len < W > ( & self , wr : & mut W , len : u32 ) -> Result < Marker , ValueWriteError >
283+ where W : Write
284+ {
285+ write_map_len ( wr, len)
286+ }
287+
288+ fn write_field_name < W > ( & self , wr : & mut W , _key : & str ) -> Result < ( ) , ValueWriteError >
289+ where W : Write
290+ {
291+ write_str ( wr, _key)
292+ }
293+ }
294+
276295 #[ derive( Debug , PartialEq , Serialize ) ]
277296 struct Custom < ' a > {
278297 et : & ' a str ,
@@ -283,7 +302,7 @@ fn pass_struct_map() {
283302 let mut buf = [ 0x00 ; 20 ] ;
284303
285304 let val = Custom { et : "voila" , le : 0 , shit : 1 } ;
286- val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] , StructMapWriter ) ) . ok ( ) . unwrap ( ) ;
305+ val. serialize ( & mut Serializer :: with ( & mut & mut buf[ ..] , StructMapWriter ) ) . ok ( ) . unwrap ( ) ;
287306
288307 let out = [
289308 0x83 , // 3 (size)
@@ -312,7 +331,7 @@ fn pass_enum() {
312331 let mut buf = [ 0x00 ; 3 ] ;
313332
314333 let val = Custom :: Second ;
315- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
334+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
316335
317336 let out = [ 0x92 , 0x01 , 0x90 ] ;
318337 assert_eq ! ( out, buf) ;
@@ -331,7 +350,7 @@ fn pass_enum_variant_with_arg() {
331350 let mut buf = [ 0x00 ; 4 ] ;
332351
333352 let val = Custom :: Second ( 42 ) ;
334- val. serialize ( & mut new_default_serializer ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
353+ val. serialize ( & mut Serializer :: new ( & mut & mut buf[ ..] ) ) . ok ( ) . unwrap ( ) ;
335354
336355 let out = [ 0x92 , 0x01 , 0x91 , 0x2a ] ;
337356 assert_eq ! ( out, buf) ;
@@ -343,7 +362,7 @@ fn pass_encodong_struct_into_vec() {
343362
344363 let mut buf: Vec < u8 > = Vec :: new ( ) ;
345364
346- val. serialize ( & mut new_default_serializer ( & mut buf) ) . unwrap ( ) ;
365+ val. serialize ( & mut Serializer :: new ( & mut buf) ) . unwrap ( ) ;
347366
348367 assert_eq ! ( vec![ 0x92 , 0x2a , 0xaa , 0x74 , 0x68 , 0x65 , 0x20 , 0x41 , 0x6e , 0x73 , 0x77 , 0x65 , 0x72 ] , buf) ;
349368}
@@ -359,7 +378,7 @@ fn encode_struct_with_string_using_vec() {
359378 let mut buf = Vec :: new ( ) ;
360379
361380 let val = Custom { data : "le message" . to_string ( ) } ;
362- val. serialize ( & mut new_default_serializer ( & mut buf) ) . ok ( ) . unwrap ( ) ;
381+ val. serialize ( & mut Serializer :: new ( & mut buf) ) . ok ( ) . unwrap ( ) ;
363382
364383 let out = vec ! [ 0x91 , 0xaa , 0x6c , 0x65 , 0x20 , 0x6d , 0x65 , 0x73 , 0x73 , 0x61 , 0x67 , 0x65 ] ;
365384 assert_eq ! ( out, buf) ;
@@ -373,7 +392,7 @@ fn pass_bin() {
373392 let vec = vec ! [ 0xcc , 0x80 ] ;
374393 let val = Bytes :: from ( & vec) ;
375394
376- val. serialize ( & mut new_default_serializer ( & mut buf) ) . ok ( ) . unwrap ( ) ;
395+ val. serialize ( & mut Serializer :: new ( & mut buf) ) . ok ( ) . unwrap ( ) ;
377396
378397 assert_eq ! ( vec![ 0xc4 , 0x02 , 0xcc , 0x80 ] , buf) ;
379398}
0 commit comments