aboutsummaryrefslogtreecommitdiff
path: root/tests/parsetests.hs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/parsetests.hs')
-rw-r--r--tests/parsetests.hs56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/parsetests.hs b/tests/parsetests.hs
new file mode 100644
index 00000000..f66355e2
--- /dev/null
+++ b/tests/parsetests.hs
@@ -0,0 +1,56 @@
+module Main (main) where
+
+import Test.HUnit
+import RdrName (RdrName)
+import DynFlags (defaultDynFlags)
+import Haddock.Lex (tokenise)
+import Haddock.Parse (parseParas)
+import Haddock.Types
+
+instance Show RdrName where
+ show x = "RdrName"
+
+data ParseTest = ParseTest {
+ input :: String
+ , result :: (Maybe (Doc RdrName))
+ }
+
+tests :: [ParseTest]
+tests = [
+ ParseTest {
+ input = "foobar"
+ , result = Just $ DocParagraph $ DocString "foobar\n"
+ }
+
+ , ParseTest {
+ input = "foobar\n\nghci> fib 10\n55"
+ , result = Just $ DocAppend (DocParagraph $ DocString "foobar\n") (DocExamples $ [Example "fib 10" ["55"]])
+ }
+
+ , ParseTest {
+ input = "foobar\nghci> fib 10\n55"
+ , result = Nothing -- parse error
+ }
+
+ , ParseTest {
+ input = "foobar\n\n> some code"
+ , result = Just (DocAppend (DocParagraph (DocString "foobar\n")) (DocCodeBlock (DocString " some code\n")))
+ }
+
+ , ParseTest {
+ input = "foobar\n> some code"
+ , result = Nothing -- parse error
+ }
+ ]
+
+
+main = do
+ _ <- runTestTT $ TestList $ map testFromParseTest tests
+ return ();
+ where
+
+ testFromParseTest :: ParseTest -> Test
+ testFromParseTest (ParseTest input result) = TestCase $ assertEqual input (parse input) result
+
+ parse :: String -> Maybe (Doc RdrName)
+ parse input = parseParas $ tokenise defaultDynFlags input (0,0)