1mod parser;
2mod values;
3
4pub use parser::errors::ParserError;
5pub use values::Token;
6
7pub fn parse_json(json_string: &str) -> Result<Token, ParserError> {
21 let mut parser = parser::JSONParser::new(json_string);
22 parser.parse()
23}
24
25#[cfg(test)]
26mod tests {
27 use super::parse_json;
28 use super::values::Token;
29
30 #[test]
31 fn test_parsing_works() {
32 let result = parse_json(r#"{"a": 1}"#).unwrap();
33 if let Token::Object(object) = result {
34 assert_eq!(object.values.len(), 1);
35 } else {
36 panic!("Token parsed is not a Token::Object()");
37 }
38 }
39
40 #[test]
41 fn test_parsing_fails_for_incorrect_value() {
42 let result = std::panic::catch_unwind(|| parse_json(r#"{a: 1}"#).unwrap());
43 assert!(result.is_err());
44 }
45}