71
71
mod tests {
72
72
use super :: * ;
73
73
use core:: num:: {
74
- NonZeroI16 , NonZeroI32 , NonZeroI64 , NonZeroI8 , NonZeroU16 , NonZeroU32 , NonZeroU64 ,
75
- NonZeroU8 ,
74
+ NonZeroI128 , NonZeroI16 , NonZeroI32 , NonZeroI64 , NonZeroI8 , NonZeroU128 , NonZeroU16 ,
75
+ NonZeroU32 , NonZeroU64 , NonZeroU8 ,
76
76
} ;
77
+ use proptest:: { prop_assert_eq, property_test} ;
77
78
use serde:: Deserialize ;
78
79
79
80
use crate :: msgpack:: { from_msgpack, to_msgpack_vec} ;
@@ -228,23 +229,30 @@ mod tests {
228
229
229
230
( unsigned $ty: ty) => {
230
231
:: paste:: paste! {
231
- #[ test ]
232
- fn [ <test_ $ty: snake: lower _encoding>] ( ) {
233
- let one = $ty :: new ( 1 ) . unwrap ( ) ;
232
+ #[ property_test ]
233
+ fn [ <test_ $ty: snake: lower _encoding>] ( input : $ty ) {
234
+ let primitive = input . get ( ) ;
234
235
235
- let serialized = to_json_string( & one) . unwrap( ) ;
236
- assert_eq!( serialized, "1" ) ;
236
+ // Verify that the serialization is the same as the primitive
237
+ let serialized = to_json_string( & input) . unwrap( ) ;
238
+ let serialized_primitive = to_json_string( & primitive) . unwrap( ) ;
239
+ prop_assert_eq!( serialized. as_str( ) , serialized_primitive. as_str( ) ) ;
237
240
238
- let deserialized: $ty = from_json( "1" ) . unwrap( ) ;
239
- assert_eq!( deserialized, one) ;
241
+ // Verify that the serialized primitive can be deserialized
242
+ let deserialized: $ty = from_json( serialized_primitive) . unwrap( ) ;
243
+ assert_eq!( deserialized, input) ;
240
244
245
+ // Verify that zero is not allowed
241
246
assert!( from_json:: <$ty>( "0" ) . is_err( ) ) ;
242
247
243
- let serialized = to_msgpack_vec( & one) . unwrap( ) ;
244
- assert_eq!( serialized, ONE_MSGPACK ) ;
248
+ // Verify that the msgpack encoding is the same as the primitive
249
+ let serialized = to_msgpack_vec( & input) . unwrap( ) ;
250
+ let serialized_primitive = to_msgpack_vec( & primitive) . unwrap( ) ;
251
+ prop_assert_eq!( serialized. as_slice( ) , serialized_primitive. as_slice( ) ) ;
245
252
246
- let deserialized: $ty = from_msgpack( ONE_MSGPACK ) . unwrap( ) ;
247
- assert_eq!( deserialized, one) ;
253
+ // Verify that the serialized primitive can be deserialized
254
+ let deserialized: $ty = from_msgpack( & serialized_primitive) . unwrap( ) ;
255
+ prop_assert_eq!( deserialized, input) ;
248
256
}
249
257
}
250
258
} ;
@@ -261,10 +269,12 @@ mod tests {
261
269
unsigned NonZeroU16 ,
262
270
unsigned NonZeroU32 ,
263
271
unsigned NonZeroU64 ,
272
+ unsigned NonZeroU128 ,
264
273
265
274
signed NonZeroI8 ,
266
275
signed NonZeroI16 ,
267
276
signed NonZeroI32 ,
268
277
signed NonZeroI64 ,
278
+ signed NonZeroI128 ,
269
279
}
270
280
}
0 commit comments