aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/tdewolff/parse/xml/util_test.go
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2017-11-19 21:10:04 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2017-11-19 22:01:46 -0800
commit8ffb773f43c8dc54801ca1d111854e7e881c93c9 (patch)
tree38133a2fc612597a75fed1d13e5b4042f58a2b7e /vendor/github.com/tdewolff/parse/xml/util_test.go
First commit
Diffstat (limited to 'vendor/github.com/tdewolff/parse/xml/util_test.go')
-rw-r--r--vendor/github.com/tdewolff/parse/xml/util_test.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/vendor/github.com/tdewolff/parse/xml/util_test.go b/vendor/github.com/tdewolff/parse/xml/util_test.go
new file mode 100644
index 0000000..65be6b8
--- /dev/null
+++ b/vendor/github.com/tdewolff/parse/xml/util_test.go
@@ -0,0 +1,63 @@
+package xml // import "github.com/tdewolff/parse/xml"
+
+import (
+ "testing"
+
+ "github.com/tdewolff/test"
+)
+
+func TestEscapeAttrVal(t *testing.T) {
+ var attrValTests = []struct {
+ attrVal string
+ expected string
+ }{
+ {"xyz", "\"xyz\""},
+ {"", "\"\""},
+ {"x&amp;z", "\"x&amp;z\""},
+ {"x'z", "\"x'z\""},
+ {"x\"z", "'x\"z'"},
+ {"a'b=\"\"", "'a&#39;b=\"\"'"},
+ {"'x&#39;\"&#39;z'", "\"x'&#34;'z\""},
+ {"\"x&#34;'&#34;z\"", "'x\"&#39;\"z'"},
+ {"a&#39;b=\"\"", "'a&#39;b=\"\"'"},
+ }
+ var buf []byte
+ for _, tt := range attrValTests {
+ t.Run(tt.attrVal, func(t *testing.T) {
+ b := []byte(tt.attrVal)
+ if len(b) > 1 && (b[0] == '"' || b[0] == '\'') && b[0] == b[len(b)-1] {
+ b = b[1 : len(b)-1]
+ }
+ val := EscapeAttrVal(&buf, []byte(b))
+ test.String(t, string(val), tt.expected)
+ })
+ }
+}
+
+func TestEscapeCDATAVal(t *testing.T) {
+ var CDATAValTests = []struct {
+ CDATAVal string
+ expected string
+ }{
+ {"<![CDATA[<b>]]>", "&lt;b>"},
+ {"<![CDATA[abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz]]>", "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"},
+ {"<![CDATA[ <b> ]]>", " &lt;b> "},
+ {"<![CDATA[<<<<<]]>", "<![CDATA[<<<<<]]>"},
+ {"<![CDATA[&]]>", "&amp;"},
+ {"<![CDATA[&&&&]]>", "<![CDATA[&&&&]]>"},
+ {"<![CDATA[ a ]]>", " a "},
+ {"<![CDATA[]]>", ""},
+ }
+ var buf []byte
+ for _, tt := range CDATAValTests {
+ t.Run(tt.CDATAVal, func(t *testing.T) {
+ b := []byte(tt.CDATAVal[len("<![CDATA[") : len(tt.CDATAVal)-len("]]>")])
+ data, useText := EscapeCDATAVal(&buf, b)
+ text := string(data)
+ if !useText {
+ text = "<![CDATA[" + text + "]]>"
+ }
+ test.String(t, text, tt.expected)
+ })
+ }
+}