OSDN Git Service

new repo
[bytom/vapor.git] / vendor / golang.org / x / net / html / escape_test.go
1 // Copyright 2013 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package html
6
7 import "testing"
8
9 type unescapeTest struct {
10         // A short description of the test case.
11         desc string
12         // The HTML text.
13         html string
14         // The unescaped text.
15         unescaped string
16 }
17
18 var unescapeTests = []unescapeTest{
19         // Handle no entities.
20         {
21                 "copy",
22                 "A\ttext\nstring",
23                 "A\ttext\nstring",
24         },
25         // Handle simple named entities.
26         {
27                 "simple",
28                 "& > <",
29                 "& > <",
30         },
31         // Handle hitting the end of the string.
32         {
33                 "stringEnd",
34                 "&amp &amp",
35                 "& &",
36         },
37         // Handle entities with two codepoints.
38         {
39                 "multiCodepoint",
40                 "text &gesl; blah",
41                 "text \u22db\ufe00 blah",
42         },
43         // Handle decimal numeric entities.
44         {
45                 "decimalEntity",
46                 "Delta = &#916; ",
47                 "Delta = Δ ",
48         },
49         // Handle hexadecimal numeric entities.
50         {
51                 "hexadecimalEntity",
52                 "Lambda = &#x3bb; = &#X3Bb ",
53                 "Lambda = λ = λ ",
54         },
55         // Handle numeric early termination.
56         {
57                 "numericEnds",
58                 "&# &#x &#128;43 &copy = &#169f = &#xa9",
59                 "&# &#x €43 © = ©f = ©",
60         },
61         // Handle numeric ISO-8859-1 entity replacements.
62         {
63                 "numericReplacements",
64                 "Footnote&#x87;",
65                 "Footnote‡",
66         },
67 }
68
69 func TestUnescape(t *testing.T) {
70         for _, tt := range unescapeTests {
71                 unescaped := UnescapeString(tt.html)
72                 if unescaped != tt.unescaped {
73                         t.Errorf("TestUnescape %s: want %q, got %q", tt.desc, tt.unescaped, unescaped)
74                 }
75         }
76 }
77
78 func TestUnescapeEscape(t *testing.T) {
79         ss := []string{
80                 ``,
81                 `abc def`,
82                 `a & b`,
83                 `a&amp;b`,
84                 `a &amp b`,
85                 `&quot;`,
86                 `"`,
87                 `"<&>"`,
88                 `&quot;&lt;&amp;&gt;&quot;`,
89                 `3&5==1 && 0<1, "0&lt;1", a+acute=&aacute;`,
90                 `The special characters are: <, >, &, ' and "`,
91         }
92         for _, s := range ss {
93                 if got := UnescapeString(EscapeString(s)); got != s {
94                         t.Errorf("got %q want %q", got, s)
95                 }
96         }
97 }