Skip to content

Commit b5f49b8

Browse files
committed
update object value test
1 parent 27676f0 commit b5f49b8

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

src/parser.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,8 @@ make_parser!(
574574

575575
make_parser!(
576576
ObjectValue(input: char, constant: &bool) -> Value {
577-
between(char('{'), char('}'), many::<Vec<_>,_>(ObjectField::new(constant)))
577+
between(char('{')
578+
.skip(many::<Vec<_>,_>(or(WhiteSpace::new(), LineTerminator::new(&true)))), char('}'), many::<Vec<_>,_>(ObjectField::new(constant)))
578579
.skip(many::<Vec<_>,_>(or(WhiteSpace::new(), LineTerminator::new(&true))))
579580
.map(|fields| {
580581
let mut result = HashMap::new();
@@ -607,6 +608,8 @@ mod tests {
607608
use super::*;
608609
use combine::{State, Parser};
609610

611+
use std::collections::HashMap;
612+
610613
macro_rules! assert_successful_parse {
611614
// base case
612615
() => {};
@@ -789,5 +792,17 @@ mod tests {
789792
assert_successful_parse!(EnumValue, "test", Value::Enum(String::from("test")));
790793
}
791794

792-
// TODO add tests for object value
795+
#[test]
796+
fn test_parse_objectvalue_empty() {
797+
assert_successful_parse!(ObjectValue::new(&true), "{}", Value::Object(HashMap::new()));
798+
}
799+
800+
#[test]
801+
fn test_parse_objectvalue_onefield() {
802+
let mut map = HashMap::new();
803+
map.insert(String::from("x"), Value::Int(1));
804+
let value = Value::Object(map);
805+
806+
assert_successful_parse!(ObjectValue::new(&true), "{ x : 1 }", value);
807+
}
793808
}

0 commit comments

Comments
 (0)