============================================================================= Encoding safety tests ============================================================================= Verifies: SYS-REQ-092 MCDC SYS-REQ-092: getstring_input_has_escaped_unicode=T, getstring_decodes_and_preserves_semantics=T
(t *testing.T)
| 476 | // Verifies: SYS-REQ-092 |
| 477 | // MCDC SYS-REQ-092: getstring_input_has_escaped_unicode=T, getstring_decodes_and_preserves_semantics=T => TRUE |
| 478 | func TestGetStringEncodingSafety(t *testing.T) { |
| 479 | cases := []struct { |
| 480 | name string |
| 481 | jsonData string |
| 482 | key string |
| 483 | expected string |
| 484 | }{ |
| 485 | {name: "basic latin escape", jsonData: `{"s":"\u0041"}`, key: "s", expected: "A"}, |
| 486 | {name: "e-acute", jsonData: `{"s":"\u00e9"}`, key: "s", expected: "\u00e9"}, |
| 487 | {name: "emoji surrogate pair", jsonData: `{"s":"\uD83D\uDE00"}`, key: "s", expected: "\U0001F600"}, |
| 488 | {name: "newline escape", jsonData: `{"s":"line1\nline2"}`, key: "s", expected: "line1\nline2"}, |
| 489 | {name: "tab escape", jsonData: `{"s":"col1\tcol2"}`, key: "s", expected: "col1\tcol2"}, |
| 490 | {name: "backslash escape", jsonData: `{"s":"path\\to\\file"}`, key: "s", expected: `path\to\file`}, |
| 491 | {name: "quote escape", jsonData: `{"s":"say \"hello\""}`, key: "s", expected: `say "hello"`}, |
| 492 | {name: "solidus escape", jsonData: `{"s":"a\/b"}`, key: "s", expected: "a/b"}, |
| 493 | } |
| 494 | for _, tc := range cases { |
| 495 | t.Run(tc.name, func(t *testing.T) { |
| 496 | val, err := GetString([]byte(tc.jsonData), tc.key) |
| 497 | if err != nil { |
| 498 | t.Fatalf("GetString returned error: %v", err) |
| 499 | } |
| 500 | if val != tc.expected { |
| 501 | t.Fatalf("GetString decoded %q, expected %q", val, tc.expected) |
| 502 | } |
| 503 | }) |
| 504 | } |
| 505 | } |
| 506 | |
| 507 | // Verifies: SYS-REQ-108 |
| 508 | // MCDC SYS-REQ-108: parsestring_input_has_standard_escapes=T, parsestring_roundtrip_preserves_semantics=T => TRUE |
nothing calls this directly
no test coverage detected
searching dependent graphs…