pandoc/test/Tests/Readers/Man.hs
Albert Krewinkel 37a82b0b11 Add missing copyright notices and remove license boilerplate (#5112)
Quite a few modules were missing copyright notices.

This commit adds copyright notices everywhere via haddock module
headers.  The old license boilerplate comment is redundant with this and has
been removed.

Update copyright years to 2019.

Closes #4592.
2019-02-04 13:52:31 -08:00

133 lines
4.2 KiB
Haskell

{-# LANGUAGE OverloadedStrings #-}
{- |
Module : Tests.Readers.Man
Copyright : © 2018-2019 Yan Pas <yanp.bugz@gmail.com>,
2018-2019 John MacFarlane
License : GNU GPL, version 2 or above
Maintainer : John MacFarlane <jgm@berkeley.edu>
Stability : alpha
Portability : portable
Tests for the Man reader.
-}
module Tests.Readers.Man (tests) where
import Prelude
import Data.Text (Text)
import Test.Tasty
import Tests.Helpers
import Text.Pandoc
import Text.Pandoc.Arbitrary ()
import Text.Pandoc.Builder
import Text.Pandoc.Readers.Man
man :: Text -> Pandoc
man = purely $ readMan def
infix 4 =:
(=:) :: ToString c
=> String -> (Text, c) -> TestTree
(=:) = test man
tests :: [TestTree]
tests = [
-- .SH "HEllo bbb" "aaa"" as"
testGroup "Macros" [
"Bold" =:
".B foo"
=?> para (strong "foo")
, "Italic" =:
".I bar\n"
=?> para (emph "bar")
, "BoldItalic" =:
".BI foo bar"
=?> para (strong (str "foo") <> emph (str "bar"))
, "H1" =:
".SH The header\n"
=?> header 1 (text "The header")
, "H2" =:
".SS \"The header 2\""
=?> header 2 (text "The header 2")
, "Macro args" =:
".B \"single arg with \"\"Q\"\"\""
=?> (para $ strong $ text "single arg with \"Q\"")
, "Argument from next line" =:
".B\nsingle arg with \"Q\""
=?> (para $ strong $ text "single arg with \"Q\"")
, "comment" =:
".\\\"bla\naaa"
=?> (para $ str "aaa")
, "link" =:
".BR aa (1)"
=?> para (strong (str "aa") <> str "(1)")
],
testGroup "Escapes" [
"fonts" =:
"aa\\fIbb\\fRcc"
=?> (para $ str "aa" <> (emph $ str "bb") <> str "cc")
, "nested fonts" =:
"\\f[BI]hi\\f[I] there\\f[R]"
=?> para (emph (strong (text "hi") <> text " there"))
, "nested fonts 2" =:
"\\f[R]hi \\f[I]there \\f[BI]bold\\f[R] ok"
=?> para (text "hi " <> emph (text "there " <> strong (text "bold")) <>
text " ok")
, "skip" =:
"a\\%\\{\\}\\\n\\:b\\0"
=?> (para $ str "ab\8199")
, "replace" =:
"\\-\\ \\\\\\[lq]\\[rq]\\[em]\\[en]\\*(lq\\*(rq"
=?> (para $ text "- \\“”—–“”")
, "replace2" =:
"\\t\\e\\`\\^\\|\\'" =?> (para $ text "\\`\8202\8198`")
, "comment with \\\"" =:
"Foo \\\" bar\n" =?> (para $ text "Foo")
, "comment with \\#" =:
"Foo\\#\nbar\n" =?> (para $ text "Foobar")
, "two letter escapes" =:
"\\(oA\\(~O" =?> (para $ text "ÅÕ")
, "bracketed escapes" =:
"\\[oA]\\[~O]\\[Do]\\[Ye]\\[product]\\[ul]" =?> (para $ text "ÅÕ$¥∏_")
, "unicode escapes" =:
"\\[u2020]" =?> (para $ text "")
, "unicode escapes (combined)" =:
"\\[u0075_u0301]" =?> (para $ text "\250")
, "unknown escape (#5034)" =:
"\\9" =?> (para $ text "9")
],
testGroup "Lists" [
"bullet" =:
".IP \"\\[bu]\"\nfirst\n.IP \"\\[bu]\"\nsecond"
=?> bulletList [para $ str "first", para $ str "second"]
, "ordered" =:
".IP 2 a\nfirst\n.IP 3 a\nsecond"
=?> orderedListWith (2,Decimal,DefaultDelim) [para $ str "first", para $ str "second"]
, "upper" =:
".IP A) a\nfirst\n.IP B) a\nsecond"
=?> orderedListWith (1,UpperAlpha,OneParen) [para $ str "first", para $ str "second"]
, "nested" =:
".IP \"\\[bu]\"\nfirst\n.RS\n.IP \"\\[bu]\"\n1a\n.IP \"\\[bu]\"\n1b\n.RE"
=?> bulletList [(para $ str "first") <> (bulletList [para $ str "1a", para $ str "1b"])]
, "change in list style" =:
".IP \\[bu]\nfirst\n.IP 1\nsecond"
=?> bulletList [para (str "first")] <>
orderedListWith (1,Decimal,DefaultDelim) [para (str "second")]
],
testGroup "CodeBlocks" [
"cb1"=:
".nf\naa\n\tbb\n.fi"
=?> codeBlock "aa\n\tbb"
],
testGroup "Tables" [
"t1" =:
".TS\nallbox;\nl l l.\na\tb\tc\nd\te\tf\n.TE"
=?> table mempty (replicate 3 (AlignLeft, 0.0)) [] [
map (plain . str ) ["a", "b", "c"],
map (plain . str ) ["d", "e", "f"]
],
"longcell" =:
".TS\n;\nr.\nT{\na\nb\nc d\nT}\nf\n.TE"
=?> table mempty [(AlignRight, 0.0)] [] [[plain $ text "a b c d"], [plain $ str "f"]]
]
]