@@ -0,0 +1,52 @@
7+func TestEscapeContent(t *testing.T) {
14+ name: "nothing to escape",
15+ input: "Hello, World!",
16+ expected: "Hello, World!",
19+ name: "escape csi sequences",
20+ input: "\x1b[31mRed Text\x1b[0m",
21+ expected: "\\x1b[31mRed Text\\x1b[0m",
24+ name: "escape control characters",
25+ input: "Hello\x00World\x7f!",
26+ expected: "Hello\\x00World\\x7f!",
29+ name: "escape csi sequences with control characters",
30+ input: "\x1b[31mHello\x00World\x7f!\x1b[0m",
31+ expected: "\\x1b[31mHello\\x00World\\x7f!\\x1b[0m",
34+ name: "just unicode",
35+ input: "こんにちは", // "Hello" in Japanese
39+ name: "unicode with csi sequences and control characters",
40+ input: "\x1b[31mこんにちは\x00World\x7f!\x1b[0m",
41+ expected: "\\x1b[31mこんにちは\\x00World\\x7f!\\x1b[0m",
44+ for i, c := range cases {
45+ t.Run(c.name, func(t *testing.T) {
46+ result := escapeContent(nil, c.input)
47+ if result != c.expected {
48+ t.Errorf("case %d, expected %q, got %q", i+1, c.expected, result)