File: Tests.hs

package info (click to toggle)
haskell-feed 1.3.2.1-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 816 kB
  • sloc: haskell: 4,735; xml: 4,315; makefile: 2
file content (64 lines) | stat: -rw-r--r-- 2,317 bytes parent folder | download | duplicates (4)
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
58
59
60
61
62
63
64
module Text.RSS.Import.Tests
  ( rssImportTests
  ) where

import Prelude.Compat

import Data.XML.Types as XML
import Test.Framework (Test, mutuallyExclusive, testGroup)
import Test.Framework.Providers.HUnit (testCase)
import Test.HUnit (Assertion, assertEqual)
import Text.RSS.Equals ()
import Text.RSS.Import
import Text.RSS.Syntax
import Text.RSS.Utils

rssImportTests :: Test
rssImportTests =
  testGroup
    "Text.RSS.Import"
    [ mutuallyExclusive $
      testGroup "RSS import" [testElementToCloudIsNotCreated, testElementToCloud]
    ]

testElementToCloudIsNotCreated :: Test
testElementToCloudIsNotCreated = testCase "should not create rss cloud" notCreateRSSCloud
  where
    notCreateRSSCloud :: Assertion
    notCreateRSSCloud = do
      let notXmlCloudElement =
            XML.Element
              {elementName = createQName "notCloud", elementAttributes = [], elementNodes = []}
      let expected = Nothing
      assertEqual "not create rss cloud" expected (elementToCloud notXmlCloudElement)

testElementToCloud :: Test
testElementToCloud = testCase "should create rss cloud" createRSSCloud
  where
    createRSSCloud :: Assertion
    createRSSCloud = do
      let attr = mkNAttr (createQName "attr") "text for attr"
      let xmlCloudElement =
            XML.Element
              { elementName = createQName "cloud"
              , elementAttributes =
                  [ mkNAttr (createQName "domain") "domain cloud"
                  , mkNAttr (createQName "port") "port cloud"
                  , mkNAttr (createQName "path") "path cloud"
                  , mkNAttr (createQName "registerProcedure") "register cloud"
                  , mkNAttr (createQName "protocol") "protocol cloud"
                  , attr
                  ] :: [Attr]
              , elementNodes = [createContent ""]
              }
      let expected =
            Just
              RSSCloud
                { rssCloudDomain = Just "domain cloud"
                , rssCloudPort = Just "port cloud"
                , rssCloudPath = Just "path cloud"
                , rssCloudRegisterProcedure = Just "register cloud"
                , rssCloudProtocol = Just "protocol cloud"
                , rssCloudAttrs = [attr]
                }
      assertEqual "create rss cloud" expected (elementToCloud xmlCloudElement)