1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
15 # Tests for markdown rendering to markdown
16 module test_markdown_md
is test
19 import markdown_md_rendering
21 abstract class TestMarkdownMd
24 var md_renderer
= new MarkdownRenderer
26 fun md_to_md
(md
: String): String do
27 var doc
= md_parser
.parse
(md
)
29 return md_renderer
.render
(doc
)
37 fun test_no_trailings
is test
do
38 var md
= """# foo\n## foo\n### foo\n#### foo\n##### foo\n###### foo\n"""
39 var exp
= """# foo\n\n## foo\n\n### foo\n\n#### foo\n\n##### foo\n\n###### foo\n"""
40 assert md_to_md
(md
) == exp
43 fun test_trailings
is test
do
44 var md
= """# foo #\n## foo ##\n### foo ###\n#### foo ####\n##### foo #####\n"""
45 var exp
= """# foo #\n\n## foo ##\n\n### foo ###\n\n#### foo ####\n\n##### foo #####\n"""
46 assert md_to_md
(md
) == exp
49 fun test_setext
is test
do
50 var md
= """Foo *bar*\n=========\nFoo *bar*\n---------\n"""
51 var exp
= """Foo *bar*\n=========\n\nFoo *bar*\n---------\n"""
52 assert md_to_md
(md
) == exp
56 class TestMdBlockQuotes
60 fun test191
is test
do
61 var md
= """> # Foo\n> bar\n> baz\n"""
62 assert md_to_md
(md
) == md
65 fun test197
is test
do
66 var md
= """> foo\n---\n"""
67 var exp
= """> foo\n\n---\n"""
68 assert md_to_md
(md
) == exp
71 fun test198
is test
do
72 var md
= """> - foo\n- bar\n"""
73 var exp
= """> - foo\n\n- bar\n"""
74 assert md_to_md
(md
) == exp
77 fun test206
is test
do
78 var md
= """> foo\n> bar\n"""
79 assert md_to_md
(md
) == md
82 fun test213
is test
do
83 var md
= """> > > foo\n> bar\n"""
84 var exp
= """> > > foo\n> > > bar\n"""
85 assert md_to_md
(md
) == exp
93 fun test264
is test
do
94 var md
= """- foo\n- bar\n+ baz\n"""
95 var exp
= """- foo\n- bar\n\n+ baz\n"""
96 assert md_to_md
(md
) == exp
99 fun test265
is test
do
100 var md
= """1. foo\n2. bar\n3) baz\n"""
101 var exp
= """1. foo\n2. bar\n\n3) baz\n"""
102 assert md_to_md
(md
) == exp
105 fun test270
is test
do
106 var md
= """- foo\n - bar\n - baz\n\n bim\n"""
107 assert md_to_md
(md
) == md
110 fun test273
is test
do
111 var md
= """- a\n - b\n - c\n - d\n - e\n - f\n- g\n"""
112 var exp
= """- a\n- b\n- c\n- d\n- e\n- f\n- g\n"""
113 assert md_to_md
(md
) == exp
116 fun test274
is test
do
117 var md
= """1. a\n\n 2. b\n\n 3. c\n"""
118 var exp
= """1. a\n\n2. b\n\n3. c\n"""
119 assert md_to_md
(md
) == exp
122 fun test289
is test
do
123 var md
= """- a\n - b\n - c\n\n- d\n - e\n - f\n"""
124 var exp
= """- a\n\n - b\n - c\n\n- d\n\n - e\n - f\n"""
125 assert md_to_md
(md
) == exp
129 class TestMdkListItems
133 fun test217
is test
do
134 var md
= """1. A paragraph\n with two lines.\n\n indented code\n\n > A block quote.\n"""
135 var exp
= """1. A paragraph\n with two lines.\n\n indented code\n\n > A block quote.\n"""
136 assert md_to_md
(md
) == exp
139 fun test219
is test
do
140 var md
= """- one\n\n two\n"""
141 assert md_to_md
(md
) == md
144 fun test221
is test
do
145 var md
= """ - one\n\n two\n"""
146 var exp
= """- one\n\n two\n"""
147 assert md_to_md
(md
) == exp
151 # fun test223 is test do
152 # var md = """>>- one\n>>\n > > two\n"""
153 # var exp = """> > - one\n> >\n> > two\n"""
154 # assert md_to_md(md) == exp
157 fun test225
is test
do
158 var md
= """- foo\n\n bar\n"""
159 assert md_to_md
(md
) == md
162 fun test228
is test
do
163 var md
= """123456789. ok\n"""
164 assert md_to_md
(md
) == md
167 fun test230
is test
do
168 var md
= """0. ok\n"""
169 assert md_to_md
(md
) == md
172 fun test246
is test
do
173 var md
= """1. foo\n2.\n3. bar\n"""
174 assert md_to_md
(md
) == md
177 fun test254
is test
do
178 var md
= """ 1. A paragraph\n with two lines.\n"""
179 var exp
= """1. A paragraph\n with two lines.\n"""
180 assert md_to_md
(md
) == exp
184 # fun test255 is test do
185 # var md = """> 1. > Blockquote\n> continued here.\n"""
186 # var exp = """> 1. > Blockquote\n > continued here.\n"""
187 # assert md_to_md(md) == exp
191 class TestMdFencedCodeBlocks
195 fun test88
is test
do
196 var md
= """```\nfoo\n```\n"""
197 assert md_to_md
(md
) == md
200 fun test92
is test
do
201 var md
= """~~~\nfoo\n~~~\n"""
202 assert md_to_md
(md
) == md
205 fun test111
is test
do
206 var md
= """```ruby\ndef foo(x)\n return 3\nend\n```\n"""
207 assert md_to_md
(md
) == md
210 fun test112
is test
do
211 var md
= """~~~~~~\nSome markdown:\n~~~\n**hello**\n~~~\n~~~~~~\n"""
212 assert md_to_md
(md
) == md
216 class TestMdIndentedCodeBlocks
220 fun test75
is test
do
221 var md
= """ a code block\n"""
222 assert md_to_md
(md
) == md
225 fun test76
is test
do
226 var md
= """ a simple\n indented code block\n"""
227 assert md_to_md
(md
) == md
230 fun test80
is test
do
231 var md
= """ chunk1\n\n chunk2\n \n \n \n chunk3\n"""
232 assert md_to_md
(md
) == """ chunk1\n\n chunk2\n\n\n\n chunk3\n"""
235 fun test85
is test
do
236 var md
= """ foo\n bar\n"""
237 assert md_to_md
(md
) == md
240 fun test87
is test
do
241 var md
= """\t\tfoo \n"""
242 assert md_to_md
(md
) == md
246 class TestMdThematicBreaks
250 fun test13
is test
do
251 var md
= """***\n---\n___\n"""
252 var exp
= """***\n\n---\n\n___\n"""
253 assert md_to_md
(md
) == exp
256 fun test17
is test
do
257 var md
= """ ***\n ***\n ***\n"""
258 var exp
= """***\n\n***\n\n***\n"""
259 assert md_to_md
(md
) == exp
262 fun test20
is test
do
263 var md
= """_____________________________________\n"""
264 assert md_to_md
(md
) == md
267 fun test21
is test
do
268 var md
= """ - - -\n"""
269 var exp
= """- - -\n"""
270 assert md_to_md
(md
) == exp
273 fun test22
is test
do
274 var md
= """ ** * ** * ** * **\n"""
275 var exp
= """** * ** * ** * **\n"""
276 assert md_to_md
(md
) == exp
279 fun test23
is test
do
280 var md
= """- - - -\n"""
281 assert md_to_md
(md
) == md
285 class TestMdParagraphs
289 fun test182
is test
do
290 var md
= """aaa\n\nbbb\n"""
291 assert md_to_md
(md
) == md
294 fun test183
is test
do
295 var md
= """aaa\nbbb\n\nccc\nddd\n"""
296 assert md_to_md
(md
) == md
299 fun test186
is test
do
300 var md
= """aaa\n bbb\n ccc\n"""
301 var exp
= """aaa\nbbb\nccc\n"""
302 assert md_to_md
(md
) == exp
305 fun test187
is test
do
306 var md
= """ aaa\nbbb\n"""
307 var exp
= """aaa\nbbb\n"""
308 assert md_to_md
(md
) == exp
312 class TestMdHTMLBlocks
316 fun test116
is test
do
317 var md
= """<table><tr><td>\n<pre>\n*Hello*,\n\n_world_.\n</pre>\n\n</td></tr></table>\n"""
318 assert md_to_md
(md
) == md
321 fun test119
is test
do
322 var md
= """</div>\n*foo*\n"""
323 assert md_to_md
(md
) == md
326 fun test120
is test
do
327 var md
= """<DIV CLASS="foo">\n\n*Markdown*\n\n</DIV>\n"""
328 assert md_to_md
(md
) == md
331 fun test121
is test
do
332 var md
= """<div id="foo"\n class="bar">\n</div>\n"""
333 assert md_to_md
(md
) == md
336 fun test124
is test
do
337 var md
= """<div id="foo"\n*hi*\n"""
338 assert md_to_md
(md
) == md
341 fun test137
is test
do
342 var md
= """<pre language="haskell"><code>\nimport Text.HTML.TagSoup\n\nmain :: IO ()\nmain = print $ parseTags tags\n</code></pre>\n"""
343 assert md_to_md
(md
) == md
346 fun test138
is test
do
347 var md
= """<script type="text/javascript">\n// JavaScript example\n\ndocument.getElementById("demo").innerHTML = "Hello JavaScript!";\n</script>\n"""
348 assert md_to_md
(md
) == md
351 fun test139
is test
do
352 var md
= """<style\n type="text/css">\nh1 {color:red;}\n\np {color:blue;}\n</style>\n"""
353 assert md_to_md
(md
) == md
356 fun test149
is test
do
357 var md
= """<![CDATA[\nfunction matchwo(a,b)\n{\n if (a < b && a < 0) then {\n return 1;\n\n } else {\n\n return 0;\n }\n}\n]]>\n"""
358 assert md_to_md
(md
) == md
361 fun test150
is test
do
362 var md
= """ <!-- foo -->\n\n <!-- foo -->\n"""
363 assert md_to_md
(md
) == md
373 fun test_autolink
is test
do
374 var md
= """<http://foo.bar.baz/test?q=hello&id=22&boolean>\n"""
375 assert md_to_md
(md
) == md
378 fun test_automail
is test
do
379 var md
= """<MAILTO:FOO@BAR.BAZ>\n"""
380 assert md_to_md
(md
) == md
383 fun test462
is test
do
384 var md
= """[link](/uri "title")\n"""
385 assert md_to_md
(md
) == md
388 fun test463
is test
do
389 var md
= """[link](/uri)\n"""
390 assert md_to_md
(md
) == md
393 fun test464
is test
do
394 var md
= """[link]()\n"""
395 assert md_to_md
(md
) == md
398 fun test467
is test
do
399 var md
= """[link](</my%20uri>)\n"""
400 assert md_to_md
(md
) == md
403 fun test483
is test
do
404 var md
= """[link](/url 'title "and" title')\n"""
405 assert md_to_md
(md
) == """[link](/url "title \\"and\\" title")\n"""
408 fun test490
is test
do
409 var md
= """[link *foo **bar** `#`*](/uri)\n"""
410 assert md_to_md
(md
) == md
418 fun test546
is test
do
419 var md
= """![foo](/url "title")\n"""
420 assert md_to_md
(md
) == md
423 fun test552
is test
do
424 var md
= """![foo](train.jpg)\n"""
425 assert md_to_md
(md
) == md
428 fun test554
is test
do
429 var md
= """![foo](<url>)\n"""
430 assert md_to_md
(md
) == md
433 fun test555
is test
do
434 var md
= """![foo](train.jpg)\n"""
435 assert md_to_md
(md
) == md
439 class TestMdCodeSpans
443 fun test316
is test
do
444 var md
= """`foo`\n"""
445 assert md_to_md
(md
) == md
448 fun test319
is test
do
449 var md
= """``foo``\n"""
450 assert md_to_md
(md
) == md
453 fun test332
is test
do
454 var md
= """`foo``bar``\n"""
455 assert md_to_md
(md
) == md
459 class TestMdEmphasisAndStrongEmphasis
463 fun test333
is test
do
464 var md
= """*foo bar*\n"""
465 assert md_to_md
(md
) == md
468 fun test335
is test
do
469 var md
= """a*"foo"*\n"""
470 assert md_to_md
(md
) == md
473 fun test336
is test
do
474 var md
= """* a *\n"""
475 assert md_to_md
(md
) == md
478 fun test351
is test
do
479 var md
= """*(*foo*)*\n"""
480 assert md_to_md
(md
) == md
483 fun test360
is test
do
484 var md
= """**foo bar**\n"""
485 assert md_to_md
(md
) == md
488 fun test361
is test
do
489 var md
= """** foo bar**\n"""
490 assert md_to_md
(md
) == md
493 fun test364
is test
do
494 var md
= """__foo bar__\n"""
495 assert md_to_md
(md
) == md
498 fun test393
is test
do
499 var md
= """*foo**bar**baz*\n"""
500 assert md_to_md
(md
) == md
504 class TestMdLineBreaks
508 fun test609
is test
do
509 var md
= """foo\\\nbaz\n"""
510 assert md_to_md
(md
) == md
513 fun test612
is test
do
514 var md
= """foo\\\n bar\n"""
515 var exp
= """foo\\\nbar\n"""
516 assert md_to_md
(md
) == exp
519 fun test613
is test
do
520 var md
= """*foo \nbar*\n"""
521 assert md_to_md
(md
) == md
524 fun test619
is test
do
525 var md
= """foo\\\n"""
526 assert md_to_md
(md
) == md
529 fun test623
is test
do
530 var md
= """foo\nbaz\n"""
531 assert md_to_md
(md
) == md
539 fun test590
is test
do
540 var md
= """<a foo="bar" bam = 'baz <em>"</em>'\n_boolean zoop:33=zoop:33 />\n"""
541 assert md_to_md
(md
) == md
544 fun test591
is test
do
545 var md
= """Foo <responsive-image src="foo.jpg" />\n"""
546 assert md_to_md
(md
) == md
549 fun test596
is test
do
550 var md
= """<a href='bar'title=title>\n"""
551 assert md_to_md
(md
) == md
554 fun test599
is test
do
555 var md
= """foo <!-- this is a\ncomment - with hyphen -->\n"""
556 assert md_to_md
(md
) == md
559 fun test601
is test
do
560 var md
= """foo <!--> foo -->\n\nfoo <!-- foo--->\n"""
561 assert md_to_md
(md
) == md
564 fun test602
is test
do
565 var md
= """foo <?php echo $a; ?>\n"""
566 assert md_to_md
(md
) == md
569 fun test604
is test
do
570 var md
= """foo <![CDATA[>&<]]>\n"""
571 assert md_to_md
(md
) == md
574 fun test606
is test
do
575 var md
= """foo <a href="\\*">\n"""
576 assert md_to_md
(md
) == md
585 var md
= """\tfoo\tbaz\t\tbim\n"""
586 assert md_to_md
(md
) == md
590 var md
= """ \tfoo\tbaz\t\tbim\n"""
591 var exp
= """ foo\tbaz\t\tbim\n"""
592 assert md_to_md
(md
) == exp
596 var md
= """ a\ta\n ὐ\ta\n"""
597 assert md_to_md
(md
) == md
601 var md
= """ - foo\n\n\tbar\n"""
602 var exp
= """- foo\n\n bar\n"""
603 assert md_to_md
(md
) == exp
607 var md
= """ foo\n\tbar\n"""
608 var exp
= """ foo\n bar\n"""
609 assert md_to_md
(md
) == exp
613 var md
= """ - foo\n - bar\n\t - baz\n"""
614 var exp
= """- foo\n - bar\n - baz\n"""
615 assert md_to_md
(md
) == exp
618 fun test10
is test
do
619 var md
= """#\tFoo\n"""
620 var exp
= """# Foo\n"""
621 assert md_to_md
(md
) == exp
624 fun test11
is test
do
625 var md
= """*\t*\t*\t\n"""
626 assert md_to_md
(md
) == md
630 class TestMdBackslashEscapes
634 fun test292
is test
do
635 var md
= """\\\t\\A\\a\\ \\3\\φ\\«\n"""
636 assert md_to_md
(md
) == md
639 fun test295
is test
do
640 var md
= """foo\\\nbar\n"""
641 assert md_to_md
(md
) == md
644 fun test297
is test
do
645 var md
= """ \\[\\]\n"""
646 assert md_to_md
(md
) == md
649 fun test298
is test
do
650 var md
= """~~~\n\\[\\]\n~~~\n"""
651 assert md_to_md
(md
) == md
654 fun test299
is test
do
655 var md
= """<http://example.com?find=\\*>\n"""
656 assert md_to_md
(md
) == md
659 fun test300
is test
do
660 var md
= """<a href="/bar\\/)">\n"""
661 assert md_to_md
(md
) == md