38 lines
1.1 KiB
Haskell
38 lines
1.1 KiB
Haskell
|
module Helpers where
|
||
|
|
||
|
import Text.Pandoc
|
||
|
|
||
|
import Test.Framework
|
||
|
import Test.Framework.Providers.HUnit
|
||
|
import Test.HUnit hiding (Test)
|
||
|
|
||
|
data Expect = Inline Inline
|
||
|
| Inlines [Inline]
|
||
|
| Block Block
|
||
|
| Blocks [Block]
|
||
|
|
||
|
assertPandoc :: Expect -> Pandoc -> Assertion
|
||
|
assertPandoc (Inline e) (Pandoc _ [Para [g]]) = e @=? g
|
||
|
assertPandoc (Inlines e) (Pandoc _ [Para g] ) = e @=? g
|
||
|
assertPandoc (Block e) (Pandoc _ [g] ) = e @=? g
|
||
|
assertPandoc (Blocks e) (Pandoc _ g ) = e @=? g
|
||
|
assertPandoc _ _ = assertFailure "Wrong structur of Pandoc document."
|
||
|
|
||
|
latexTest :: String-> String -> Expect -> Test
|
||
|
latexTest = latexTestWithState defaultParserState
|
||
|
|
||
|
latexTestWithState :: ParserState -> String -> String -> Expect -> Test
|
||
|
latexTestWithState state name string exp = testCase name $ exp `assertPandoc` readLaTeX state string
|
||
|
|
||
|
blocks :: [Block] -> Pandoc
|
||
|
blocks bs = Pandoc (Meta { docTitle = [], docAuthors = [], docDate = [] }) bs
|
||
|
|
||
|
block :: Block -> Pandoc
|
||
|
block b = blocks [b]
|
||
|
|
||
|
inlines :: [Inline] -> Pandoc
|
||
|
inlines is = block $ Para is
|
||
|
|
||
|
inline :: Inline -> Pandoc
|
||
|
inline i = inlines [i]
|