mirror of
https://github.com/russross/blackfriday.git
synced 2024-03-22 13:40:34 +08:00
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)
|
||
|
}
|