@@ -1467,11 +1467,32 @@ fn test_number_any_try_from_bytes() {
14671467 let e = NumberAny :: try_from ( b"0123" . as_ref ( ) ) . unwrap_err ( ) ;
14681468 assert_eq ! ( e. to_string( ) , "invalid number at index 1" ) ;
14691469
1470+ let e = NumberAny :: try_from ( b"NaN" . as_ref ( ) ) . unwrap_err ( ) ;
1471+ assert_eq ! ( e. to_string( ) , "expected value at index 0" ) ;
1472+
14701473 let too_long = "9" . repeat ( 4309 ) ;
14711474 let e = NumberAny :: try_from ( too_long. as_bytes ( ) ) . unwrap_err ( ) ;
14721475 assert_eq ! ( e. to_string( ) , "number out of range at index 4301" ) ;
14731476}
14741477
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+
14751496#[ test]
14761497fn jiter_skip_whole_object ( ) {
14771498 let mut jiter = Jiter :: new ( br#"{"x": 1}"# ) ;
0 commit comments