Blame test/Tests/Writers/Powerpoint.hs

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]