use serde_json::json;
use teaql_tool_std::json::JsonTool;
#[test]
fn test_json_operations() {
let tool = JsonTool::new();
let v = tool.parse(r#"{"a": 1}"#).unwrap();
assert_eq!(v["a"], 1);
let s = tool.stringify(&v).unwrap();
assert_eq!(s, r#"{"a":1}"#);
let val = tool.get(&v, "/a").unwrap();
assert_eq!(val, &json!(1));
let mut v2 = v.clone();
tool.set(&mut v2, "/b", json!(2)).unwrap();
assert_eq!(v2["b"], 2);
tool.remove(&mut v2, "/a").unwrap();
assert!(!tool.has(&v2, "/a"));
assert!(tool.has(&v2, "/b"));
let v3 = tool.merge(&v, &json!({"b": 2}));
assert_eq!(v3["a"], 1);
assert_eq!(v3["b"], 2);
let diff = tool.diff(&v, &v3);
assert!(!diff.is_empty());
let mut v4 = v.clone();
tool.patch(&mut v4, &diff).unwrap();
assert_eq!(v4, v3);
}