]> gitweb @ CieloNegro.org - Rakka.git/blob - test/WikiParserTest.hs
The experimental change worked well.
[Rakka.git] / test / WikiParserTest.hs
1 module WikiParserTest
2     ( testData
3     )
4     where
5
6 import           Rakka.Wiki
7 import           Rakka.Wiki.Parser
8 import           Test.HUnit
9 import           Text.ParserCombinators.Parsec
10
11
12 parseWiki :: String -> Either String WikiPage
13 parseWiki src = case parse wikiPage "" src of
14                   Left  err  -> Left (show err)
15                   Right page -> Right page
16
17
18 testData :: [Test]
19 testData = [ (parseWiki ""
20               ~?=
21               (Right []))
22
23            , (parseWiki "\n"
24               ~?=
25               (Right []))
26
27            , (parseWiki "=heading="
28               ~?=
29               (Right [ Heading 1 "heading" ]))
30
31            , (parseWiki "==      heading  ==  \n"
32               ~?=
33               (Right [ Heading 2 "heading" ]))
34
35            , (parseWiki "===== hello world =====\n"
36               ~?=
37               (Right [ Heading 5 "hello world" ]))
38
39            , (parseWiki "a =not a heading="
40               ~?=
41               (Right [ Paragraph [ Text "a =not a heading=" ]
42                      ]))
43
44            , (parseWiki "=h=\n\n=h="
45               ~?=
46               (Right [ Heading 1 "h"
47                      , Heading 1 "h"
48                      ]))
49            , (parseWiki "foo\nbar"
50               ~?=
51               (Right [ Paragraph [ Text "foo"
52                                  , Text "\n"
53                                  , Text "bar"
54                                  ]
55                      ]))
56            , (parseWiki "foo\nbar\n\nbaz\n"
57               ~?=
58               (Right [ Paragraph [ Text "foo"
59                                  , Text "\n"
60                                  , Text "bar"
61                                  ]
62                      , Paragraph [ Text "baz"
63                                  ]
64                      ]))
65
66            , (parseWiki "foo\n\n\nbar"
67               ~?=
68               (Right [ Paragraph [ Text "foo" ]
69                      , Paragraph [ Text "bar" ]
70                      ]))
71
72            , (parseWiki "foo\n=h="
73               ~?=
74               (Right [ Paragraph [ Text "foo" ]
75                      , Heading 1 "h"
76                      ]))
77
78            , (parseWiki "<!-- comment -->"
79               ~?=
80               (Right []))
81
82            , (parseWiki "<!-- comment -->foo"
83               ~?=
84               (Right [ Paragraph [ Text "foo" ]
85                      ]))
86
87            , (parseWiki "bar<!-- comment -->"
88               ~?=
89               (Right [ Paragraph [ Text "bar" ]
90                      ]))
91
92            , (parseWiki "foo<!-- comment -->bar"
93               ~?=
94               (Right [ Paragraph [ Text "foo"
95                                  , Text "bar"
96                                  ]
97                      ]))
98
99            , (parseWiki "<!-- comment -->=h="
100               ~?=
101               (Right [ Heading 1 "h" ]))
102
103            , (parseWiki "=h= <!---->"
104               ~?=
105               (Right [ Heading 1 "h" ]))
106
107            , (parseWiki "<!-- <!-- nested --> comment -->"
108               ~?=
109               (Right []))
110
111            , (parseWiki "[[Page]]"
112               ~?= 
113               (Right [ Paragraph [ PageLink (Just "Page") Nothing Nothing ]
114                      ]))
115
116            , (parseWiki "[[Page|Link to \"Page\"]]"
117               ~?=
118               (Right [ Paragraph [ PageLink (Just "Page") Nothing (Just "Link to \"Page\"") ]
119                      ]))
120
121            , (parseWiki "[[Page#foo]]"
122               ~?= 
123               (Right [ Paragraph [ PageLink (Just "Page") (Just "foo") Nothing ]
124                      ]))
125
126            , (parseWiki "[[#foo]]"
127               ~?= 
128               (Right [ Paragraph [ PageLink Nothing (Just "foo") Nothing ]
129                      ]))
130
131            , (parseWiki "[[Page#foo|Link to \"Page#foo\"]]"
132               ~?=
133               (Right [ Paragraph [ PageLink (Just "Page") (Just "foo") (Just "Link to \"Page#foo\"") ]
134                      ]))
135
136            , (parseWiki "foo [[Bar]] baz"
137               ~?=
138               (Right [ Paragraph [ Text "foo "
139                                  , PageLink (Just "Bar") Nothing Nothing
140                                  , Text " baz"
141                                  ]
142                      ]))
143
144            , (parseWiki "[[Foo]]\n[[Bar]]"
145               ~?= 
146               (Right [ Paragraph [ PageLink (Just "Foo") Nothing Nothing
147                                  , Text "\n"
148                                  , PageLink (Just "Bar") Nothing Nothing
149                                  ]
150                      ]))
151            ]