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