@@ -863,4 +863,41 @@ mod tests {
863863 } )
864864 ) ;
865865 }
866+
867+ // This could be run also on 32-bit when deserialization is implemented.
868+ #[ cfg( all( feature = "serde" , target_pointer_width = "64" ) ) ]
869+ #[ test]
870+ fn test_uniform_usize_deserialization ( ) {
871+ use serde_json;
872+ let original = UniformUsize :: new_inclusive ( 10 , 100 ) . expect ( "creation" ) ;
873+ let serialized = serde_json:: to_string ( & original) . expect ( "serialization" ) ;
874+ let deserialized: UniformUsize =
875+ serde_json:: from_str ( & serialized) . expect ( "deserialization" ) ;
876+ assert_eq ! ( deserialized, original) ;
877+ }
878+
879+ #[ cfg( all( feature = "serde" , target_pointer_width = "64" ) ) ]
880+ #[ test]
881+ fn test_uniform_usize_deserialization_from_32bit ( ) {
882+ use serde_json;
883+ let serialized_on_32bit = r#"{"low":10,"range":91,"thresh":74}"# ;
884+ let deserialized: UniformUsize =
885+ serde_json:: from_str ( & serialized_on_32bit) . expect ( "deserialization" ) ;
886+ assert_eq ! (
887+ deserialized,
888+ UniformUsize :: new_inclusive( 10 , 100 ) . expect( "creation" )
889+ ) ;
890+ }
891+
892+ #[ cfg( all( feature = "serde" , target_pointer_width = "64" ) ) ]
893+ #[ test]
894+ fn test_uniform_usize_deserialization_64bit ( ) {
895+ use serde_json;
896+ let original = UniformUsize :: new_inclusive ( 1 , u64:: MAX as usize - 1 ) . expect ( "creation" ) ;
897+ assert ! ( original. mode64) ;
898+ let serialized = serde_json:: to_string ( & original) . expect ( "serialization" ) ;
899+ let deserialized: UniformUsize =
900+ serde_json:: from_str ( & serialized) . expect ( "deserialization" ) ;
901+ assert_eq ! ( deserialized, original) ;
902+ }
866903}
0 commit comments