diff options
author | John MacFarlane <jgm@berkeley.edu> | 2011-01-18 23:34:34 -0800 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2011-01-18 23:34:34 -0800 |
commit | 0502c0fd28c4ef20f437ad1c8ae50c1e2793cd3b (patch) | |
tree | b23ca56723fa97647360cd9ce8a00be67154f1fb | |
parent | 0cfafdec643021ce8b45e07ef826b2c196636fae (diff) | |
download | pandoc-0502c0fd28c4ef20f437ad1c8ae50c1e2793cd3b.tar.gz |
Revamped tests with new =: and =?> operators + builder.
Left in a couple failing tests for demonstration purposes.
-rw-r--r-- | tests/Tests/Helpers.hs | 46 | ||||
-rw-r--r-- | tests/Tests/Readers/LaTeX.hs | 45 |
2 files changed, 45 insertions, 46 deletions
diff --git a/tests/Tests/Helpers.hs b/tests/Tests/Helpers.hs index 539b26dcd..08cc9b63b 100644 --- a/tests/Tests/Helpers.hs +++ b/tests/Tests/Helpers.hs @@ -1,34 +1,32 @@ +{-# LANGUAGE TypeSynonymInstances #-} -- Utility functions for the test suite. module Tests.Helpers where import Text.Pandoc - +import Text.Pandoc.Builder 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 structure of Pandoc document." - -latexTest :: String -> String -> Expect -> Test -latexTest = readerTestWithState defaultParserState readLaTeX - -readerTestWithState :: ParserState - -> (ParserState -> String -> Pandoc) - -> String - -> String - -> Expect - -> Test -readerTestWithState state reader name string e = - testCase name $ e `assertPandoc` reader state string +-- in Helpers +class Expect a where + (=?>) :: Pandoc -> a -> Assertion + +infix 8 =?> + +(=:) :: TestName -> Assertion -> Test +(=:) = testCase + +infix 6 =: + +instance Expect Inlines where + (Pandoc _ [Para ils]) =?> e = assertEqual " " (toList e) ils + g =?> e = assertEqual " " (doc $ para e) g + +instance Expect Blocks where + (Pandoc _ bls) =?> e = assertEqual " " (toList e) bls + +instance Expect Pandoc where + g =?> e = assertEqual " " e g diff --git a/tests/Tests/Readers/LaTeX.hs b/tests/Tests/Readers/LaTeX.hs index 99ccb3fe2..69355a5c8 100644 --- a/tests/Tests/Readers/LaTeX.hs +++ b/tests/Tests/Readers/LaTeX.hs @@ -1,36 +1,37 @@ module Tests.Readers.LaTeX (tests) where import Text.Pandoc.Definition - import Test.Framework import Tests.Helpers +import Text.Pandoc.Builder +import Text.Pandoc + +latex :: String -> Pandoc +latex = readLaTeX defaultParserState{stateSmart = True} tests :: [Test] tests = [ testGroup "basic" - [ latexTest "simplest" "word" (Inline $ Str "word") - , latexTest "space" "some text" - (Inlines $ [Str "some", Space, Str "text"]) - - , latexTest "emphasis" "\\emph{emphasized}" - (Inline $ Emph [Str "emphasized"]) + [ "simple" =: + latex "word" =?> str "wor d" + , "space" =: + latex "some text" =?> text "some text" + , "emphasized" =: + latex "\\emph{emphasized}" =?> (emph $ str "emphasized") ] , testGroup "headers" - [ latexTest "1. level" "\\section{header}" - $ Block $ Header 1 [Str "header"] - - , latexTest "2. level" "\\subsection{header}" - $ Block $ Header 2 [Str "header"] - - , latexTest "3. level" "\\subsubsection{header}" - $ Block $ Header 3 [Str "header"] - - , latexTest "with emphasis" "\\section{text \\emph{emph}}" - $ Block $ Header 1 [Str "text", Space, Emph [Str "emph"]] - - , latexTest "with link" "\\section{text \\href{/url}{link}}" - $ Block - $ Header 1 [Str "text", Space, Link [Str "link"] ("/url", "")] + [ "level 1" =: + latex "\\section{header}" =?> header 1 (str "header") + , "level 2" =: + latex "\\subsection{header}" =?> header 2 (str "header") + , "level 3" =: + latex "\\subsubsection{header}" =?> header 3 (str "header") + , "emph" =: + latex "\\section{text \\emph{emph}}" =?> + header 1 (str "text2" +++ space +++ emph (str "emph")) + , "link" =: + latex "\\section{text \\href{/url}{link}}" =?> + header 1 (str "text" +++ space +++ link "/url" "" (str "link")) ] ] |