]> gitweb @ CieloNegro.org - Rakka.git/blobdiff - test/WikiParserTest.hs
The parser of frightening definition list has now been written!
[Rakka.git] / test / WikiParserTest.hs
index b4e95b181f302dacb3e4ea2140946ca0c6cd8409..543401597cbc5b85ce733d7db72b9a2f94369188 100644 (file)
@@ -20,50 +20,59 @@ testData = [ (parseWiki ""
               ~?=
               (Right []))
 
+           , (parseWiki "\n"
+              ~?=
+              (Right []))
+
            , (parseWiki "=heading="
               ~?=
-              (Right [Block (Heading 1 "heading")]))
+              (Right [ Heading 1 "heading" ]))
 
            , (parseWiki "==      heading  ==  \n"
               ~?=
-              (Right [Block (Heading 2 "heading")]))
+              (Right [ Heading 2 "heading" ]))
 
            , (parseWiki "===== hello world =====\n"
               ~?=
-              (Right [Block (Heading 5 "hello world")]))
+              (Right [ Heading 5 "hello world" ]))
 
            , (parseWiki "a =not a heading="
               ~?=
-              (Right [Inline (Text "a =not a heading=")]))
+              (Right [ Paragraph [ Text "a =not a heading=" ]
+                     ]))
 
            , (parseWiki "=h=\n\n=h="
               ~?=
-              (Right [ Block (Heading 1 "h")
-                     , Block (Heading 1 "h")
+              (Right [ Heading 1 "h"
+                     , Heading 1 "h"
+                     ]))
+           , (parseWiki "foo\nbar"
+              ~?=
+              (Right [ Paragraph [ Text "foo"
+                                 , Text "\n"
+                                 , Text "bar"
+                                 ]
                      ]))
-
            , (parseWiki "foo\nbar\n\nbaz\n"
               ~?=
-              (Right [ Inline (Text "foo")
-                     , Inline (Text "\n")
-                     , Inline (Text "bar")
-                     , Block EmptyLine
-                     , Inline (Text "baz")
-                     , Inline (Text "\n")
+              (Right [ Paragraph [ Text "foo"
+                                 , Text "\n"
+                                 , Text "bar"
+                                 ]
+                     , Paragraph [ Text "baz"
+                                 ]
                      ]))
 
            , (parseWiki "foo\n\n\nbar"
               ~?=
-              (Right [ Inline (Text "foo")
-                     , Block EmptyLine
-                     , Inline (Text "bar")
+              (Right [ Paragraph [ Text "foo" ]
+                     , Paragraph [ Text "bar" ]
                      ]))
 
            , (parseWiki "foo\n=h="
               ~?=
-              (Right [ Inline (Text "foo")
-                     , Inline (Text "\n")
-                     , Block (Heading 1 "h")
+              (Right [ Paragraph [ Text "foo" ]
+                     , Heading 1 "h"
                      ]))
 
            , (parseWiki "<!-- comment -->"
@@ -72,25 +81,28 @@ testData = [ (parseWiki ""
 
            , (parseWiki "<!-- comment -->foo"
               ~?=
-              (Right [Inline (Text "foo")]))
+              (Right [ Paragraph [ Text "foo" ]
+                     ]))
 
-           , (parseWiki "foo<!-- comment -->"
+           , (parseWiki "bar<!-- comment -->"
               ~?=
-              (Right [Inline (Text "foo")]))
+              (Right [ Paragraph [ Text "bar" ]
+                     ]))
 
            , (parseWiki "foo<!-- comment -->bar"
               ~?=
-              (Right [ Inline (Text "foo")
-                     , Inline (Text "bar")
+              (Right [ Paragraph [ Text "foo"
+                                 , Text "bar"
+                                 ]
                      ]))
 
            , (parseWiki "<!-- comment -->=h="
               ~?=
-              (Right [Block (Heading 1 "h")]))
+              (Right [ Heading 1 "h" ]))
 
            , (parseWiki "=h= <!---->"
               ~?=
-              (Right [Block (Heading 1 "h")]))
+              (Right [ Heading 1 "h" ]))
 
            , (parseWiki "<!-- <!-- nested --> comment -->"
               ~?=
@@ -98,35 +110,133 @@ testData = [ (parseWiki ""
 
            , (parseWiki "[[Page]]"
               ~?= 
-              (Right [Inline (PageLink (Just "Page") Nothing Nothing)]))
+              (Right [ Paragraph [ PageLink (Just "Page") Nothing Nothing ]
+                     ]))
 
            , (parseWiki "[[Page|Link to \"Page\"]]"
               ~?=
-              (Right [Inline (PageLink (Just "Page") Nothing (Just "Link to \"Page\""))]))
+              (Right [ Paragraph [ PageLink (Just "Page") Nothing (Just "Link to \"Page\"") ]
+                     ]))
 
            , (parseWiki "[[Page#foo]]"
               ~?= 
-              (Right [Inline (PageLink (Just "Page") (Just "foo") Nothing)]))
+              (Right [ Paragraph [ PageLink (Just "Page") (Just "foo") Nothing ]
+                     ]))
 
            , (parseWiki "[[#foo]]"
               ~?= 
-              (Right [Inline (PageLink Nothing (Just "foo") Nothing)]))
+              (Right [ Paragraph [ PageLink Nothing (Just "foo") Nothing ]
+                     ]))
 
            , (parseWiki "[[Page#foo|Link to \"Page#foo\"]]"
               ~?=
-              (Right [Inline (PageLink (Just "Page") (Just "foo") (Just "Link to \"Page#foo\""))]))
+              (Right [ Paragraph [ PageLink (Just "Page") (Just "foo") (Just "Link to \"Page#foo\"") ]
+                     ]))
 
            , (parseWiki "foo [[Bar]] baz"
               ~?=
-              (Right [ Inline (Text "foo ")
-                     , Inline (PageLink (Just "Bar") Nothing Nothing)
-                     , Inline (Text " baz")
+              (Right [ Paragraph [ Text "foo "
+                                 , PageLink (Just "Bar") Nothing Nothing
+                                 , Text " baz"
+                                 ]
                      ]))
 
            , (parseWiki "[[Foo]]\n[[Bar]]"
               ~?= 
-              (Right [ Inline (PageLink (Just "Foo") Nothing Nothing)
-                     , Inline (Text "\n")
-                     , Inline (PageLink (Just "Bar") Nothing Nothing)
+              (Right [ Paragraph [ PageLink (Just "Foo") Nothing Nothing
+                                 , Text "\n"
+                                 , PageLink (Just "Bar") Nothing Nothing
+                                 ]
+                     ]))
+
+           , (parseWiki " foo"
+              ~?=
+              (Right [ LeadingSpaced [ Text "foo" ] ]))
+
+           , (parseWiki " foo\n  bar\n"
+              ~?=
+              (Right [ LeadingSpaced [ Text "foo"
+                                     , Text "\n"
+                                     , Text " bar"
+                                     ]
+                     ]))
+
+           , (parseWiki "foo\n bar\nbaz"
+              ~?=
+              (Right [ Paragraph     [ Text "foo" ]
+                     , LeadingSpaced [ Text "bar" ]
+                     , Paragraph     [ Text "baz" ]
+                     ]))
+
+           , (parseWiki "----"
+              ~?=
+              (Right [ HorizontalLine ]))
+
+           , (parseWiki "\nfoo\nbar\n----\n"
+              ~?=
+              (Right [ Paragraph [ Text "foo"
+                                 , Text "\n"
+                                 , Text "bar"
+                                 ]
+                     , HorizontalLine
+                     ]))
+
+           , (parseWiki "a----b"
+              ~?=
+              (Right [ Paragraph [ Text "a----b" ] ]))
+
+           , (parseWiki "* a"
+              ~?=
+              (Right [ List (ListElement Bullet [[Right (Text "a")]]) ]))
+
+           , (parseWiki "* a*"
+              ~?=
+              (Right [ List (ListElement Bullet [[Right (Text "a*")]]) ]))
+
+           , (parseWiki "* a\n* b\n"
+              ~?=
+              (Right [ List (ListElement Bullet [ [Right (Text "a")]
+                                                , [Right (Text "b")]
+                                                ])
+                     ]))
+
+           , (parseWiki "*a\n*#b\n*#c\n"
+              ~?=
+              (Right [ List (ListElement Bullet [ [ Right (Text "a")
+                                                  , Left (ListElement Numbered [ [Right (Text "b")]
+                                                                               , [Right (Text "c")]
+                                                                               ])
+                                                  ]
+                                                ])
+                     ]))
+
+           , (parseWiki "*a\n#b"
+              ~?=
+              (Right [ List (ListElement Bullet   [ [Right (Text "a")] ])
+                     , List (ListElement Numbered [ [Right (Text "b")] ])
+                     ]))
+
+           , (parseWiki "foo:bar"
+              ~?=
+              (Right [ Paragraph [ Text "foo"
+                                 , Text ":bar"
+                                 ]
+                     ]))
+
+           , (parseWiki "; foo: bar"
+              ~?=
+              (Right [ DefinitionList [Definition [Text "foo"] [Text "bar"]] ]))
+
+           , (parseWiki "; foo: bar\n"
+              ~?=
+              (Right [ DefinitionList [Definition [Text "foo"] [Text "bar"]] ]))
+
+           , (parseWiki "; foo\n: bar\n; bar\n: baz\n: baz"
+              ~?=
+              (Right [ DefinitionList [ Definition [Text "foo"] [ Text "bar" ]
+                                      , Definition [Text "bar"] [ Text "baz"
+                                                                , Text "\n"
+                                                                , Text "baz" ]
+                                      ]
                      ]))
            ]