upskirtref_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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
// // 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) string { renderer := HtmlRenderer(0, "", "") return string(Markdown([]byte(input), renderer, 0)) } func doTestsReference(t *testing.T, files []string) { // 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("upskirtref", 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("upskirtref", 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) actual := string(runMarkdownReference(input)) if actual != expected { t.Errorf("\n [%#v]\nExpected[%#v]\nActual [%#v]", basename+".text", expected, actual) } // now test every prefix of every input to check for // bounds checking if !testing.Short() { start := 0 for end := start + 1; end <= len(input); end++ { candidate = input[start:end] _ = runMarkdownReference(candidate) } } } } 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) } |