|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- //
- // 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.
- //
-
- //
- // Markdown 1.0.3 reference tests
- //
-
- package blackfriday
-
- import (
- "io/ioutil"
- "path/filepath"
- "testing"
- )
-
- func runMarkdownReference(input string, flag int) string {
- renderer := HtmlRenderer(0, "", "")
- return string(Markdown([]byte(input), renderer, flag))
- }
-
- func doTestsReference(t *testing.T, files []string, flag int) {
- // catch and report panics
- var candidate string
- defer func() {
- if err := recover(); err != nil {
- t.Errorf("\npanic while processing [%#v]\n", candidate)
- }
- }()
-
- for _, basename := range files {
- filename := filepath.Join("testdata", basename+".text")
- inputBytes, err := ioutil.ReadFile(filename)
- if err != nil {
- t.Errorf("Couldn't open '%s', error: %v\n", filename, err)
- continue
- }
- input := string(inputBytes)
-
- filename = filepath.Join("testdata", basename+".html")
- expectedBytes, err := ioutil.ReadFile(filename)
- if err != nil {
- t.Errorf("Couldn't open '%s', error: %v\n", filename, err)
- continue
- }
- expected := string(expectedBytes)
-
- // fmt.Fprintf(os.Stderr, "processing %s ...", filename)
- actual := string(runMarkdownReference(input, flag))
- if actual != expected {
- t.Errorf("\n [%#v]\nExpected[%#v]\nActual [%#v]",
- basename+".text", expected, actual)
- }
- // fmt.Fprintf(os.Stderr, " ok\n")
-
- // now test every prefix of every input to check for
- // bounds checking
- if !testing.Short() {
- start, max := 0, len(input)
- for end := start + 1; end <= max; end++ {
- candidate = input[start:end]
- // fmt.Fprintf(os.Stderr, " %s %d:%d/%d\n", filename, start, end, max)
- _ = runMarkdownReference(candidate, flag)
- }
- }
- }
- }
-
- func TestReference(t *testing.T) {
- files := []string{
- "Amps and angle encoding",
- "Auto links",
- "Backslash escapes",
- "Blockquotes with code blocks",
- "Code Blocks",
- "Code Spans",
- "Hard-wrapped paragraphs with list-like lines",
- "Horizontal rules",
- "Inline HTML (Advanced)",
- "Inline HTML (Simple)",
- "Inline HTML comments",
- "Links, inline style",
- "Links, reference style",
- "Links, shortcut references",
- "Literal quotes in titles",
- "Markdown Documentation - Basics",
- "Markdown Documentation - Syntax",
- "Nested blockquotes",
- "Ordered and unordered lists",
- "Strong and em together",
- "Tabs",
- "Tidyness",
- }
- doTestsReference(t, files, 0)
- }
-
- func TestReference_EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK(t *testing.T) {
- files := []string{
- "Amps and angle encoding",
- "Auto links",
- "Backslash escapes",
- "Blockquotes with code blocks",
- "Code Blocks",
- "Code Spans",
- "Hard-wrapped paragraphs with list-like lines no empty line before block",
- "Horizontal rules",
- "Inline HTML (Advanced)",
- "Inline HTML (Simple)",
- "Inline HTML comments",
- "Links, inline style",
- "Links, reference style",
- "Links, shortcut references",
- "Literal quotes in titles",
- "Markdown Documentation - Basics",
- "Markdown Documentation - Syntax",
- "Nested blockquotes",
- "Ordered and unordered lists",
- "Strong and em together",
- "Tabs",
- "Tidyness",
- }
- doTestsReference(t, files, EXTENSION_NO_EMPTY_LINE_BEFORE_BLOCK)
- }
|