Skip to content

Commit

Permalink
add test detailing unexpected behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
knickish committed Dec 16, 2023
1 parent aeb86ae commit b55e8d3
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
27 changes: 27 additions & 0 deletions tests/json.rs
Original file line number Diff line number Diff line change
Expand Up @@ -842,3 +842,30 @@ fn array_leak_test() {

assert!(TOGGLED_ON_DROP.load(std::sync::atomic::Ordering::SeqCst))
}

// https://github.com/not-fl3/nanoserde/issues/89
#[test]
fn test_deser_oversized_value() {
use nanoserde::DeJson;

#[derive(DeJson, Clone, PartialEq, Debug)]
pub struct EnumConstant {
value: i32,
}
let max_json = format!(r#"{{"value": {} }}"#, i32::MAX);
let wrap_json = format!(r#"{{"value": {} }}"#, i32::MAX as i64 + 1);
assert_eq!(
<EnumConstant as DeJson>::deserialize_json(&max_json).unwrap(),
EnumConstant { value: i32::MAX }
);
assert_eq!(
<EnumConstant as DeJson>::deserialize_json(&wrap_json)
.unwrap_err()
.msg,
format!(
"Value out of range {}>{} ",
(i32::MAX as i64 + 1).to_string(),
i32::MAX.to_string()
)
);
}
28 changes: 28 additions & 0 deletions tests/ron.rs
Original file line number Diff line number Diff line change
Expand Up @@ -457,3 +457,31 @@ fn array_leak_test() {

assert!(TOGGLED_ON_DROP.load(std::sync::atomic::Ordering::SeqCst))
}

// https://github.com/not-fl3/nanoserde/issues/89
#[test]
fn test_deser_oversized_value() {
use nanoserde::DeRon;

#[derive(DeRon, Clone, PartialEq, Debug)]
pub struct EnumConstant {
value: i32,
}

let max_ron = format!(r#"(value:{})"#, i32::MAX);
let wrap_ron = format!(r#"(value:{})"#, i32::MAX as i64 + 1);
assert_eq!(
<EnumConstant as DeRon>::deserialize_ron(&max_ron).unwrap(),
EnumConstant { value: i32::MAX }
);
assert_eq!(
<EnumConstant as DeRon>::deserialize_ron(&wrap_ron)
.unwrap_err()
.msg,
format!(
"Value out of range {}>{} ",
(i32::MAX as i64 + 1).to_string(),
i32::MAX.to_string()
)
);
}

0 comments on commit b55e8d3

Please sign in to comment.