Initial tests for writer
This commit is contained in:
parent
65c80822e7
commit
ae07d5ed49
9 changed files with 145 additions and 0 deletions
128
tests/Tests/Writers/Docx.hs
Normal file
128
tests/Tests/Writers/Docx.hs
Normal file
|
@ -0,0 +1,128 @@
|
|||
module Tests.Writers.Docx (tests) where
|
||||
|
||||
import Text.Pandoc.Options
|
||||
import Text.Pandoc.Readers.Native
|
||||
import Text.Pandoc.Definition
|
||||
import Tests.Helpers
|
||||
import Test.Framework
|
||||
import Text.Pandoc.Readers.Docx
|
||||
import Text.Pandoc.Writers.Docx
|
||||
|
||||
type Options = (WriterOptions, ReaderOptions)
|
||||
|
||||
compareOutput :: Options
|
||||
-> FilePath
|
||||
-> IO (Pandoc, Pandoc)
|
||||
compareOutput opts nativeFile = do
|
||||
nf <- Prelude.readFile nativeFile
|
||||
df <- writeDocx (fst opts) (readNative nf)
|
||||
let (p, _) = readDocx (snd opts) df
|
||||
return (p, readNative nf)
|
||||
|
||||
testCompareWithOptsIO :: Options -> String -> FilePath -> IO Test
|
||||
testCompareWithOptsIO opts name nativeFile = do
|
||||
(dp, np) <- compareOutput opts nativeFile
|
||||
return $ test id name (dp, np)
|
||||
|
||||
testCompareWithOpts :: Options -> String -> FilePath -> Test
|
||||
testCompareWithOpts opts name nativeFile =
|
||||
buildTest $ testCompareWithOptsIO opts name nativeFile
|
||||
|
||||
testCompare :: String -> FilePath -> Test
|
||||
testCompare = testCompareWithOpts def
|
||||
|
||||
tests :: [Test]
|
||||
tests = [ testGroup "inlines"
|
||||
[ testCompare
|
||||
"font formatting"
|
||||
"docx/inline_formatting_writer.native"
|
||||
, testCompare
|
||||
"font formatting with character styles"
|
||||
"docx/char_styles.native"
|
||||
, testCompare
|
||||
"hyperlinks"
|
||||
"docx/links_writer.native"
|
||||
, testCompare
|
||||
"inline image"
|
||||
"docx/image_no_embed_writer.native"
|
||||
, testCompare
|
||||
"inline image in links"
|
||||
"docx/inline_images_writer.native"
|
||||
, testCompare
|
||||
"handling unicode input"
|
||||
"docx/unicode.native"
|
||||
, testCompare
|
||||
"literal tabs"
|
||||
"docx/tabs.native"
|
||||
, testCompare
|
||||
"normalizing inlines"
|
||||
"docx/normalize.native"
|
||||
, testCompare
|
||||
"normalizing inlines deep inside blocks"
|
||||
"docx/deep_normalize.native"
|
||||
, testCompare
|
||||
"move trailing spaces outside of formatting"
|
||||
"docx/trailing_spaces_in_formatting.native"
|
||||
, testCompare
|
||||
"inline code (with VerbatimChar style)"
|
||||
"docx/inline_code.native"
|
||||
, testCompare
|
||||
"inline code in subscript and superscript"
|
||||
"docx/verbatim_subsuper.native"
|
||||
]
|
||||
, testGroup "blocks"
|
||||
[ testCompare
|
||||
"headers"
|
||||
"docx/headers.native"
|
||||
, testCompare
|
||||
"headers already having auto identifiers"
|
||||
"docx/already_auto_ident.native"
|
||||
, testCompare
|
||||
"numbered headers automatically made into list"
|
||||
"docx/numbered_header.native"
|
||||
, testCompare
|
||||
"i18n blocks (headers and blockquotes)"
|
||||
"docx/i18n_blocks.native"
|
||||
-- some level problems, look into that
|
||||
-- , testCompare
|
||||
-- "lists"
|
||||
-- "docx/lists.native"
|
||||
, testCompare
|
||||
"definition lists"
|
||||
"docx/definition_list.native"
|
||||
, testCompare
|
||||
"custom defined lists in styles"
|
||||
"docx/german_styled_lists.native"
|
||||
, testCompare
|
||||
"footnotes and endnotes"
|
||||
"docx/notes.native"
|
||||
, testCompare
|
||||
"blockquotes (parsing indent as blockquote)"
|
||||
"docx/block_quotes_parse_indent.native"
|
||||
, testCompare
|
||||
"hanging indents"
|
||||
"docx/hanging_indent.native"
|
||||
-- tables headers do not survive round-trip, should look into that
|
||||
-- , testCompare
|
||||
-- "tables"
|
||||
-- "docx/tables.native"
|
||||
-- , testCompare
|
||||
-- "tables with lists in cells"
|
||||
-- "docx/table_with_list_cell.native"
|
||||
, testCompare
|
||||
"code block"
|
||||
"docx/codeblock.native"
|
||||
, testCompare
|
||||
"dropcap paragraphs"
|
||||
"docx/drop_cap.native"
|
||||
]
|
||||
, testGroup "metadata"
|
||||
[ testCompareWithOpts (def,def{readerStandalone=True})
|
||||
"metadata fields"
|
||||
"docx/metadata.native"
|
||||
, testCompareWithOpts (def,def{readerStandalone=True})
|
||||
"stop recording metadata with normal text"
|
||||
"docx/metadata_after_normal.native"
|
||||
]
|
||||
|
||||
]
|
2
tests/docx/image_no_embed_writer.native
Normal file
2
tests/docx/image_no_embed_writer.native
Normal file
|
@ -0,0 +1,2 @@
|
|||
[Para [Str "An",Space,Str "image:"]
|
||||
,Para [Image [] ("media/rId25.jpg","")]]
|
5
tests/docx/inline_formatting_writer.native
Normal file
5
tests/docx/inline_formatting_writer.native
Normal file
|
@ -0,0 +1,5 @@
|
|||
[Para [Str "Regular",Space,Str "text",Space,Emph [Str "italics"],Space,Strong [Str "bold",Space,Emph [Str "bold",Space,Str "italics"]],Str "."]
|
||||
,Para [Str "This",Space,Str "is",Space,SmallCaps [Str "Small",Space,Str "Caps"],Str ",",Space,Str "and",Space,Str "this",Space,Str "is",Space,Strikeout [Str "strikethrough"],Str "."]
|
||||
,Para [Str "Some",Space,Str "people",Space,Str "use",Space,Emph [Str "single",Space,Str "underlines",Space,Str "for",Space,Str "emphasis"],Str "."]
|
||||
,Para [Str "Above",Space,Str "the",Space,Str "line",Space,Str "is",Space,Superscript [Str "superscript"],Space,Str "and",Space,Str "below",Space,Str "the",Space,Str "line",Space,Str "is",Space,Subscript [Str "subscript"],Str "."]
|
||||
,Para [Str "A",Space,Str "line",LineBreak,Str "break."]]
|
2
tests/docx/inline_images_writer.native
Normal file
2
tests/docx/inline_images_writer.native
Normal file
|
@ -0,0 +1,2 @@
|
|||
[Para [Str "This",Space,Str "picture",Space,Image [] ("media/rId26.jpg",""),Space,Str "is",Space,Str "an",Space,Str "identicon."]
|
||||
,Para [Str "Here",Space,Str "is",Space,Link [Str "one",Space,Image [] ("media/rId27.jpg",""),Space,Str "that"] ("http://www.google.com",""),Space,Str "links."]]
|
6
tests/docx/links_writer.native
Normal file
6
tests/docx/links_writer.native
Normal file
|
@ -0,0 +1,6 @@
|
|||
[Header 2 ("an-internal-link-and-an-external-link",[],[]) [Str "An",Space,Str "internal",Space,Str "link",Space,Str "and",Space,Str "an",Space,Str "external",Space,Str "link"]
|
||||
,Para [Str "An",Space,Link [Str "external",Space,Str "link"] ("http://google.com",""),Space,Str "to",Space,Str "a",Space,Str "popular",Space,Str "website."]
|
||||
,Para [Str "An",Space,Link [Str "external",Space,Str "link"] ("http://johnmacfarlane.net/pandoc/README.html#synopsis",""),Space,Str "to",Space,Str "a",Space,Str "website",Space,Str "with",Space,Str "an",Space,Str "anchor."]
|
||||
,Para [Str "An",Space,Link [Str "internal",Space,Str "link"] ("#a-section-for-testing-link-targets",""),Space,Str "to",Space,Str "a",Space,Str "section",Space,Str "header."]
|
||||
,Para [Str "An",Space,Link [Str "internal",Space,Str "link"] ("#my_bookmark",""),Space,Str "to",Space,Str "a",Space,Str "bookmark."]
|
||||
,Header 2 ("a-section-for-testing-link-targets",[],[]) [Str "A",Space,Str "section",Space,Str "for",Space,Str "testing",Space,Str "link",Space,Str "targets"]]
|
0
tests/media/rId25.jpg
Normal file
0
tests/media/rId25.jpg
Normal file
0
tests/media/rId26.jpg
Normal file
0
tests/media/rId26.jpg
Normal file
0
tests/media/rId27.jpg
Normal file
0
tests/media/rId27.jpg
Normal file
|
@ -20,6 +20,7 @@ import qualified Tests.Writers.Native
|
|||
import qualified Tests.Writers.Markdown
|
||||
import qualified Tests.Writers.Plain
|
||||
import qualified Tests.Writers.AsciiDoc
|
||||
import qualified Tests.Writers.Docx
|
||||
import qualified Tests.Shared
|
||||
import qualified Tests.Walk
|
||||
import Text.Pandoc.Shared (inDirectory)
|
||||
|
@ -38,6 +39,7 @@ tests = [ testGroup "Old" Tests.Old.tests
|
|||
, testGroup "Markdown" Tests.Writers.Markdown.tests
|
||||
, testGroup "Plain" Tests.Writers.Plain.tests
|
||||
, testGroup "AsciiDoc" Tests.Writers.AsciiDoc.tests
|
||||
, testGroup "Docx" Tests.Writers.Docx.tests
|
||||
]
|
||||
, testGroup "Readers"
|
||||
[ testGroup "LaTeX" Tests.Readers.LaTeX.tests
|
||||
|
|
Loading…
Reference in a new issue