lib/core/stream: LineIterator use CachedIterator
[nit.git] / lib / markdown2 / tests / test_markdown_location.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 express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 # Tests for markdown nodes location
16 module test_markdown_location is test
17
18 import test_markdown
19
20 abstract class TestMarkdownLocation
21 super TestMarkdown
22
23 redef var md_parser do
24 var parser = super
25 parser.github_mode = true
26 parser.wikilinks_mode = true
27 return parser
28 end
29
30 fun md_to_loc(md: String): String do
31 var node = parse_md(md)
32 var v = new TestMarkdownLocationVisitor
33 v.enter_visit(node)
34 return v.buffer.to_s
35 end
36 end
37
38 class TestMarkdownLocationVisitor
39 super MdVisitor
40
41 var buffer = new Buffer
42 var indent = 0
43
44 fun print_loc(node: MdNode) do
45 buffer.append "{" " * indent}{node.class_name}: {node.location}\n"
46 indent += 1
47 node.visit_all(self)
48 indent -= 1
49 end
50
51 redef fun visit(node) do print_loc(node)
52 end
53
54 class TestLocationOutput
55 super TestMarkdownLocation
56 test
57
58 fun test_atx_headings1 is test do
59 var md = """
60 # title 1
61 ## title 2
62 ### title 3
63 #### title 4
64 ##### title 5
65 ###### title 6
66 """
67 var loc = """
68 MdDocument: 1,1--6,14
69 MdHeading: 1,1--1,9
70 MdText: 1,3--1,9
71 MdHeading: 2,1--2,10
72 MdText: 2,4--2,10
73 MdHeading: 3,1--3,11
74 MdText: 3,5--3,11
75 MdHeading: 4,1--4,12
76 MdText: 4,6--4,12
77 MdHeading: 5,1--5,13
78 MdText: 5,7--5,13
79 MdHeading: 6,1--6,14
80 MdText: 6,8--6,14
81 """
82 assert md_to_loc(md) == loc
83 end
84
85 fun test_atx_headings_with_trailings is test do
86 var md = """
87 # title 1 #
88 ## title 2 ##
89 ### title 3 ###
90 #### title 4 ####
91 ##### title 5 #####
92 ###### title 6 ######
93 """
94 var loc = """
95 MdDocument: 1,1--6,21
96 MdHeading: 1,1--1,11
97 MdText: 1,3--1,9
98 MdHeading: 2,1--2,13
99 MdText: 2,4--2,10
100 MdHeading: 3,1--3,15
101 MdText: 3,5--3,11
102 MdHeading: 4,1--4,17
103 MdText: 4,6--4,12
104 MdHeading: 5,1--5,19
105 MdText: 5,7--5,13
106 MdHeading: 6,1--6,21
107 MdText: 6,8--6,14
108 """
109 assert md_to_loc(md) == loc
110 end
111
112 fun test_settext_headings is test do
113 var md = """
114 title 1
115 =======
116
117 title 2
118 -------
119 """
120 var loc = """
121 MdDocument: 1,1--5,7
122 MdHeading: 1,1--2,7
123 MdText: 1,1--1,7
124 MdHeading: 4,1--5,7
125 MdText: 4,1--4,7
126 """
127 assert md_to_loc(md) == loc
128 end
129
130 fun test_indented_code_spaces is test do
131 var md = """
132 some code
133
134 multi lines
135 """
136 var loc = """
137 MdDocument: 1,1--3,15
138 MdIndentedCodeBlock: 1,1--3,15
139 """
140 assert md_to_loc(md) == loc
141 end
142
143 fun test_indented_code_tabs is test do
144 var md = """
145 some code
146
147 multi lines
148 """
149 var loc = """
150 MdDocument: 1,1--3,15
151 MdIndentedCodeBlock: 1,1--3,15
152 """
153 assert md_to_loc(md) == loc
154 end
155
156 fun test_fenced_code is test do
157 var md = """
158 ~~~
159 some code
160
161 multi lines
162 ~~~
163 """
164 var loc = """
165 MdDocument: 1,1--5,3
166 MdFencedCodeBlock: 1,1--5,3
167 """
168 assert md_to_loc(md) == loc
169 end
170
171 fun test_thematic_breaks is test do
172 var md = """
173 ***
174
175 * * *
176
177 * * *
178 """
179 var loc = """
180 MdDocument: 1,1--5,5
181 MdThematicBreak: 1,1--1,3
182 MdThematicBreak: 3,1--3,5
183 MdThematicBreak: 5,1--5,5
184 """
185 assert md_to_loc(md) == loc
186 end
187
188 fun test_html_blocks1 is test do
189 var md = """
190 <p><a href="foo">bar</a></p>
191
192 <div>
193 <a href="foo">bar</a>
194 </div><hr />
195 """
196 var loc = """
197 MdDocument: 1,1--5,12
198 MdHtmlBlock: 1,1--1,28
199 MdHtmlBlock: 3,1--5,12
200 """
201 assert md_to_loc(md) == loc
202 end
203
204 fun test_paragraph1 is test do
205 var md = """
206 foo bar baz
207
208 line 1
209 line 2
210
211 other par
212 with multiple lines
213 """
214 var loc = """
215 MdDocument: 1,1--7,19
216 MdParagraph: 1,1--1,11
217 MdText: 1,1--1,11
218 MdParagraph: 3,1--4,6
219 MdText: 3,1--3,6
220 MdSoftLineBreak: 3,7--3,7
221 MdText: 4,1--4,6
222 MdParagraph: 6,1--7,19
223 MdText: 6,1--6,9
224 MdSoftLineBreak: 6,10--6,10
225 MdText: 7,1--7,19
226 """
227 assert md_to_loc(md) == loc
228 end
229
230 fun test_blockquotes is test do
231 var md = """
232 > foo
233 > bar
234 """
235 var loc = """
236 MdDocument: 1,1--2,5
237 MdBlockQuote: 1,1--2,5
238 MdParagraph: 1,3--2,5
239 MdText: 1,3--1,5
240 MdSoftLineBreak: 1,6--1,6
241 MdText: 2,3--2,5
242 """
243 assert md_to_loc(md) == loc
244 end
245
246 fun test_blockquotes_nested is test do
247 var md = """
248 > foo
249 > > foo
250 > > bar
251 """
252 var loc = """
253 MdDocument: 1,1--3,7
254 MdBlockQuote: 1,1--3,7
255 MdParagraph: 1,3--1,5
256 MdText: 1,3--1,5
257 MdBlockQuote: 2,3--3,7
258 MdParagraph: 2,5--3,7
259 MdText: 2,5--2,7
260 MdSoftLineBreak: 2,8--2,8
261 MdText: 3,5--3,7
262 """
263 assert md_to_loc(md) == loc
264 end
265
266 fun test_blockquotes_headings is test do
267 var md = """
268 > # Title 1
269 > ## Title 2 ##
270 """
271 var loc = """
272 MdDocument: 1,1--2,15
273 MdBlockQuote: 1,1--2,15
274 MdHeading: 1,3--1,11
275 MdText: 1,5--1,11
276 MdHeading: 2,3--2,15
277 MdText: 2,6--2,12
278 """
279 assert md_to_loc(md) == loc
280 end
281
282 fun test_blockquotes_thematic_breaks is test do
283 var md = """
284 > ***
285 > * * *
286 """
287 var loc = """
288 MdDocument: 1,1--2,7
289 MdBlockQuote: 1,1--2,7
290 MdThematicBreak: 1,3--1,5
291 MdThematicBreak: 2,3--2,7
292 """
293 assert md_to_loc(md) == loc
294 end
295
296 fun test_blockquotes_indented_code is test do
297 var md = """
298 > line 1
299 > line 2
300 """
301 var loc = """
302 MdDocument: 1,1--2,12
303 MdBlockQuote: 1,1--2,12
304 MdIndentedCodeBlock: 1,3--2,12
305 """
306 assert md_to_loc(md) == loc
307 end
308
309 fun test_blockquotes_fenced_code is test do
310 var md = """
311 > ~~~
312 > line 1
313 > line 2
314 > ~~~
315 """
316 var loc = """
317 MdDocument: 1,1--4,5
318 MdBlockQuote: 1,1--4,5
319 MdFencedCodeBlock: 1,3--4,5
320 """
321 assert md_to_loc(md) == loc
322 end
323
324 fun test_blockquotes_list is test do
325 var md = """
326 > * line 1
327 > * line 2
328 """
329 var loc = """
330 MdDocument: 1,1--2,10
331 MdBlockQuote: 1,1--2,10
332 MdUnorderedList: 1,3--2,10
333 MdListItem: 1,3--1,10
334 MdParagraph: 1,5--1,10
335 MdText: 1,5--1,10
336 MdListItem: 2,3--2,10
337 MdParagraph: 2,5--2,10
338 MdText: 2,5--2,10
339 """
340 assert md_to_loc(md) == loc
341 end
342
343 fun test_unordered_lists is test do
344 var md = """
345 * line 1
346 * line 2
347 """
348 var loc = """
349 MdDocument: 1,1--2,8
350 MdUnorderedList: 1,1--2,8
351 MdListItem: 1,1--1,8
352 MdParagraph: 1,3--1,8
353 MdText: 1,3--1,8
354 MdListItem: 2,1--2,8
355 MdParagraph: 2,3--2,8
356 MdText: 2,3--2,8
357 """
358 assert md_to_loc(md) == loc
359 end
360
361 fun test_ordered_lists is test do
362 var md = """
363 1) line 1
364 2) line 2
365 """
366 var loc = """
367 MdDocument: 1,1--2,9
368 MdOrderedList: 1,1--2,9
369 MdListItem: 1,1--1,9
370 MdParagraph: 1,4--1,9
371 MdText: 1,4--1,9
372 MdListItem: 2,1--2,9
373 MdParagraph: 2,4--2,9
374 MdText: 2,4--2,9
375 """
376 assert md_to_loc(md) == loc
377 end
378
379 fun test_list_headings is test do
380 var md = """
381 * # Title 1
382 * ## Title 2 ##
383 """
384 var loc = """
385 MdDocument: 1,1--2,15
386 MdUnorderedList: 1,1--2,15
387 MdListItem: 1,1--1,11
388 MdHeading: 1,3--1,11
389 MdText: 1,5--1,11
390 MdListItem: 2,1--2,15
391 MdHeading: 2,3--2,15
392 MdText: 2,6--2,12
393 """
394 assert md_to_loc(md) == loc
395 end
396
397 fun test_list_thematic_breaks is test do
398 var md = """
399 - ***
400 - * * *
401 """
402 var loc = """
403 MdDocument: 1,1--2,7
404 MdUnorderedList: 1,1--2,7
405 MdListItem: 1,1--1,5
406 MdThematicBreak: 1,3--1,5
407 MdListItem: 2,1--2,7
408 MdThematicBreak: 2,3--2,7
409 """
410 assert md_to_loc(md) == loc
411 end
412
413 fun test_list_indented_codes is test do
414 var md = """
415 - line 1
416 - line 2
417 """
418 var loc = """
419 MdDocument: 1,1--2,12
420 MdUnorderedList: 1,1--2,12
421 MdListItem: 1,1--1,12
422 MdIndentedCodeBlock: 1,3--1,12
423 MdListItem: 2,1--2,12
424 MdIndentedCodeBlock: 2,3--2,12
425 """
426 assert md_to_loc(md) == loc
427 end
428
429 fun test_list_fenced_codes is test do
430 var md = """
431 - ~~~
432 line 1
433 line 2
434 ~~~
435 """
436 var loc = """
437 MdDocument: 1,1--4,5
438 MdUnorderedList: 1,1--4,5
439 MdListItem: 1,1--4,5
440 MdFencedCodeBlock: 1,3--4,5
441 """
442 assert md_to_loc(md) == loc
443 end
444
445 fun test_list_blockquotes is test do
446 var md = """
447 - > line 1
448 > line 2
449 """
450 var loc = """
451 MdDocument: 1,1--2,10
452 MdUnorderedList: 1,1--2,10
453 MdListItem: 1,1--2,10
454 MdBlockQuote: 1,3--2,10
455 MdParagraph: 1,5--2,10
456 MdText: 1,5--1,10
457 MdSoftLineBreak: 1,11--1,11
458 MdText: 2,5--2,10
459 """
460 assert md_to_loc(md) == loc
461 end
462
463 fun test_list_pars is test do
464 var md = """
465 * line 1
466 line 2
467
468 * line 3
469 """
470 var loc = """
471 MdDocument: 1,1--4,8
472 MdUnorderedList: 1,1--4,8
473 MdListItem: 1,1--2,8
474 MdParagraph: 1,3--2,8
475 MdText: 1,3--1,8
476 MdSoftLineBreak: 1,9--1,9
477 MdText: 2,3--2,8
478 MdListItem: 4,1--4,8
479 MdParagraph: 4,3--4,8
480 MdText: 4,3--4,8
481 """
482 assert md_to_loc(md) == loc
483 end
484
485 fun test_list_nested is test do
486 var md = """
487 * foo
488 * foo
489 * bar
490 """
491 var loc = """
492 MdDocument: 1,1--3,7
493 MdUnorderedList: 1,1--3,7
494 MdListItem: 1,1--3,7
495 MdParagraph: 1,3--1,5
496 MdText: 1,3--1,5
497 MdUnorderedList: 2,3--3,7
498 MdListItem: 2,3--2,7
499 MdParagraph: 2,5--2,7
500 MdText: 2,5--2,7
501 MdListItem: 3,3--3,7
502 MdParagraph: 3,5--3,7
503 MdText: 3,5--3,7
504 """
505 assert md_to_loc(md) == loc
506 end
507
508 fun test_emphasis is test do
509 var md = """
510 An *emphasis* and a **strong emphasis**.
511 """
512 var loc = """
513 MdDocument: 1,1--1,40
514 MdParagraph: 1,1--1,40
515 MdText: 1,1--1,3
516 MdEmphasis: 1,4--1,13
517 MdText: 1,5--1,12
518 MdText: 1,14--1,20
519 MdStrongEmphasis: 1,21--1,39
520 MdText: 1,23--1,37
521 MdText: 1,40--1,40
522 """
523 assert md_to_loc(md) == loc
524 end
525
526 fun test_emphasis_nested is test do
527 var md = """
528 Another ***emphasis***.
529 """
530 var loc = """
531 MdDocument: 1,1--1,23
532 MdParagraph: 1,1--1,23
533 MdText: 1,1--1,8
534 MdEmphasis: 1,9--1,22
535 MdStrongEmphasis: 1,10--1,21
536 MdText: 1,12--1,19
537 MdText: 1,23--1,23
538 """
539 assert md_to_loc(md) == loc
540 end
541
542 fun test_emphasis_nested2 is test do
543 var md = """
544 Another ****emphasis****.
545 """
546 var loc = """
547 MdDocument: 1,1--1,25
548 MdParagraph: 1,1--1,25
549 MdText: 1,1--1,8
550 MdStrongEmphasis: 1,9--1,24
551 MdStrongEmphasis: 1,11--1,22
552 MdText: 1,13--1,20
553 MdText: 1,25--1,25
554 """
555 assert md_to_loc(md) == loc
556 end
557
558 fun test_emphasis_nested3 is test do
559 var md = """
560 Another *****emphasis*****.
561 """
562 var loc = """
563 MdDocument: 1,1--1,27
564 MdParagraph: 1,1--1,27
565 MdText: 1,1--1,8
566 MdEmphasis: 1,9--1,26
567 MdStrongEmphasis: 1,10--1,25
568 MdStrongEmphasis: 1,12--1,23
569 MdText: 1,14--1,21
570 MdText: 1,27--1,27
571 """
572 assert md_to_loc(md) == loc
573 end
574
575 fun test_emphasis_bad is test do
576 var md = """
577 Another ___ emphasis ___.
578 """
579 var loc = """
580 MdDocument: 1,1--1,25
581 MdParagraph: 1,1--1,25
582 MdText: 1,1--1,25
583 """
584 assert md_to_loc(md) == loc
585 end
586
587 fun test_emphasis_bad2 is test do
588 var md = """
589 Another **emphasis.
590 """
591 var loc = """
592 MdDocument: 1,1--1,19
593 MdParagraph: 1,1--1,19
594 MdText: 1,1--1,19
595 """
596 assert md_to_loc(md) == loc
597 end
598
599 fun test_inline_code is test do
600 var md = """
601 A `code` and another ``one``.
602 """
603 var loc = """
604 MdDocument: 1,1--1,29
605 MdParagraph: 1,1--1,29
606 MdText: 1,1--1,2
607 MdCode: 1,3--1,8
608 MdText: 1,9--1,21
609 MdCode: 1,22--1,28
610 MdText: 1,29--1,29
611 """
612 assert md_to_loc(md) == loc
613 end
614
615 fun test_inline_code_bad is test do
616 var md = """
617 A `code and another ``one``.
618 """
619 var loc = """
620 MdDocument: 1,1--1,28
621 MdParagraph: 1,1--1,28
622 MdText: 1,1--1,20
623 MdCode: 1,21--1,27
624 MdText: 1,28--1,28
625 """
626 assert md_to_loc(md) == loc
627 end
628
629 fun test_inline_autolink is test do
630 var md = """
631 An <http://autolink>.
632 """
633 var loc = """
634 MdDocument: 1,1--1,21
635 MdParagraph: 1,1--1,21
636 MdText: 1,1--1,3
637 MdLink: 1,4--1,20
638 MdText: 1,5--1,19
639 MdText: 1,21--1,21
640 """
641 assert md_to_loc(md) == loc
642 end
643
644 fun test_inline_autolink_bad is test do
645 var md = """
646 An http://autolink>.
647 """
648 var loc = """
649 MdDocument: 1,1--1,20
650 MdParagraph: 1,1--1,20
651 MdText: 1,1--1,20
652 """
653 assert md_to_loc(md) == loc
654 end
655
656 fun test_inline_autolink_bad2 is test do
657 var md = """
658 An <http://autolink.
659 """
660 var loc = """
661 MdDocument: 1,1--1,20
662 MdParagraph: 1,1--1,20
663 MdText: 1,1--1,20
664 """
665 assert md_to_loc(md) == loc
666 end
667
668 fun test_inline_automail is test do
669 var md = """
670 An <me.foo+@bar.baz>.
671 """
672 var loc = """
673 MdDocument: 1,1--1,21
674 MdParagraph: 1,1--1,21
675 MdText: 1,1--1,3
676 MdLink: 1,4--1,20
677 MdText: 1,5--1,19
678 MdText: 1,21--1,21
679 """
680 assert md_to_loc(md) == loc
681 end
682
683 fun test_inline_link is test do
684 var md = """
685 A [link](url/).
686 """
687 var loc = """
688 MdDocument: 1,1--1,15
689 MdParagraph: 1,1--1,15
690 MdText: 1,1--1,2
691 MdLink: 1,3--1,14
692 MdText: 1,4--1,7
693 MdText: 1,15--1,15
694 """
695 assert md_to_loc(md) == loc
696 end
697
698 fun test_inline_link_with_title is test do
699 var md = """
700 A [link](url/ "title").
701 """
702 var loc = """
703 MdDocument: 1,1--1,23
704 MdParagraph: 1,1--1,23
705 MdText: 1,1--1,2
706 MdLink: 1,3--1,22
707 MdText: 1,4--1,7
708 MdText: 1,23--1,23
709 """
710 assert md_to_loc(md) == loc
711 end
712
713 fun test_inline_link_with_content is test do
714 var md = """
715 A [`code` link](url/).
716 """
717 var loc = """
718 MdDocument: 1,1--1,22
719 MdParagraph: 1,1--1,22
720 MdText: 1,1--1,2
721 MdLink: 1,3--1,21
722 MdCode: 1,4--1,9
723 MdText: 1,10--1,14
724 MdText: 1,22--1,22
725 """
726 assert md_to_loc(md) == loc
727 end
728
729 fun test_inline_link_bad is test do
730 var md = """
731 A [link](url/.
732 """
733 var loc = """
734 MdDocument: 1,1--1,14
735 MdParagraph: 1,1--1,14
736 MdText: 1,1--1,14
737 """
738 assert md_to_loc(md) == loc
739 end
740
741 fun test_inline_image is test do
742 var md = """
743 A ![img](url/).
744 """
745 var loc = """
746 MdDocument: 1,1--1,15
747 MdParagraph: 1,1--1,15
748 MdText: 1,1--1,2
749 MdImage: 1,3--1,14
750 MdText: 1,5--1,7
751 MdText: 1,15--1,15
752 """
753 assert md_to_loc(md) == loc
754 end
755
756 fun test_inline_image_bad is test do
757 var md = """
758 A ![img](url/.
759 """
760 var loc = """
761 MdDocument: 1,1--1,14
762 MdParagraph: 1,1--1,14
763 MdText: 1,1--1,14
764 """
765 assert md_to_loc(md) == loc
766 end
767
768 fun test_inline_link_ref is test do
769 var md = """
770 A [link][].
771
772 [link]: url/
773 """
774 var loc = """
775 MdDocument: 1,1--1,11
776 MdParagraph: 1,1--1,11
777 MdText: 1,1--1,2
778 MdLink: 1,3--1,10
779 MdText: 1,4--1,7
780 MdText: 1,11--1,11
781 """
782 assert md_to_loc(md) == loc
783 end
784
785 fun test_inline_link_ref2 is test do
786 var md = """
787 A [foo][link].
788
789 [link]: url/
790 """
791 var loc = """
792 MdDocument: 1,1--1,14
793 MdParagraph: 1,1--1,14
794 MdText: 1,1--1,2
795 MdLink: 1,3--1,13
796 MdText: 1,4--1,6
797 MdText: 1,14--1,14
798 """
799 assert md_to_loc(md) == loc
800 end
801
802 fun test_inline_link_ref_bad is test do
803 var md = """
804 A [foo][link2].
805
806 [link]: url/
807 """
808 var loc = """
809 MdDocument: 1,1--1,15
810 MdParagraph: 1,1--1,15
811 MdText: 1,1--1,15
812 """
813 assert md_to_loc(md) == loc
814 end
815
816 fun test_inline_html is test do
817 var md = """
818 An <br /> break line.
819 """
820 var loc = """
821 MdDocument: 1,1--1,21
822 MdParagraph: 1,1--1,21
823 MdText: 1,1--1,3
824 MdHtmlInline: 1,4--1,9
825 MdText: 1,10--1,21
826 """
827 assert md_to_loc(md) == loc
828 end
829
830
831 fun test_inline_html2 is test do
832 var md = """
833 An <a href="link">*emph*</a>.
834 """
835 var loc = """
836 MdDocument: 1,1--1,29
837 MdParagraph: 1,1--1,29
838 MdText: 1,1--1,3
839 MdHtmlInline: 1,4--1,18
840 MdEmphasis: 1,19--1,24
841 MdText: 1,20--1,23
842 MdHtmlInline: 1,25--1,28
843 MdText: 1,29--1,29
844 """
845 assert md_to_loc(md) == loc
846 end
847
848 fun test_inline_escape is test do
849 var md = """
850 A text with \\"escaped chars\\".
851 """
852 var loc = """
853 MdDocument: 1,1--1,30
854 MdParagraph: 1,1--1,30
855 MdText: 1,1--1,30
856 """
857 assert md_to_loc(md) == loc
858 end
859
860 fun test_inline_soft_break is test do
861 var md = """
862 A text with
863 a soft break.
864 """
865 var loc = """
866 MdDocument: 1,1--2,13
867 MdParagraph: 1,1--2,13
868 MdText: 1,1--1,11
869 MdSoftLineBreak: 1,12--1,12
870 MdText: 2,1--2,13
871 """
872 assert md_to_loc(md) == loc
873 end
874
875 fun test_inline_soft_break2 is test do
876 var md = """A text with \na hard break.\n"""
877 var loc = """
878 MdDocument: 1,1--2,13
879 MdParagraph: 1,1--2,13
880 MdText: 1,1--1,11
881 MdSoftLineBreak: 1,12--1,13
882 MdText: 2,1--2,13
883 """
884 assert md_to_loc(md) == loc
885 end
886
887 fun test_inline_hard_break is test do
888 var md = """
889 A text with\\
890 a hard break.
891 """
892 var loc = """
893 MdDocument: 1,1--2,13
894 MdParagraph: 1,1--2,13
895 MdText: 1,1--1,11
896 MdHardLineBreak: 1,12--1,13
897 MdText: 2,1--2,13
898 """
899 assert md_to_loc(md) == loc
900 end
901
902 fun test_inline_hard_break2 is test do
903 var md = """A text with \na hard break.\n"""
904 var loc = """
905 MdDocument: 1,1--2,13
906 MdParagraph: 1,1--2,13
907 MdText: 1,1--1,11
908 MdHardLineBreak: 1,12--1,14
909 MdText: 2,1--2,13
910 """
911 assert md_to_loc(md) == loc
912 end
913 end