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