1use super::*;
3use autocorrect_derive::GrammarParser;
4use pest::Parser as P;
5use pest_derive::Parser;
6
7#[derive(GrammarParser, Parser)]
8#[grammar = "../grammar/json.pest"]
9struct JSONParser;
10
11#[cfg(test)]
12mod tests {
13 use super::*;
14 use indoc::indoc;
15 use pretty_assertions::assert_eq;
16
17 #[test]
18 fn it_format_json() {
19 let example = indoc! {r###"
20 {
21 "name": "你好hello世界 \"World\"",
22 "displayName": "JSON格式测试",
23 "publisher": "huacnlee",
24 "meta": {
25 // 第1行注释
26 "title": "第1个meta",
27 /**
28 * 第2行注释
29 * 第3行注释
30 */
31 "description" : "第2个meta",
32 "测试key不格式化":
33 "Value要格式化",
34 },
35 "array": [
36 "hello你好",
37 "你好hello",
38 ],
39 }
40 "###};
41
42 let expect = indoc! {r###"
43 {
44 "name": "你好 hello 世界 \"World\"",
45 "displayName": "JSON 格式测试",
46 "publisher": "huacnlee",
47 "meta": {
48 // 第 1 行注释
49 "title": "第 1 个 meta",
50 /**
51 * 第 2 行注释
52 * 第 3 行注释
53 */
54 "description" : "第 2 个 meta",
55 "测试key不格式化":
56 "Value 要格式化",
57 },
58 "array": [
59 "hello 你好",
60 "你好 hello",
61 ],
62 }
63 "###};
64
65 assert_eq!(expect, format_for(example, "json").to_string());
66 }
67}