]> Cypherpunks repositories - gostls13.git/commitdiff
html: add escaping tests
authorAndrew Gerrand <adg@golang.org>
Wed, 10 Jul 2013 07:31:46 +0000 (17:31 +1000)
committerAndrew Gerrand <adg@golang.org>
Wed, 10 Jul 2013 07:31:46 +0000 (17:31 +1000)
R=golang-dev, dsymonds, bradfitz
CC=golang-dev
https://golang.org/cl/11095043

src/pkg/html/escape_test.go [new file with mode: 0644]

diff --git a/src/pkg/html/escape_test.go b/src/pkg/html/escape_test.go
new file mode 100644 (file)
index 0000000..b405d4b
--- /dev/null
@@ -0,0 +1,97 @@
+// Copyright 2013 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package html
+
+import "testing"
+
+type unescapeTest struct {
+       // A short description of the test case.
+       desc string
+       // The HTML text.
+       html string
+       // The unescaped text.
+       unescaped string
+}
+
+var unescapeTests = []unescapeTest{
+       // Handle no entities.
+       {
+               "copy",
+               "A\ttext\nstring",
+               "A\ttext\nstring",
+       },
+       // Handle simple named entities.
+       {
+               "simple",
+               "&amp; &gt; &lt;",
+               "& > <",
+       },
+       // Handle hitting the end of the string.
+       {
+               "stringEnd",
+               "&amp &amp",
+               "& &",
+       },
+       // Handle entities with two codepoints.
+       {
+               "multiCodepoint",
+               "text &gesl; blah",
+               "text \u22db\ufe00 blah",
+       },
+       // Handle decimal numeric entities.
+       {
+               "decimalEntity",
+               "Delta = &#916; ",
+               "Delta = Δ ",
+       },
+       // Handle hexadecimal numeric entities.
+       {
+               "hexadecimalEntity",
+               "Lambda = &#x3bb; = &#X3Bb ",
+               "Lambda = λ = λ ",
+       },
+       // Handle numeric early termination.
+       {
+               "numericEnds",
+               "&# &#x &#128;43 &copy = &#169f = &#xa9",
+               "&# &#x €43 © = ©f = ©",
+       },
+       // Handle numeric ISO-8859-1 entity replacements.
+       {
+               "numericReplacements",
+               "Footnote&#x87;",
+               "Footnote‡",
+       },
+}
+
+func TestUnescape(t *testing.T) {
+       for _, tt := range unescapeTests {
+               unescaped := UnescapeString(tt.html)
+               if unescaped != tt.unescaped {
+                       t.Errorf("TestUnescape %s: want %q, got %q", tt.desc, tt.unescaped, unescaped)
+               }
+       }
+}
+
+func TestUnescapeEscape(t *testing.T) {
+       ss := []string{
+               ``,
+               `abc def`,
+               `a & b`,
+               `a&amp;b`,
+               `a &amp b`,
+               `&quot;`,
+               `"`,
+               `"<&>"`,
+               `&quot;&lt;&amp;&gt;&quot;`,
+               `3&5==1 && 0<1, "0&lt;1", a+acute=&aacute;`,
+               `The special characters are: <, >, &, ' and "`,
+       }
+       for _, s := range ss {
+               if got := UnescapeString(EscapeString(s)); got != s {
+                       t.Errorf("got %q want %q", got, s)
+               }
+       }
+}