From f22920828085e6e0c7ba74bbaba13f01d9b8e93f Mon Sep 17 00:00:00 2001 From: Timothy Warren Date: Fri, 16 Apr 2021 23:04:57 -0400 Subject: [PATCH] Check for empty input --- src/lib.rs | 6 ++++++ tests/error_tests.rs | 12 ++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 95e673e..0d1d5e8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -654,6 +654,12 @@ impl JSON { /// # assert!(parse_result.is_ok(), "Parse method example failed"); /// ``` pub fn parse(json: &str) -> JSONResult { + if json.len() == 0 { + return Err(ParseError::UnexpectedEndOfInput(format!( + "Empty input" + ))) + } + JSON::new(json).parse_value() } } diff --git a/tests/error_tests.rs b/tests/error_tests.rs index b061960..063b7f1 100644 --- a/tests/error_tests.rs +++ b/tests/error_tests.rs @@ -26,12 +26,20 @@ fn bad_object_trailing_comma() { fn bad_json() { let res = JSON::parse(r#"5eq"#); assert!(res.is_err()); - println!("{:#?}", res); +} + +#[test] +fn empty_json() { + let res: JSONResult = JSON::parse(""); + assert_eq!( + res, + Err(ParseError::UnexpectedEndOfInput(String::from("Empty input"))) + ) } #[test] #[should_panic] fn invalid_unwrap() { let wrapped = JSONValue::from(5.2f64); - let invalid: String = wrapped.unwrap(); + let _: String = wrapped.unwrap(); }