mirror of
https://github.com/russross/blackfriday.git
synced 2024-03-22 13:40:34 +08:00
96537c6eaa
These will be helpful for catching regressions or changes in behavior to edge cases such as empty input, or specifically crafted inputs that may cause panics, etc. Move test for issue #172 there since it's a document-level test, not an inline one. Add test for issue #173. Make some things more consistent. Don't use a named receiver in methods that don't use it. This makes the code more readable since one can more quickly tell the inputs to the method.
76 lines
1.5 KiB
Go
76 lines
1.5 KiB
Go
//
|
|
// Blackfriday Markdown Processor
|
|
// Available at http://github.com/russross/blackfriday
|
|
//
|
|
// Copyright © 2011 Russ Ross <russ@russross.com>.
|
|
// Distributed under the Simplified BSD License.
|
|
// See README.md for details.
|
|
//
|
|
|
|
//
|
|
// Unit tests for full document parsing and rendering
|
|
//
|
|
|
|
package blackfriday
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func runMarkdown(input string) string {
|
|
return string(MarkdownCommon([]byte(input)))
|
|
}
|
|
|
|
func doTests(t *testing.T, tests []string) {
|
|
// catch and report panics
|
|
var candidate string
|
|
defer func() {
|
|
if err := recover(); err != nil {
|
|
t.Errorf("\npanic while processing [%#v]: %s\n", candidate, err)
|
|
}
|
|
}()
|
|
|
|
for i := 0; i+1 < len(tests); i += 2 {
|
|
input := tests[i]
|
|
candidate = input
|
|
expected := tests[i+1]
|
|
actual := runMarkdown(candidate)
|
|
if actual != expected {
|
|
t.Errorf("\nInput [%#v]\nExpected[%#v]\nActual [%#v]",
|
|
candidate, expected, actual)
|
|
}
|
|
|
|
// now test every substring to stress test bounds checking
|
|
if !testing.Short() {
|
|
for start := 0; start < len(input); start++ {
|
|
for end := start + 1; end <= len(input); end++ {
|
|
candidate = input[start:end]
|
|
_ = runMarkdown(candidate)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDocument(t *testing.T) {
|
|
var tests = []string{
|
|
// Empty document.
|
|
"",
|
|
"",
|
|
|
|
" ",
|
|
"",
|
|
|
|
// This shouldn't panic.
|
|
// https://github.com/russross/blackfriday/issues/172
|
|
"[]:<",
|
|
"<p>[]:<</p>\n",
|
|
|
|
// This shouldn't panic.
|
|
// https://github.com/russross/blackfriday/issues/173
|
|
" [",
|
|
"<p>[</p>\n",
|
|
}
|
|
doTests(t, tests)
|
|
}
|