@@ -1457,11 +1457,32 @@ fn test_number_any_try_from_bytes() {
1457
1457
let e = NumberAny :: try_from ( b"0123" . as_ref ( ) ) . unwrap_err ( ) ;
1458
1458
assert_eq ! ( e. to_string( ) , "invalid number at index 1" ) ;
1459
1459
1460
+ let e = NumberAny :: try_from ( b"NaN" . as_ref ( ) ) . unwrap_err ( ) ;
1461
+ assert_eq ! ( e. to_string( ) , "expected value at index 0" ) ;
1462
+
1460
1463
let too_long = "9" . repeat ( 4309 ) ;
1461
1464
let e = NumberAny :: try_from ( too_long. as_bytes ( ) ) . unwrap_err ( ) ;
1462
1465
assert_eq ! ( e. to_string( ) , "number out of range at index 4301" ) ;
1463
1466
}
1464
1467
1468
+ #[ test]
1469
+ fn test_number_any_try_from_bytes_allow ( ) {
1470
+ let n = NumberAny :: from_bytes ( b"123" , true ) . unwrap ( ) ;
1471
+ assert_eq ! ( n, NumberAny :: Int ( NumberInt :: Int ( 123 ) ) ) ;
1472
+
1473
+ let e = NumberAny :: from_bytes ( b"x23" , true ) . unwrap_err ( ) ;
1474
+ assert_eq ! ( e. to_string( ) , "invalid number at index 0" ) ;
1475
+
1476
+ let n = NumberAny :: from_bytes ( b"NaN" , true ) . unwrap ( ) ;
1477
+ assert_eq ! ( format!( "{n:?}" ) , "Float(NaN)" ) ;
1478
+
1479
+ let n = NumberAny :: from_bytes ( b"Infinity" , true ) . unwrap ( ) ;
1480
+ assert_eq ! ( format!( "{n:?}" ) , "Float(inf)" ) ;
1481
+
1482
+ let e = NumberAny :: from_bytes ( b"NaN" , false ) . unwrap_err ( ) ;
1483
+ assert_eq ! ( e. to_string( ) , "expected value at index 0" ) ;
1484
+ }
1485
+
1465
1486
#[ test]
1466
1487
fn jiter_skip_whole_object ( ) {
1467
1488
let mut jiter = Jiter :: new ( br#"{"x": 1}"# ) ;
0 commit comments