diff --git a/tests/json/json-superset/jsfmt.spec.js b/tests/json/json-superset/jsfmt.spec.js new file mode 100644 index 000000000..4bc498ad7 --- /dev/null +++ b/tests/json/json-superset/jsfmt.spec.js @@ -0,0 +1,78 @@ +const LINE_SEPARATOR = "\u2028"; +const PARAGRAPH_SEPARATOR = "\u2029"; +const SPACE = " "; +const LINE_FEED = "\n"; +const UNDERSCORE = "_"; +const BACKSLASH = "\\"; +const SINGLE_QUOTE = "'"; +const DOUBLE_QUOTE = '"'; + +const characters = [LINE_SEPARATOR, PARAGRAPH_SEPARATOR, UNDERSCORE, SPACE]; +const characterCode = (character) => + `U+${character.charCodeAt(0).toString(16).toUpperCase().padStart(4, "0")}`; + +run_spec( + { + dirname: __dirname, + snippets: [ + ...characters.map((character) => ({ + name: `json(${characterCode(character)})`, + code: SINGLE_QUOTE + character + SINGLE_QUOTE, + output: DOUBLE_QUOTE + character + DOUBLE_QUOTE + LINE_FEED, + })), + ...[...characters, LINE_FEED].map((character) => ({ + name: `json(\\${characterCode(character)})`, + code: SINGLE_QUOTE + BACKSLASH + character + SINGLE_QUOTE, + output: + character === UNDERSCORE || character === SPACE + ? DOUBLE_QUOTE + character + DOUBLE_QUOTE + LINE_FEED + : DOUBLE_QUOTE + BACKSLASH + character + DOUBLE_QUOTE + LINE_FEED, + })), + ...characters.map((character) => ({ + name: `json(\\\\${characterCode(character)})`, + code: SINGLE_QUOTE + BACKSLASH + BACKSLASH + character + SINGLE_QUOTE, + output: + DOUBLE_QUOTE + + BACKSLASH + + BACKSLASH + + character + + DOUBLE_QUOTE + + LINE_FEED, + })), + ], + }, + ["json", "json5"] +); + +run_spec( + { + dirname: __dirname, + snippets: [ + ...characters.map((character) => ({ + name: `json-stringify(${characterCode(character)})`, + code: SINGLE_QUOTE + character + SINGLE_QUOTE, + output: DOUBLE_QUOTE + character + DOUBLE_QUOTE + LINE_FEED, + })), + ...[...characters, LINE_FEED].map((character) => ({ + name: `json-stringify(\\${characterCode(character)})`, + code: SINGLE_QUOTE + BACKSLASH + character + SINGLE_QUOTE, + output: + character === UNDERSCORE || character === SPACE + ? DOUBLE_QUOTE + character + DOUBLE_QUOTE + LINE_FEED + : DOUBLE_QUOTE + DOUBLE_QUOTE + LINE_FEED, + })), + ...characters.map((character) => ({ + name: `json-stringify(\\\\${characterCode(character)})`, + code: SINGLE_QUOTE + BACKSLASH + BACKSLASH + character + SINGLE_QUOTE, + output: + DOUBLE_QUOTE + + BACKSLASH + + BACKSLASH + + character + + DOUBLE_QUOTE + + LINE_FEED, + })), + ], + }, + ["json-stringify"] +); diff --git a/tests_config/utils/check-parsers.js b/tests_config/utils/check-parsers.js index dfd2b683c..38ba9966f 100644 --- a/tests_config/utils/check-parsers.js +++ b/tests_config/utils/check-parsers.js @@ -67,7 +67,7 @@ const categoryParsers = new Map([ "json", { parsers: ["json", "json5", "json-stringify"], - verifyParsers: [], + verifyParsers: ["json", "json5", "json-stringify"], extensions: [".json"], }, ],