| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package html // import "github.com/tdewolff/parse/html"
- import (
- "testing"
- "github.com/tdewolff/test"
- )
- func TestEscapeAttrVal(t *testing.T) {
- var escapeAttrValTests = []struct {
- attrVal string
- expected string
- }{
- {"xyz", "xyz"},
- {"", ""},
- {"x&z", "x&z"},
- {"x/z", "x/z"},
- {"x'z", "\"x'z\""},
- {"x\"z", "'x\"z'"},
- {"'x\"z'", "'x\"z'"},
- {"'x'\"'z'", "\"x'"'z\""},
- {"\"x"'"z\"", "'x\"'\"z'"},
- {"\"x'z\"", "\"x'z\""},
- {"'x"z'", "'x\"z'"},
- {"'x\">'", "'x\">'"},
- {"You're encouraged to log in; however, it's not mandatory. [o]", "\"You're encouraged to log in; however, it's not mandatory. [o]\""},
- {"a'b=\"\"", "'a'b=\"\"'"},
- {"x<z", "\"x<z\""},
- {"'x\"'\"z'", "'x\"'\"z'"},
- }
- var buf []byte
- for _, tt := range escapeAttrValTests {
- t.Run(tt.attrVal, func(t *testing.T) {
- b := []byte(tt.attrVal)
- orig := b
- if len(b) > 1 && (b[0] == '"' || b[0] == '\'') && b[0] == b[len(b)-1] {
- b = b[1 : len(b)-1]
- }
- val := EscapeAttrVal(&buf, orig, []byte(b))
- test.String(t, string(val), tt.expected)
- })
- }
- }
|