esc_test.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
package blackfriday import ( "bytes" "testing" ) func TestEsc(t *testing.T) { t.Parallel() tests := []string{ "abc", "abc", "a&c", "a&c", "<", "<", "[]:<", "[]:<", "Hello <!--", "Hello <!--", } for i := 0; i < len(tests); i += 2 { var b bytes.Buffer escapeHTML(&b, []byte(tests[i])) if !bytes.Equal(b.Bytes(), []byte(tests[i+1])) { t.Errorf("\nInput [%#v]\nExpected[%#v]\nActual [%#v]", tests[i], tests[i+1], b.String()) } } } func BenchmarkEscapeHTML(b *testing.B) { tests := [][]byte{ []byte(""), []byte("AT&T has an ampersand in their name."), []byte("AT&T is another way to write it."), []byte("This & that."), []byte("4 < 5."), []byte("6 > 5."), []byte("Here's a [link] [1] with an ampersand in the URL."), []byte("Here's a link with an ampersand in the link text: [AT&T] [2]."), []byte("Here's an inline [link](/script?foo=1&bar=2)."), []byte("Here's an inline [link](</script?foo=1&bar=2>)."), []byte("[1]: http://example.com/?foo=1&bar=2"), []byte("[2]: http://att.com/ \"AT&T\""), } var buf bytes.Buffer for n := 0; n < b.N; n++ { for _, t := range tests { escapeHTML(&buf, t) buf.Reset() } } } |