Docx tests: Added media test comparison function.

Also tell pandoc.cabal that we'll be needing base64, since we want to
compare strings here.
This commit is contained in:
Jesse Rosenthal 2014-07-30 22:31:38 -04:00
parent 71e76175be
commit 16f88edb3b
2 changed files with 20 additions and 0 deletions

View file

@ -385,6 +385,7 @@ Test-Suite test-pandoc
syb >= 0.1 && < 0.5,
pandoc,
pandoc-types >= 1.12.3.3 && < 1.13,
base64-bytestring >= 0.1 && < 1.1,
bytestring >= 0.9 && < 0.11,
text >= 0.11 && < 1.2,
directory >= 1 && < 1.3,

View file

@ -5,7 +5,10 @@ import Text.Pandoc.Readers.Native
import Text.Pandoc.Definition
import Tests.Helpers
import Test.Framework
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as B
import qualified Data.ByteString.Char8 as B8
import qualified Data.ByteString.Base64 as B64
import Text.Pandoc.Readers.Docx
import Text.Pandoc.Writers.Native (writeNative)
import qualified Data.Map as M
@ -52,6 +55,22 @@ testCompareWithOpts opts name docxFile nativeFile =
testCompare :: String -> FilePath -> FilePath -> Test
testCompare = testCompareWithOpts def
testCompareMediaIO :: String -> FilePath -> FilePath -> FilePath -> IO Test
testCompareMediaIO name docxFile mediaPath mediaFile = do
df <- B.readFile docxFile
mf <- B.readFile mediaFile
let (_, mb) = readDocx def df
dBytes = case M.lookup mediaPath mb of
Just bs -> bs
Nothing -> error "Media file not found"
d64 = B8.unpack $ B64.encode $ BS.concat $ B.toChunks dBytes
m64 = B8.unpack $ B64.encode $ BS.concat $ B.toChunks mf
return $ test id name (d64, m64)
testCompareMedia :: String -> FilePath -> FilePath -> FilePath -> Test
testCompareMedia name docxFile mediaPath mediaFile =
buildTest $ testCompareMediaIO name docxFile mediaPath mediaFile
tests :: [Test]
tests = [ testGroup "inlines"