Library for parsing epub document metadata (Haskell)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
| -- License: BSD3 (see LICENSE)
-- Author: Dino Morelli <dino@ui3.info>
module ParseManifest
( tests )
where
import Control.Monad.Except
import System.FilePath
import Test.HUnit
import Codec.Epub.Data.Manifest
import Codec.Epub.Parse
tests :: Test
tests = TestList
[ testSeveral
, testMissing
]
{- A fairly comprehensive test containing several manifest items
-}
testSeveral :: Test
testSeveral = TestCase $ do
xmlString <- readFile $ "testsuite" </> "epub2-full.opf"
actual <- runExceptT $ getManifest xmlString
let expected =
Right $ Manifest [ ManifestItem
{ mfiId = "ncx"
, mfiHref = "toc.ncx"
, mfiMediaType = "application/x-dtbncx+xml"
}
, ManifestItem
{ mfiId = "titlePage"
, mfiHref = "content/titlePage.html"
, mfiMediaType = "application/xhtml+xml"
}
, ManifestItem
{ mfiId = "someContent"
, mfiHref = "content/someContent.html"
, mfiMediaType = "application/xhtml+xml"
}
]
assertEqual "several manifest items" expected actual
{- Test data devoid of any manifest items
-}
testMissing :: Test
testMissing = TestCase $ do
xmlString <- readFile $ "testsuite" </> "epub2-missingAll.opf"
actual <- runExceptT $ getManifest xmlString
let expected =
Right $ Manifest []
assertEqual "missing entirely" expected actual
|