Renamed Test.hs to MdToHtmlTest.hs so that the filename matches the
module name; updated blockquote tests; started working on ordered list tests
This commit is contained in:
85
src/MdToHtmlTest.hs
Normal file
85
src/MdToHtmlTest.hs
Normal file
@@ -0,0 +1,85 @@
|
||||
module MdToHtmlTest where
|
||||
|
||||
import MdToHTML
|
||||
import Test.HUnit
|
||||
|
||||
check_equal :: String -> String -> String -> Test
|
||||
check_equal desc expected actual = TestCase (assertEqual desc expected actual)
|
||||
|
||||
convert :: String -> String
|
||||
convert md = show . fst $ leftmostLongestParse parseDocument md
|
||||
|
||||
headerTests =
|
||||
TestList
|
||||
[ check_equal "Should convert H1 heading" "<h1>Hello</h1>" (convert "# Hello"),
|
||||
check_equal "Should convert H2 heading" "<h2>Hello</h2>" (convert "## Hello"),
|
||||
check_equal "Should convert H3 heading" "<h3>Hello</h3>" (convert "### Hello"),
|
||||
check_equal "Should convert H4 heading" "<h4>Hello</h4>" (convert "#### Hello"),
|
||||
check_equal "Should convert H5 heading" "<h5>Hello</h5>" (convert "##### Hello"),
|
||||
check_equal "Should convert H6 heading" "<h6>Hello</h6>" (convert "###### Hello")
|
||||
]
|
||||
|
||||
boldTests =
|
||||
TestList
|
||||
[ check_equal "Should convert bold" "<p><b>Hello</b></p>" (convert "__Hello__"),
|
||||
check_equal "Should convert italic" "<p><i>Hello</i></p>" (convert "_Hello_"),
|
||||
check_equal "Should convert bold and italic in a sentence" "<p>It <i>is</i> a <b>wonderful</b> day</p>" (convert "It _is_ a __wonderful__ day")
|
||||
]
|
||||
|
||||
linkTests =
|
||||
TestList
|
||||
[ check_equal "Should convert normal link" "<p><a href=\"https://example.com\">This is an example link.</a></p>" (convert "[This is an example link.](https://example.com)"),
|
||||
check_equal "Should convert styled link" "<p><a href=\"https://example.com\"><b>Fancy</b>!!!</a></p>" (convert "[__Fancy__!!!](https://example.com)")
|
||||
]
|
||||
|
||||
escapedCharTests =
|
||||
TestList
|
||||
[ check_equal "Should print literal underscore" "<p>This is an underscore - _</p>" (convert "This is an underscore - \\_"),
|
||||
check_equal "Should print literal asterisk" "<p>This is an asterisk - *</p>" (convert "This is an asterisk - \\*"),
|
||||
check_equal "Should print literal asterisk in bold" "<p>This is a bolded asterisk - <b>*</b></p>" (convert "This is a bolded asterisk - **\\***")
|
||||
]
|
||||
|
||||
blockquoteTests =
|
||||
TestList
|
||||
[ check_equal "Should wrap para in blockquote" "<blockquote><p>What a <b>truly</b> <i>lovely</i> day!!!</p></blockquote>" (convert "> What a __truly__ _lovely_ day!!!"),
|
||||
check_equal "Simple nested blockquotes" "<blockquote><p>Hello</p><blockquote><p>World</p></blockquote></blockquote>" (convert "> Hello\n>\n>> World"),
|
||||
check_equal
|
||||
"Nested blockquotes"
|
||||
"<blockquote><p>Dorothy followed her through many \
|
||||
\of the beautiful rooms in her castle.</p><blockquote><p>The Witch \
|
||||
\bade her clean the pots and kettles and sweep the floor and keep the fire \
|
||||
\fed with wood.</p></blockquote></blockquote>"
|
||||
( convert
|
||||
"> Dorothy followed her through many of the \
|
||||
\beautiful rooms in her castle.\n> \n>> The Witch bade her \
|
||||
\clean the pots and kettles and sweep the floor and keep the fire fed with wood."
|
||||
)
|
||||
]
|
||||
|
||||
orderedListTests =
|
||||
TestList
|
||||
[ check_equal "Basic ordered list" "<ol><li>Item 1</li><li>Item 2</li><li>Item 3</li></ol" (convert "1. Item 1\n2. Item2\n3. Item3")
|
||||
]
|
||||
|
||||
integrationTests =
|
||||
TestList
|
||||
[ check_equal "Integration 1" "<h1>Sample Markdown</h1><p>This is some basic, sample markdown.</p><h2><b>Second</b> <i>Heading</i></h2>" (convert "# Sample Markdown\n\n This is some basic, sample markdown.\n\n ## __Second__ _Heading_"),
|
||||
check_equal "Integration 2" "<p><b>Hello</b> <i>World</i></p>" (convert "__Hello__\n_World_"),
|
||||
check_equal "Integration 3" "<h1>Hello</h1><p>World</p>" (convert "# Hello\nWorld"),
|
||||
check_equal "Integration 4" "<p>a b</p>" (convert "a\nb"),
|
||||
check_equal "Integration 5" "<h1>Hello</h1>" (convert "# Hello\n"),
|
||||
check_equal "Integration 6" "<p>First line<br>Second line</p>" (convert "First line \nSecond line")
|
||||
]
|
||||
|
||||
tests =
|
||||
TestList
|
||||
[ headerTests,
|
||||
boldTests,
|
||||
linkTests,
|
||||
escapedCharTests,
|
||||
blockquoteTests,
|
||||
orderedListTests,
|
||||
integrationTests
|
||||
]
|
||||
|
||||
runTests = runTestTT tests
|
Reference in New Issue
Block a user