OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.19.4
/
src
/
html
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
π
..
-
12/01/2022 06:13:58 PM
rwxr-xr-x
π
entity.go
114.29 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
entity_test.go
1.14 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
escape.go
5.04 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
escape_test.go
3.26 KB
12/01/2022 06:12:58 PM
rw-r--r--
π
example_test.go
619 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
fuzz.go
644 bytes
12/01/2022 06:12:58 PM
rw-r--r--
π
template
-
12/01/2022 06:13:56 PM
rwxr-xr-x
Editing: escape_test.go
Close
// 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 ( "strings" "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", "& > <", "& > <", }, // Handle hitting the end of the string. { "stringEnd", "& &", "& &", }, // Handle entities with two codepoints. { "multiCodepoint", "text ⋛︀ blah", "text \u22db\ufe00 blah", }, // Handle decimal numeric entities. { "decimalEntity", "Delta = Δ ", "Delta = Ξ ", }, // Handle hexadecimal numeric entities. { "hexadecimalEntity", "Lambda = λ = λ ", "Lambda = Ξ» = Ξ» ", }, // Handle numeric early termination. { "numericEnds", "&# &#x €43 © = ©f = ©", "&# &#x β¬43 Β© = Β©f = Β©", }, // Handle numeric ISO-8859-1 entity replacements. { "numericReplacements", "Footnote‡", "Footnoteβ‘", }, // Handle single ampersand. { "copySingleAmpersand", "&", "&", }, // Handle ampersand followed by non-entity. { "copyAmpersandNonEntity", "text &test", "text &test", }, // Handle "&#". { "copyAmpersandHash", "text &#", "text &#", }, } 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&b`, `a & b`, `"`, `"`, `"<&>"`, `"<&>"`, `3&5==1 && 0<1, "0<1", a+acute=á`, `The special characters are: <, >, &, ' and "`, } for _, s := range ss { if got := UnescapeString(EscapeString(s)); got != s { t.Errorf("got %q want %q", got, s) } } } var ( benchEscapeData = strings.Repeat("AAAAA < BBBBB > CCCCC & DDDDD ' EEEEE \" ", 100) benchEscapeNone = strings.Repeat("AAAAA x BBBBB x CCCCC x DDDDD x EEEEE x ", 100) benchUnescapeSparse = strings.Repeat(strings.Repeat("AAAAA x BBBBB x CCCCC x DDDDD x EEEEE x ", 10)+"&", 10) benchUnescapeDense = strings.Repeat("&< & <", 100) ) func BenchmarkEscape(b *testing.B) { n := 0 for i := 0; i < b.N; i++ { n += len(EscapeString(benchEscapeData)) } } func BenchmarkEscapeNone(b *testing.B) { n := 0 for i := 0; i < b.N; i++ { n += len(EscapeString(benchEscapeNone)) } } func BenchmarkUnescape(b *testing.B) { s := EscapeString(benchEscapeData) n := 0 for i := 0; i < b.N; i++ { n += len(UnescapeString(s)) } } func BenchmarkUnescapeNone(b *testing.B) { s := EscapeString(benchEscapeNone) n := 0 for i := 0; i < b.N; i++ { n += len(UnescapeString(s)) } } func BenchmarkUnescapeSparse(b *testing.B) { n := 0 for i := 0; i < b.N; i++ { n += len(UnescapeString(benchUnescapeSparse)) } } func BenchmarkUnescapeDense(b *testing.B) { n := 0 for i := 0; i < b.N; i++ { n += len(UnescapeString(benchUnescapeDense)) } }