1package messages
2
3import (
4 "testing"
5)
6
7func TestEscapeContent(t *testing.T) {
8 cases := []struct {
9 name string
10 input string
11 expected string
12 }{
13 {
14 name: "nothing to escape",
15 input: "Hello, World!",
16 expected: "Hello, World!",
17 },
18 {
19 name: "escape csi sequences",
20 input: "\x1b[31mRed Text\x1b[0m",
21 expected: "\\x1b[31mRed Text\\x1b[0m",
22 },
23 {
24 name: "escape control characters",
25 input: "Hello\x00World\x7f!",
26 expected: "Hello\\x00World\\x7f!",
27 },
28 {
29 name: "escape csi sequences with control characters",
30 input: "\x1b[31mHello\x00World\x7f!\x1b[0m",
31 expected: "\\x1b[31mHello\\x00World\\x7f!\\x1b[0m",
32 },
33 {
34 name: "just unicode",
35 input: "ใใใซใกใฏ", // "Hello" in Japanese
36 expected: "ใใใซใกใฏ",
37 },
38 {
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",
42 },
43 }
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)
49 }
50 })
51 }
52}