Files

159 lines
3.7 KiB
JSON

{
"version": "1.4",
"category": "decode",
"description": "Primitive value decoding - strings, numbers, booleans, null, unescaping",
"tests": [
{
"name": "parses safe unquoted string",
"input": "hello",
"expected": "hello",
"specSection": "7.4"
},
{
"name": "parses unquoted string with underscore and numbers",
"input": "Ada_99",
"expected": "Ada_99",
"specSection": "7.4"
},
{
"name": "parses empty quoted string",
"input": "\"\"",
"expected": "",
"specSection": "7.4"
},
{
"name": "parses quoted string with newline escape",
"input": "\"line1\\nline2\"",
"expected": "line1\nline2",
"specSection": "7.1"
},
{
"name": "parses quoted string with tab escape",
"input": "\"tab\\there\"",
"expected": "tab\there",
"specSection": "7.1"
},
{
"name": "parses quoted string with carriage return escape",
"input": "\"return\\rcarriage\"",
"expected": "return\rcarriage",
"specSection": "7.1"
},
{
"name": "parses quoted string with backslash escape",
"input": "\"C:\\\\Users\\\\path\"",
"expected": "C:\\Users\\path",
"specSection": "7.1"
},
{
"name": "parses quoted string with escaped quotes",
"input": "\"say \\\"hello\\\"\"",
"expected": "say \"hello\"",
"specSection": "7.1"
},
{
"name": "parses Unicode string",
"input": "café",
"expected": "café",
"specSection": "7.4"
},
{
"name": "parses Chinese characters",
"input": "你好",
"expected": "你好",
"specSection": "7.4"
},
{
"name": "parses emoji",
"input": "🚀",
"expected": "🚀",
"specSection": "7.4"
},
{
"name": "parses string with emoji and spaces",
"input": "hello 👋 world",
"expected": "hello 👋 world",
"specSection": "7.4"
},
{
"name": "parses positive integer",
"input": "42",
"expected": 42,
"specSection": "4"
},
{
"name": "parses decimal number",
"input": "3.14",
"expected": 3.14,
"specSection": "4"
},
{
"name": "parses negative integer",
"input": "-7",
"expected": -7,
"specSection": "4"
},
{
"name": "parses true",
"input": "true",
"expected": true,
"specSection": "4"
},
{
"name": "parses false",
"input": "false",
"expected": false,
"specSection": "4"
},
{
"name": "parses null",
"input": "null",
"expected": null,
"specSection": "4"
},
{
"name": "respects ambiguity quoting for true",
"input": "\"true\"",
"expected": "true",
"specSection": "7.4",
"note": "Quoted primitive remains string"
},
{
"name": "respects ambiguity quoting for false",
"input": "\"false\"",
"expected": "false",
"specSection": "7.4"
},
{
"name": "respects ambiguity quoting for null",
"input": "\"null\"",
"expected": "null",
"specSection": "7.4"
},
{
"name": "respects ambiguity quoting for integer",
"input": "\"42\"",
"expected": "42",
"specSection": "7.4"
},
{
"name": "respects ambiguity quoting for negative decimal",
"input": "\"-3.14\"",
"expected": "-3.14",
"specSection": "7.4"
},
{
"name": "respects ambiguity quoting for scientific notation",
"input": "\"1e-6\"",
"expected": "1e-6",
"specSection": "7.4"
},
{
"name": "respects ambiguity quoting for leading-zero",
"input": "\"05\"",
"expected": "05",
"specSection": "7.4"
}
]
}