10 | 10 |
attrVal string
|
11 | 11 |
expected string
|
12 | 12 |
}{
|
13 | |
{"xyz", "xyz"},
|
14 | |
{"", ""},
|
15 | |
{"x&z", "x&z"},
|
16 | |
{"x/z", "x/z"},
|
17 | |
{"x'z", "\"x'z\""},
|
18 | |
{"x\"z", "'x\"z'"},
|
19 | |
{"'x\"z'", "'x\"z'"},
|
20 | |
{"'x'\"'z'", "\"x'"'z\""},
|
21 | |
{"\"x"'"z\"", "'x\"'\"z'"},
|
22 | |
{"\"x'z\"", "\"x'z\""},
|
23 | |
{"'x"z'", "'x\"z'"},
|
24 | |
{"'x\">'", "'x\">'"},
|
25 | |
{"You're encouraged to log in; however, it's not mandatory. [o]", "\"You're encouraged to log in; however, it's not mandatory. [o]\""},
|
26 | |
{"a'b=\"\"", "'a'b=\"\"'"},
|
27 | |
{"x<z", "\"x<z\""},
|
28 | |
{"'x\"'\"z'", "'x\"'\"z'"},
|
|
13 |
{`xyz`, `xyz`},
|
|
14 |
{``, ``},
|
|
15 |
{`x&z`, `x&z`},
|
|
16 |
{`x/z`, `x/z`},
|
|
17 |
{`x'z`, `"x'z"`},
|
|
18 |
{`x"z`, `'x"z'`},
|
|
19 |
{`'x"z'`, `'x"z'`},
|
|
20 |
{`'x'"'z'`, `"x'"'z"`},
|
|
21 |
{`"x"'"z"`, `'x"'"z'`},
|
|
22 |
{`"x'z"`, `"x'z"`},
|
|
23 |
{`'x"z'`, `'x"z'`},
|
|
24 |
{`'x">'`, `'x">'`},
|
|
25 |
{`You're encouraged to log in; however, it's not mandatory. [o]`, `"You're encouraged to log in; however, it's not mandatory. [o]"`},
|
|
26 |
{`a'b=""`, `'a'b=""'`},
|
|
27 |
{`x<z`, `"x<z"`},
|
|
28 |
{`'x"'"z'`, `'x"'"z'`},
|
29 | 29 |
}
|
30 | 30 |
var buf []byte
|
31 | 31 |
for _, tt := range escapeAttrValTests {
|
|
35 | 35 |
if len(b) > 1 && (b[0] == '"' || b[0] == '\'') && b[0] == b[len(b)-1] {
|
36 | 36 |
b = b[1 : len(b)-1]
|
37 | 37 |
}
|
38 | |
val := EscapeAttrVal(&buf, orig, []byte(b))
|
|
38 |
val := EscapeAttrVal(&buf, orig, []byte(b), false)
|
39 | 39 |
test.String(t, string(val), tt.expected)
|
40 | 40 |
})
|
41 | 41 |
}
|
42 | 42 |
}
|
|
43 |
|
|
44 |
func TestEscapeAttrValXML(t *testing.T) {
|
|
45 |
var escapeAttrValTests = []struct {
|
|
46 |
attrVal string
|
|
47 |
expected string
|
|
48 |
}{
|
|
49 |
{`xyz`, `"xyz"`},
|
|
50 |
{``, `""`},
|
|
51 |
}
|
|
52 |
var buf []byte
|
|
53 |
for _, tt := range escapeAttrValTests {
|
|
54 |
t.Run(tt.attrVal, func(t *testing.T) {
|
|
55 |
b := []byte(tt.attrVal)
|
|
56 |
orig := b
|
|
57 |
if len(b) > 1 && (b[0] == '"' || b[0] == '\'') && b[0] == b[len(b)-1] {
|
|
58 |
b = b[1 : len(b)-1]
|
|
59 |
}
|
|
60 |
val := EscapeAttrVal(&buf, orig, []byte(b), true)
|
|
61 |
test.String(t, string(val), tt.expected)
|
|
62 |
})
|
|
63 |
}
|
|
64 |
}
|