use super::{Token, Class};
use super::formatter;
#[test]
fn single_key() {
let id = Token { class: Class::IDENTIFIER, value: Some("key".to_string()) };
let op = Token { class: Class::EQUALS, value: None };
let strn = Token { class: Class::LITERAL, value: Some("value".to_string()) };
let manual_tree = vec![id, op, strn];
let tree = formatter::format(manual_tree);
assert_eq!(format!("{:?}", tree), "{\"key\": \"value\"}");
}
#[test]
fn single_key_escaped_double_quote() {
let id = Token { class: Class::IDENTIFIER, value: Some("key".to_string()) };
let op = Token { class: Class::EQUALS, value: None };
let strn = Token { class: Class::LITERAL, value: Some("\"value".to_string()) };
let manual_tree = vec![id, op, strn];
let tree = formatter::format(manual_tree);
assert_eq!(format!("{:?}", tree), "{\"key\": \"\\\"value\"}");
}
#[test]
fn double_key() {
let id = Token { class: Class::IDENTIFIER, value: Some("key".to_string()) };
let op = Token { class: Class::EQUALS, value: None };
let strn = Token { class: Class::LITERAL, value: Some("value".to_string()) };
let nl = Token { class: Class::NEWLINE, value: None };
let id2 = Token { class: Class::IDENTIFIER, value: Some("key2".to_string()) };
let op2 = Token { class: Class::EQUALS, value: None };
let strn2 = Token { class: Class::LITERAL, value: Some("value2".to_string()) };
let manual_tree = vec![id, op, strn, nl, id2, op2, strn2];
let tree = formatter::format(manual_tree);
if !(tree.get("key").unwrap() == "value") || !(tree.get("key2").unwrap() == "value2") {
println!("{:?}", tree);
panic!();
}
}
#[test]
fn array() {
let id = Token { class: Class::IDENTIFIER, value: Some("key".to_string()) };
let op = Token { class: Class::EQUALS, value: None };
let t1 = Token { class: Class::SEPARATOR, value: Some("[".to_string()) };
let strn = Token { class: Class::LITERAL, value: Some("value".to_string()) };
let t2 = Token { class: Class::SEPARATOR, value: Some(",".to_string()) };
let strn2 = Token { class: Class::LITERAL, value: Some("6".to_string()) };
let t3 = Token { class: Class::SEPARATOR, value: Some("]".to_string()) };
let manual_tree = vec![id, op, t1, strn, t2, strn2, t3];
let tree = formatter::format(manual_tree);
if !(tree.get("key[0]").unwrap() == "value") || !(tree.get("key[1]").unwrap() == "6") || !(tree.get("key").unwrap() == "2") {
println!("{:?}", tree);
panic!();
}
}
#[test]
#[should_panic]
fn unknown_element() {
let t1 = Token { class: Class::IDENTIFIER, value: Some("key".to_string()) };
let t4 = Token { class: Class::EQUALS, value: None };
let t3 = Token { class: Class::UNKNOWN, value: Some("10".to_string()) };
let tree = formatter::format(vec![t1, t4, t3]);
tree.get("key").unwrap();
}