@@ -0,0 +1,79 @@
1+{-# LANGUAGE OverloadedStrings #-}
2+module Tests.Writers.RST (tests) where
3+
4+import Test.Framework
5+import Text.Pandoc.Builder
6+import Text.Pandoc
7+import Tests.Helpers
8+import Tests.Arbitrary()
9+
10+infix 4 =:
11+(=:) :: (ToString a, ToPandoc a)
12+ => String -> (a, String) -> Test
13+(=:) = test (writeRST def{ writerHighlight = True } . toPandoc)
14+
15+tests :: [Test]
16+tests = [ testGroup "rubrics"
17+ [ "in list item" =:
18+ bulletList [header 2 (text "foo")] =?>
19+ "- .. rubric:: foo"
20+ , "in definition list item" =:
21+ definitionList [(text "foo", [header 2 (text "bar"),
22+ para $ text "baz"])] =?>
23+ unlines
24+ [ "foo"
25+ , " .. rubric:: bar"
26+ , ""
27+ , " baz"]
28+ , "in block quote" =:
29+ blockQuote (header 1 (text "bar")) =?>
30+ " .. rubric:: bar"
31+ , "with id" =:
32+ blockQuote (headerWith ("foo",[],[]) 1 (text "bar")) =?>
33+ unlines
34+ [ " .. rubric:: bar"
35+ , " :name: foo"]
36+ , "with id class" =:
37+ blockQuote (headerWith ("foo",["baz"],[]) 1 (text "bar")) =?>
38+ unlines
39+ [ " .. rubric:: bar"
40+ , " :name: foo"
41+ , " :class: baz"]
42+ ]
43+ , testGroup "headings"
44+ [ "normal heading" =:
45+ header 1 (text "foo") =?>
46+ unlines
47+ [ "foo"
48+ , "==="]
49+ , "heading levels" =:
50+ header 1 (text "Header 1") <>
51+ header 3 (text "Header 2") <>
52+ header 2 (text "Header 2") <>
53+ header 1 (text "Header 1") <>
54+ header 4 (text "Header 2") <>
55+ header 5 (text "Header 3") <>
56+ header 3 (text "Header 2") =?>
57+ unlines
58+ [ "Header 1"
59+ , "========"
60+ , ""
61+ , "Header 2"
62+ , "--------"
63+ , ""
64+ , "Header 2"
65+ , "--------"
66+ , ""
67+ , "Header 1"
68+ , "========"
69+ , ""
70+ , "Header 2"
71+ , "--------"
72+ , ""
73+ , "Header 3"
74+ , "~~~~~~~~"
75+ , ""
76+ , "Header 2"
77+ , "--------"]
78+ ]
79+ ]