|
Packit Service |
d2f85f |
{-# LANGUAGE OverloadedStrings #-}
|
|
Packit Service |
d2f85f |
|
|
Packit Service |
d2f85f |
module Tests.Writers.Powerpoint (tests) where
|
|
Packit Service |
d2f85f |
|
|
Packit Service |
d2f85f |
import Control.Exception (throwIO)
|
|
Packit Service |
d2f85f |
import Text.Pandoc
|
|
Packit Service |
d2f85f |
import Text.Pandoc.Builder
|
|
Packit Service |
d2f85f |
import Test.Tasty
|
|
Packit Service |
d2f85f |
import Test.Tasty.HUnit
|
|
Packit Service |
d2f85f |
import Codec.Archive.Zip
|
|
Packit Service |
d2f85f |
import Data.List (isPrefixOf, isSuffixOf)
|
|
Packit Service |
d2f85f |
|
|
Packit Service |
d2f85f |
----- Number of Slides -----------
|
|
Packit Service |
d2f85f |
|
|
Packit Service |
d2f85f |
numberOfSlides :: WriterOptions -> Pandoc -> IO Int
|
|
Packit Service |
d2f85f |
numberOfSlides opts pd = do
|
|
Packit Service |
d2f85f |
mbs <- runIO $
|
|
Packit Service |
d2f85f |
do setUserDataDir $ Just "../data"
|
|
Packit Service |
d2f85f |
writePowerpoint opts pd
|
|
Packit Service |
d2f85f |
case mbs of
|
|
Packit Service |
d2f85f |
Left e -> throwIO e
|
|
Packit Service |
d2f85f |
Right bs -> do
|
|
Packit Service |
d2f85f |
let archive = toArchive bs
|
|
Packit Service |
d2f85f |
return $
|
|
Packit Service |
d2f85f |
length $
|
|
Packit Service |
d2f85f |
filter (isSuffixOf ".xml") $
|
|
Packit Service |
d2f85f |
filter (isPrefixOf "ppt/slides/slide") $
|
|
Packit Service |
d2f85f |
filesInArchive archive
|
|
Packit Service |
d2f85f |
|
|
Packit Service |
d2f85f |
testNumberOfSlides :: TestName -> Int -> WriterOptions -> Pandoc -> TestTree
|
|
Packit Service |
d2f85f |
testNumberOfSlides name n opts pd =
|
|
Packit Service |
d2f85f |
testCase name $ do
|
|
Packit Service |
d2f85f |
n' <- numberOfSlides opts pd
|
|
Packit Service |
d2f85f |
n' @=? n
|
|
Packit Service |
d2f85f |
|
|
Packit Service |
d2f85f |
numSlideTests :: TestTree
|
|
Packit Service |
d2f85f |
numSlideTests = testGroup "Number of slides in output"
|
|
Packit Service |
d2f85f |
[ testNumberOfSlides
|
|
Packit Service |
d2f85f |
"simple one-slide deck" 1
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $ para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"with metadata (header slide)" 2
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(setTitle "My Title" $ doc $ para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"With h1 slide (using default slide-level)" 2
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $ header 1 "Header" <> para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"With h2 slide (using default slide-level)" 2
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $ header 1 "Header" <> header 2 "subeader" <> para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"With h1 slide (using default slide-level)" 2
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $ header 1 "Header" <> para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"With h2 slide (using default slide-level)" 2
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $ header 1 "Header" <> header 2 "subeader" <> para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"With image slide, no header" 3
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $
|
|
Packit Service |
d2f85f |
para "first slide" <>
|
|
Packit Service |
d2f85f |
(para $ image "lalune.jpg" "" "") <>
|
|
Packit Service |
d2f85f |
para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"With image slide, header" 3
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $
|
|
Packit Service |
d2f85f |
para "first slide" <>
|
|
Packit Service |
d2f85f |
header 2 "image header" <>
|
|
Packit Service |
d2f85f |
(para $ image "lalune.jpg" "" "") <>
|
|
Packit Service |
d2f85f |
para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"With table, no header" 3
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $
|
|
Packit Service |
d2f85f |
para "first slide" <>
|
|
Packit Service |
d2f85f |
(simpleTable [para "foo" <> para "bar"] [[para "this" <> para "that"]]) <>
|
|
Packit Service |
d2f85f |
para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"With table, header" 3
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $
|
|
Packit Service |
d2f85f |
para "first slide" <>
|
|
Packit Service |
d2f85f |
header 2 "table header" <>
|
|
Packit Service |
d2f85f |
(simpleTable [para "foo" <> para "bar"] [[para "this" <> para "that"]]) <>
|
|
Packit Service |
d2f85f |
para "foo")
|
|
Packit Service |
d2f85f |
, testNumberOfSlides
|
|
Packit Service |
d2f85f |
"hrule" 2
|
|
Packit Service |
d2f85f |
def
|
|
Packit Service |
d2f85f |
(doc $
|
|
Packit Service |
d2f85f |
para "first slide" <> horizontalRule <> para "last slide")
|
|
Packit Service |
d2f85f |
]
|
|
Packit Service |
d2f85f |
|
|
Packit Service |
d2f85f |
|
|
Packit Service |
d2f85f |
tests :: [TestTree]
|
|
Packit Service |
d2f85f |
tests = [numSlideTests]
|