diff options
Diffstat (limited to 'tests/Tests/Writers/Markdown.hs')
-rw-r--r-- | tests/Tests/Writers/Markdown.hs | 266 |
1 files changed, 0 insertions, 266 deletions
diff --git a/tests/Tests/Writers/Markdown.hs b/tests/Tests/Writers/Markdown.hs deleted file mode 100644 index abefe27d5..000000000 --- a/tests/Tests/Writers/Markdown.hs +++ /dev/null @@ -1,266 +0,0 @@ -{-# LANGUAGE OverloadedStrings #-} -{-# OPTIONS_GHC -fno-warn-name-shadowing #-} -module Tests.Writers.Markdown (tests) where - -import Test.Framework -import Text.Pandoc.Builder -import Text.Pandoc -import Tests.Helpers -import Text.Pandoc.Arbitrary() - -defopts :: WriterOptions -defopts = def{ writerExtensions = pandocExtensions } - -markdown :: (ToPandoc a) => a -> String -markdown = purely (writeMarkdown defopts) . toPandoc - -markdownWithOpts :: (ToPandoc a) => WriterOptions -> a -> String -markdownWithOpts opts x = purely (writeMarkdown opts) $ toPandoc x - -{- - "my test" =: X =?> Y - -is shorthand for - - test markdown "my test" $ X =?> Y - -which is in turn shorthand for - - test markdown "my test" (X,Y) --} - -infix 4 =: -(=:) :: (ToString a, ToPandoc a) - => String -> (a, String) -> Test -(=:) = test markdown - -tests :: [Test] -tests = [ "indented code after list" - =: (orderedList [ para "one" <> para "two" ] <> codeBlock "test") - =?> "1. one\n\n two\n\n<!-- -->\n\n test" - , "list with tight sublist" - =: bulletList [ plain "foo" <> bulletList [ plain "bar" ], - plain "baz" ] - =?> "- foo\n - bar\n- baz\n" - ] ++ [noteTests] ++ [shortcutLinkRefsTests] - -{- - -Testing with the following text: - -First Header -============ - -This is a footnote.[^1] And this is a [link](https://www.google.com). - -> A note inside a block quote.[^2] -> -> A second paragraph. - -Second Header -============= - -Some more text. - - -[^1]: Down here. - -[^2]: The second note. - --} - -noteTestDoc :: Blocks -noteTestDoc = - header 1 "First Header" <> - para ("This is a footnote." <> - note (para "Down here.") <> - " And this is a " <> - link "https://www.google.com" "" "link" <> - ".") <> - blockQuote (para ("A note inside a block quote." <> - note (para "The second note.")) <> - para ("A second paragraph.")) <> - header 1 "Second Header" <> - para "Some more text." - - - -noteTests :: Test -noteTests = testGroup "note and reference location" - [ test (markdownWithOpts defopts) - "footnotes at the end of a document" $ - noteTestDoc =?> - (unlines $ [ "First Header" - , "============" - , "" - , "This is a footnote.[^1] And this is a [link](https://www.google.com)." - , "" - , "> A note inside a block quote.[^2]" - , ">" - , "> A second paragraph." - , "" - , "Second Header" - , "=============" - , "" - , "Some more text." - , "" - , "[^1]: Down here." - , "" - , "[^2]: The second note." - ]) - , test (markdownWithOpts defopts{writerReferenceLocation=EndOfBlock}) - "footnotes at the end of blocks" $ - noteTestDoc =?> - (unlines $ [ "First Header" - , "============" - , "" - , "This is a footnote.[^1] And this is a [link](https://www.google.com)." - , "" - , "[^1]: Down here." - , "" - , "> A note inside a block quote.[^2]" - , ">" - , "> A second paragraph." - , "" - , "[^2]: The second note." - , "" - , "Second Header" - , "=============" - , "" - , "Some more text." - ]) - , test (markdownWithOpts defopts{writerReferenceLocation=EndOfBlock, writerReferenceLinks=True}) - "footnotes and reference links at the end of blocks" $ - noteTestDoc =?> - (unlines $ [ "First Header" - , "============" - , "" - , "This is a footnote.[^1] And this is a [link]." - , "" - , "[^1]: Down here." - , "" - , " [link]: https://www.google.com" - , "" - , "> A note inside a block quote.[^2]" - , ">" - , "> A second paragraph." - , "" - , "[^2]: The second note." - , "" - , "Second Header" - , "=============" - , "" - , "Some more text." - ]) - , test (markdownWithOpts defopts{writerReferenceLocation=EndOfSection}) - "footnotes at the end of section" $ - noteTestDoc =?> - (unlines $ [ "First Header" - , "============" - , "" - , "This is a footnote.[^1] And this is a [link](https://www.google.com)." - , "" - , "> A note inside a block quote.[^2]" - , ">" - , "> A second paragraph." - , "" - , "[^1]: Down here." - , "" - , "[^2]: The second note." - , "" - , "Second Header" - , "=============" - , "" - , "Some more text." - ]) - - ] - -shortcutLinkRefsTests :: Test -shortcutLinkRefsTests = - let infix 4 =: - (=:) :: (ToString a, ToPandoc a) - - => String -> (a, String) -> Test - (=:) = test (purely (writeMarkdown defopts{writerReferenceLinks = True}) . toPandoc) - in testGroup "Shortcut reference links" - [ "Simple link (shortcutable)" - =: (para (link "/url" "title" "foo")) - =?> "[foo]\n\n [foo]: /url \"title\"" - , "Followed by another link (unshortcutable)" - =: (para ((link "/url1" "title1" "first") - <> (link "/url2" "title2" "second"))) - =?> unlines [ "[first][][second]" - , "" - , " [first]: /url1 \"title1\"" - , " [second]: /url2 \"title2\"" - ] - , "Followed by space and another link (unshortcutable)" - =: (para ((link "/url1" "title1" "first") <> " " - <> (link "/url2" "title2" "second"))) - =?> unlines [ "[first][] [second]" - , "" - , " [first]: /url1 \"title1\"" - , " [second]: /url2 \"title2\"" - ] - , "Reference link is used multiple times (unshortcutable)" - =: (para ((link "/url1" "" "foo") <> (link "/url2" "" "foo") - <> (link "/url3" "" "foo"))) - =?> unlines [ "[foo][][foo][1][foo][2]" - , "" - , " [foo]: /url1" - , " [1]: /url2" - , " [2]: /url3" - ] - , "Reference link is used multiple times (unshortcutable)" - =: (para ((link "/url1" "" "foo") <> " " <> (link "/url2" "" "foo") - <> " " <> (link "/url3" "" "foo"))) - =?> unlines [ "[foo][] [foo][1] [foo][2]" - , "" - , " [foo]: /url1" - , " [1]: /url2" - , " [2]: /url3" - ] - , "Reference link is followed by text in brackets" - =: (para ((link "/url" "" "link") <> "[text in brackets]")) - =?> unlines [ "[link][]\\[text in brackets\\]" - , "" - , " [link]: /url" - ] - , "Reference link is followed by space and text in brackets" - =: (para ((link "/url" "" "link") <> " [text in brackets]")) - =?> unlines [ "[link][] \\[text in brackets\\]" - , "" - , " [link]: /url" - ] - , "Reference link is followed by RawInline" - =: (para ((link "/url" "" "link") <> rawInline "markdown" "[rawText]")) - =?> unlines [ "[link][][rawText]" - , "" - , " [link]: /url" - ] - , "Reference link is followed by space and RawInline" - =: (para ((link "/url" "" "link") <> space <> rawInline "markdown" "[rawText]")) - =?> unlines [ "[link][] [rawText]" - , "" - , " [link]: /url" - ] - , "Reference link is followed by RawInline with space" - =: (para ((link "/url" "" "link") <> rawInline "markdown" " [rawText]")) - =?> unlines [ "[link][] [rawText]" - , "" - , " [link]: /url" - ] - , "Reference link is followed by citation" - =: (para ((link "/url" "" "link") <> cite [Citation "author" [] [] NormalCitation 0 0] (str "[@author]"))) - =?> unlines [ "[link][][@author]" - , "" - , " [link]: /url" - ] - , "Reference link is followed by space and citation" - =: (para ((link "/url" "" "link") <> space <> cite [Citation "author" [] [] NormalCitation 0 0] (str "[@author]"))) - =?> unlines [ "[link][] [@author]" - , "" - , " [link]: /url" - ] - ] |