forgecode / crates /forge_json_repair /tests /comments_unicode.rs
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
1851bae verified
Raw History Blame Contribute Delete
1.98 kB
use forge_json_repair::json_repair;
use pretty_assertions::assert_eq;
#[test]
fn test_remove_comments() {
let fixture = r#"/* foo */ {}"#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!({});
assert_eq!(actual, expected);
let fixture = r#"{} /* foo */"#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!({});
assert_eq!(actual, expected);
let fixture = r#"{"a":"foo",/*hello*/"b":"bar"}"#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!({"a": "foo", "b": "bar"});
assert_eq!(actual, expected);
let fixture = r#"{} // comment"#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!({});
assert_eq!(actual, expected);
// Should not remove comments inside strings
let fixture = r#""/* foo */""#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!("/* foo */");
assert_eq!(actual, expected);
}
#[test]
fn test_unicode_support() {
// Unicode characters in strings
let fixture = r#""β˜…""#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!("β˜…");
assert_eq!(actual, expected);
let fixture = r#""πŸ˜€""#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!("πŸ˜€");
assert_eq!(actual, expected);
// Escaped unicode
let fixture = r#""\\u2605""#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!("\\u2605");
assert_eq!(actual, expected);
// Unicode in keys
let fixture = r#"{"β˜…":true}"#;
let actual = json_repair::<serde_json::Value>(fixture).unwrap();
let expected = serde_json::json!({"β˜…": true});
assert_eq!(actual, expected);
}