ci: tests for macOS on Gitlab CI
[nit.git] / lib / markdown2 / tests / test_markdown_blocks.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
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
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
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 htmlress or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 # Test for markdown blocks parsing
16 module test_markdown_blocks is test
17
18 import test_markdown
19
20 class TestMarkdownBlocks
21 super TestMarkdownHtml
22 test
23
24 fun test_blocks_empty is test do
25 var md = ""
26 var html = ""
27 assert md_to_html(md) == html
28 end
29
30 fun test_blocks_tabs is test do
31 var md = """\tsome code\n"""
32 var html = """<pre><code>some code\n</code></pre>\n"""
33 assert md_to_html(md) == html
34 end
35
36 fun test_blocks_pagraph1 is test do
37 var md = "test\n"
38 var html = "<p>test</p>\n"
39 assert md_to_html(md) == html
40 end
41
42 fun test_blocks_pagraph2 is test do
43 var md = """line1\nline2\n\nline3 line4\n\nline5\n"""
44 var html = """<p>line1\nline2</p>\n<p>line3 line4</p>\n<p>line5</p>\n"""
45 assert md_to_html(md) == html
46 end
47
48 fun test_blocks_pagraph3 is test do
49 var md = """
50 Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
51 Aliquam hendrerit mi posuere lectus.
52 Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
53
54 Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
55 id sem consectetuer libero luctus adipiscing.
56 """
57 var html = """
58 <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
59 Aliquam hendrerit mi posuere lectus.
60 Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</p>
61 <p>Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
62 id sem consectetuer libero luctus adipiscing.</p>
63 """
64 assert md_to_html(md) == html
65 end
66
67 fun test_blocks_headings_1 is test do
68 var md = """
69 This is a H1
70 =============
71
72 This is a H2
73 -------------
74 """
75 var html = """
76 <h1>This is a H1</h1>
77 <h2>This is a H2</h2>
78 """
79 assert md_to_html(md) == html
80 end
81
82 fun test_blocks_headings_2 is test do
83 var md = """
84 # This is a H1
85
86 ## This is a H2
87 ###### This is a H6
88 """
89 var html = """
90 <h1>This is a H1</h1>
91 <h2>This is a H2</h2>
92 <h6>This is a H6</h6>
93 """
94 assert md_to_html(md) == html
95 end
96
97 fun test_blocks_headings_3 is test do
98 var md = """
99 # This is a H1 #
100
101 ## This is a H2 ##
102
103 ### This is a H3 ######
104 """
105 var html = """
106 <h1>This is a H1</h1>
107 <h2>This is a H2</h2>
108 <h3>This is a H3</h3>
109 """
110 assert md_to_html(md) == html
111 end
112
113 fun test_blocks_hr1 is test do
114 var md = """
115 * * *
116
117 ***
118
119 *****
120
121 - - -
122
123 ---------------------------------------
124 """
125 var html = "<hr />\n<hr />\n<hr />\n<hr />\n<hr />\n"
126 assert md_to_html(md) == html
127 end
128
129 fun test_blocks_bquote1 is test do
130 var md = """
131 > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
132 > consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
133 > Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
134 >
135 > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
136 > id sem consectetuer libero luctus adipiscing.
137 """
138 var html = """<blockquote>
139 <p>This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
140 consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
141 Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</p>
142 <p>Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
143 id sem consectetuer libero luctus adipiscing.</p>
144 </blockquote>
145 """
146 assert md_to_html(md) == html
147 end
148
149 fun test_blocks_bquote2 is test do
150 var md = """
151 > This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
152 consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
153 Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
154
155 > Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
156 id sem consectetuer libero luctus adipiscing.
157 """
158 var html = """<blockquote>
159 <p>This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
160 consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
161 Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.</p>
162 </blockquote>
163 <blockquote>
164 <p>Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
165 id sem consectetuer libero luctus adipiscing.</p>
166 </blockquote>
167 """
168 assert md_to_html(md) == html
169 end
170
171 fun test_blocks_bquote3 is test do
172 var md = """
173 > This is the first level of quoting.
174 >
175 > > This is nested blockquote.
176 >
177 > Back to the first level.
178 """
179 var html = """<blockquote>
180 <p>This is the first level of quoting.</p>
181 <blockquote>
182 <p>This is nested blockquote.</p>
183 </blockquote>
184 <p>Back to the first level.</p>
185 </blockquote>
186 """
187 assert md_to_html(md) == html
188 end
189
190 fun test_blocks_list1 is test do
191 var md = """
192 * Red
193 * Green
194 * Blue
195 """
196 var html = """<ul>
197 <li>Red</li>
198 <li>Green</li>
199 <li>Blue</li>
200 </ul>
201 """
202 assert md_to_html(md) == html
203 end
204
205 fun test_blocks_list2 is test do
206 var md = """
207 + Red
208 + Green
209 + Blue
210 """
211 var html = """<ul>
212 <li>Red</li>
213 <li>Green</li>
214 <li>Blue</li>
215 </ul>
216 """
217 assert md_to_html(md) == html
218 end
219
220 fun test_blocks_list3 is test do
221 var md = """
222 - Red
223 - Green
224 - Blue
225 """
226 var html = """<ul>
227 <li>Red</li>
228 <li>Green</li>
229 <li>Blue</li>
230 </ul>
231 """
232 assert md_to_html(md) == html
233 end
234
235 fun test_blocks_list4 is test do
236 var md = """
237 1. Bird
238 2. McHale
239 3. Parish
240 """
241 var html = """<ol>
242 <li>Bird</li>
243 <li>McHale</li>
244 <li>Parish</li>
245 </ol>
246 """
247 assert md_to_html(md) == html
248 end
249
250 fun test_blocks_list5 is test do
251 var md = """
252 3. Bird
253 1. McHale
254 8. Parish
255 """
256 var html = """<ol start=\"3\">
257 <li>Bird</li>
258 <li>McHale</li>
259 <li>Parish</li>
260 </ol>
261 """
262 assert md_to_html(md) == html
263 end
264
265 fun test_blocks_list6 is test do
266 var md = """
267 * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
268 Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
269 viverra nec, fringilla in, laoreet vitae, risus.
270 * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
271 Suspendisse id sem consectetuer libero luctus adipiscing.
272 """
273 var html = """
274 <ul>
275 <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
276 Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
277 viverra nec, fringilla in, laoreet vitae, risus.</li>
278 <li>Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
279 Suspendisse id sem consectetuer libero luctus adipiscing.</li>
280 </ul>
281 """
282 assert md_to_html(md) == html
283 end
284
285 fun test_blocks_list7 is test do
286 var md = """
287 * Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
288 Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
289 viverra nec, fringilla in, laoreet vitae, risus.
290 * Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
291 Suspendisse id sem consectetuer libero luctus adipiscing.
292 """
293 var html = """
294 <ul>
295 <li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
296 Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
297 viverra nec, fringilla in, laoreet vitae, risus.</li>
298 <li>Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
299 Suspendisse id sem consectetuer libero luctus adipiscing.</li>
300 </ul>
301 """
302 assert md_to_html(md) == html
303 end
304
305 fun test_blocks_list8 is test do
306 var md = """
307 * Bird
308
309 * Magic
310 """
311 var html = """
312 <ul>
313 <li>
314 <p>Bird</p>
315 </li>
316 <li>
317 <p>Magic</p>
318 </li>
319 </ul>
320 """
321 assert md_to_html(md) == html
322 end
323
324 fun test_blocks_list9 is test do
325 var md = """
326 1. This is a list item with two paragraphs. Lorem ipsum dolor
327 sit amet, consectetuer adipiscing elit. Aliquam hendrerit
328 mi posuere lectus.
329
330 Vestibulum enim wisi, viverra nec, fringilla in, laoreet
331 vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
332 sit amet velit.
333
334 2. Suspendisse id sem consectetuer libero luctus adipiscing.
335 """
336 var html = """
337 <ol>
338 <li>
339 <p>This is a list item with two paragraphs. Lorem ipsum dolor
340 sit amet, consectetuer adipiscing elit. Aliquam hendrerit
341 mi posuere lectus.</p>
342 <p>Vestibulum enim wisi, viverra nec, fringilla in, laoreet
343 vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
344 sit amet velit.</p>
345 </li>
346 <li>
347 <p>Suspendisse id sem consectetuer libero luctus adipiscing.</p>
348 </li>
349 </ol>
350 """
351 assert md_to_html(md) == html
352 end
353
354 fun test_blocks_list10 is test do
355 var md = """
356 * This is a list item with two paragraphs.
357
358 This is the second paragraph in the list item. You're
359 only required to indent the first line. Lorem ipsum dolor
360 sit amet, consectetuer adipiscing elit.
361
362 * Another item in the same list.
363 """
364 var html = """
365 <ul>
366 <li>
367 <p>This is a list item with two paragraphs.</p>
368 <p>This is the second paragraph in the list item. You're
369 only required to indent the first line. Lorem ipsum dolor
370 sit amet, consectetuer adipiscing elit.</p>
371 </li>
372 <li>
373 <p>Another item in the same list.</p>
374 </li>
375 </ul>
376 """
377 assert md_to_html(md) == html
378 end
379
380 fun test_blocks_list_ext is test do
381 var md = """
382 This is a paragraph
383 * and this is a list
384 """
385 var html = """
386 <p>This is a paragraph</p>
387 <ul>
388 <li>and this is a list</li>
389 </ul>
390 """
391 assert md_to_html(md) == html
392 end
393
394 fun test_blocks_indented_code1 is test do
395 var md = """
396 This is a normal paragraph:
397
398 This is a code block.
399 """
400 var html = """<p>This is a normal paragraph:</p>
401 <pre><code>This is a code block.
402 </code></pre>
403 """
404 assert md_to_html(md) == html
405 end
406
407 fun test_blocks_indented_code2 is test do
408 var md = """
409 Here is an example of AppleScript:
410
411 tell application "Foo"
412 beep
413 end tell
414
415 <div class="footer">
416 &copy; 2004 Foo Corporation
417 </div>
418 """
419 var html = """
420 <p>Here is an example of AppleScript:</p>
421 <pre><code>tell application &quot;Foo&quot;
422 beep
423 end tell
424
425 &lt;div class=&quot;footer&quot;&gt;
426 &amp;copy; 2004 Foo Corporation
427 &lt;/div&gt;
428 </code></pre>
429 """
430 assert md_to_html(md) == html
431 end
432
433 fun test_blocks_indented_code3 is test do
434 var md = """
435 Here is an example of AppleScript:
436
437 beep
438 """
439 var html = """
440 <p>Here is an example of AppleScript:</p>
441 <pre><code>beep
442 </code></pre>
443 """
444 assert md_to_html(md) == html
445 end
446
447 fun test_blocks_fenced_code1 is test do
448 var md = """
449 Here is an example of AppleScript:
450 ~~~
451 tell application "Foo"
452 beep
453 end tell
454
455 <div class="footer">
456 &copy; 2004 Foo Corporation
457 </div>
458 ~~~
459 """
460 var html = """
461 <p>Here is an example of AppleScript:</p>
462 <pre><code>tell application &quot;Foo&quot;
463 beep
464 end tell
465
466 &lt;div class=&quot;footer&quot;&gt;
467 &amp;copy; 2004 Foo Corporation
468 &lt;/div&gt;
469 </code></pre>
470 """
471 assert md_to_html(md) == html
472 end
473
474 fun test_blocks_fenced_code2 is test do
475 var md = """
476 Here is an example of AppleScript:
477 ```
478 tell application "Foo"
479 beep
480 end tell
481
482 <div class="footer">
483 &copy; 2004 Foo Corporation
484 </div>
485 ```
486 """
487 var html = """
488 <p>Here is an example of AppleScript:</p>
489 <pre><code>tell application &quot;Foo&quot;
490 beep
491 end tell
492
493 &lt;div class=&quot;footer&quot;&gt;
494 &amp;copy; 2004 Foo Corporation
495 &lt;/div&gt;
496 </code></pre>
497 """
498 assert md_to_html(md) == html
499 end
500
501 fun test_blocks_fenced_code3 is test do
502 var md = """
503 ```nit
504 print "Hello World!"
505 ```
506 """
507 var html = """
508 <pre><code class="language-nit">print &quot;Hello World!&quot;
509 </code></pre>
510 """
511 assert md_to_html(md) == html
512 end
513
514 fun test_blocks_fenced_code4 is test do
515 var md = """
516 ~~~
517 print "Hello"
518 ~~~
519 ~~~
520 print "World"
521 ~~~
522 """
523 var html = """
524 <pre><code>print &quot;Hello&quot;
525 </code></pre>
526 <pre><code>print &quot;World&quot;
527 </code></pre>
528 """
529 assert md_to_html(md) == html
530 end
531
532 fun test_blocks_fenced_code5 is test do
533 var md = """
534 ~~~
535 print "Hello"
536 ~~~
537 ~~~
538 print "World"
539 ~~~
540 """
541 var html = """
542 <pre><code>print &quot;Hello&quot;
543 </code></pre>
544 <pre><code>print &quot;World&quot;
545 </code></pre>
546 """
547 assert md_to_html(md) == html
548 end
549
550 fun test_blocks_nesting1 is test do
551 var md = """
552 > ## This is a header.
553 >
554 > 1. This is the first list item.
555 > 2. This is the second list item.
556 >
557 > Here's some example code:
558 >
559 > return shell_exec("echo $input | $markdown_script");
560 """
561 var html = """
562 <blockquote>
563 <h2>This is a header.</h2>
564 <ol>
565 <li>This is the first list item.</li>
566 <li>This is the second list item.</li>
567 </ol>
568 <p>Here's some example code:</p>
569 <pre><code>return shell_exec(&quot;echo $input | $markdown_script&quot;);
570 </code></pre>
571 </blockquote>
572 """
573 assert md_to_html(md) == html
574 end
575
576 fun test_blocks_nesting2 is test do
577 var md = """
578 * A list item with a blockquote:
579
580 > This is a blockquote
581 > inside a list item.
582 """
583 var html = """
584 <ul>
585 <li>
586 <p>A list item with a blockquote:</p>
587 <blockquote>
588 <p>This is a blockquote
589 inside a list item.</p>
590 </blockquote>
591 </li>
592 </ul>
593 """
594 assert md_to_html(md) == html
595 end
596
597 fun test_blocks_nesting3 is test do
598 var md = """
599 * A list item with a code block:
600
601 <code goes here>
602 """
603 var html = """
604 <ul>
605 <li>
606 <p>A list item with a code block:</p>
607 <pre><code>&lt;code goes here&gt;
608 </code></pre>
609 </li>
610 </ul>
611 """
612 assert md_to_html(md) == html
613 end
614
615 fun test_blocks_nesting4 is test do
616 var md = """
617 * Tab
618 * Tab
619 * Tab
620 """
621 var html = """
622 <ul>
623 <li>Tab
624 <ul>
625 <li>Tab
626 <ul>
627 <li>Tab</li>
628 </ul>
629 </li>
630 </ul>
631 </li>
632 </ul>
633 """
634 assert md_to_html(md) == html
635 end
636
637 fun test_blocks_nesting5 is test do
638 var md = """
639 * this
640
641 * sub
642
643 that
644 """
645 var html = """
646 <ul>
647 <li>
648 <p>this</p>
649 <ul>
650 <li>
651 <p>sub</p>
652 <p>that</p>
653 </li>
654 </ul>
655 </li>
656 </ul>
657 """
658 assert md_to_html(md) == html
659 end
660 end