From ef1a9f502936b1f38968bdca3ef06ee1481665b8 Mon Sep 17 00:00:00 2001 From: Schrottkatze Date: Wed, 30 Oct 2024 10:57:52 +0100 Subject: [PATCH 1/2] json-pawarser: test grammar::member --- crates/json-pawarser/src/grammar/object.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/crates/json-pawarser/src/grammar/object.rs b/crates/json-pawarser/src/grammar/object.rs index d72dcdc..c1341fd 100644 --- a/crates/json-pawarser/src/grammar/object.rs +++ b/crates/json-pawarser/src/grammar/object.rs @@ -61,3 +61,17 @@ fn member(p: &mut Parser) -> Option { ) } } + +#[cfg(test)] +mod tests { + use crate::grammar::{object::member, test_utils::gen_checks}; + + #[test] + fn member_basic() { + gen_checks! {member; + r#""a": "b""# => r#"ROOT { MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { STRING "\"b\""; } } }"#, + r#""a": 42"# => r#"ROOT { MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { NUMBER "42"; } } }"#, + r#""a":"# => r#"ROOT { MEMBER { PARSE_ERR: MemberMissingValue { MEMBER_NAME { STRING "\"a\""; } COLON ":"; } } }"# + } + } +} From d809d3b52dd79425f15813aedade70e97e8167e1 Mon Sep 17 00:00:00 2001 From: Schrottkatze Date: Wed, 30 Oct 2024 12:27:27 +0100 Subject: [PATCH 2/2] json-pawarser: test grammar::object --- crates/json-pawarser/src/grammar/object.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/crates/json-pawarser/src/grammar/object.rs b/crates/json-pawarser/src/grammar/object.rs index c1341fd..f021306 100644 --- a/crates/json-pawarser/src/grammar/object.rs +++ b/crates/json-pawarser/src/grammar/object.rs @@ -64,7 +64,22 @@ fn member(p: &mut Parser) -> Option { #[cfg(test)] mod tests { - use crate::grammar::{object::member, test_utils::gen_checks}; + use crate::grammar::{ + object::{member, object}, + test_utils::gen_checks, + }; + + #[test] + fn object_basic() { + gen_checks! {object; + r#"{"a": "b"}"# => r#"ROOT { OBJECT { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { STRING "\"b\""; } } BRACE_CLOSE "}"; } }"#, + r#"{"a": 42}"# => r#"ROOT { OBJECT { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { NUMBER "42"; } } BRACE_CLOSE "}"; } }"#, + r#"{"a": "b""# => r#"ROOT { PARSE_ERR: UnclosedObject { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; WHITESPACE " "; MEMBER_VALUE { STRING "\"b\""; } } } }"#, + r#"{"a": }"# => r#"ROOT { OBJECT { BRACE_OPEN "{"; MEMBER { PARSE_ERR: MemberMissingValue { MEMBER_NAME { STRING "\"a\""; } COLON ":"; } } WHITESPACE " "; BRACE_CLOSE "}"; } }"#, + r#"{"a":"# => r#"ROOT { PARSE_ERR: UnclosedObject { BRACE_OPEN "{"; MEMBER { PARSE_ERR: MemberMissingValue { MEMBER_NAME { STRING "\"a\""; } COLON ":"; } } } }"#, + r#"{"a":true,}"# => r#"ROOT { OBJECT { BRACE_OPEN "{"; MEMBER { MEMBER_NAME { STRING "\"a\""; } COLON ":"; MEMBER_VALUE { BOOL "true"; } } TRAILING_COMMA { COMMA ","; } BRACE_CLOSE "}"; } }"# + } + } #[test] fn member_basic() {