|
| 1 | +vim9script noclear |
| 2 | + |
| 3 | +import "../after/ftplugin/markdown.vim" |
| 4 | + |
| 5 | +var italic_regex = markdown.italic_regex |
| 6 | +var bold_regex = markdown.bold_regex |
| 7 | +var code_regex = markdown.code_regex |
| 8 | +var strikethrough_regex = markdown.strikethrough_regex |
| 9 | + |
| 10 | +var src_name = 'testfile.md' |
| 11 | + |
| 12 | +def Generate_markdown_testfile() |
| 13 | + var lines =<< trim END |
| 14 | + Sed ut perspiciatis unde omnis iste **natus error sit voluptatem |
| 15 | + accusantium** doloremque *laudantium, totam rem aperiam, eaque ipsa quae |
| 16 | + ab illo inventore veritatis *et quasi architecto beatae vitae dicta |
| 17 | + sunt \*\*explicabo. Nemo *enim ipsam voluptatem* quia voluptas sit |
| 18 | + aspernatur **aut odit aut fugit,** sed quia consequuntur magni dolores eos |
| 19 | + qui ~~ratione voluptatem sequi nesciunt.~~ |
| 20 | + |
| 21 | + Neque porro quisquam \**est*\*, qui dolorem ipsum quia dolor sit amet, |
| 22 | + consectetur, adipisci velit, sed quia non numquam eius modi tempora |
| 23 | + incidunt ut labore et dolore *\*magnam\** aliquam quaerat voluptatem. Ut |
| 24 | + enim ad \~ minima veniam, quis nostrum exercitationem ullam corporis |
| 25 | + suscipit laboriosam, nisi \*ut aliquid ex ea \~~commodi consequatur? |
| 26 | + |
| 27 | + Quis autem ~vel eum iure reprehenderit qui in ea voluptate velit esse |
| 28 | + quam nihil molestiae consequatur,~ vel `illum qui \~ dolorem eum` fugiat quo |
| 29 | + voluptas nulla \` pariatur``? |
| 30 | + END |
| 31 | + writefile(lines, src_name) |
| 32 | +enddef |
| 33 | + |
| 34 | +def Cleanup_markdown_testfile() |
| 35 | + delete(src_name) |
| 36 | +enddef |
| 37 | + |
| 38 | +# Tests start here |
| 39 | +def g:Test_regex() |
| 40 | + Generate_markdown_testfile() |
| 41 | + |
| 42 | + exe $"edit {src_name}" |
| 43 | + setlocal conceallevel=0 |
| 44 | + |
| 45 | + # Italic |
| 46 | + var expected_pos = [[2, 26], [3, 29], [4, 26], [4, 48], |
| 47 | + [8, 24], [8, 28], [10, 30], [10, 41], [0, 0]] |
| 48 | + var actual_pos = [] |
| 49 | + var tmp = [] |
| 50 | + cursor(1, 1) |
| 51 | + while tmp != [0, 0] |
| 52 | + tmp = searchpos(italic_regex, 'W') |
| 53 | + add(actual_pos, tmp) |
| 54 | + endwhile |
| 55 | + assert_equal(expected_pos, actual_pos) |
| 56 | + |
| 57 | + # Bold |
| 58 | + expected_pos = [[1, 37], [2, 12], [5, 12], [5, 33], [0, 0]] |
| 59 | + actual_pos = [] |
| 60 | + tmp = [] |
| 61 | + cursor(1, 1) |
| 62 | + while tmp != [0, 0] |
| 63 | + tmp = searchpos(bold_regex, 'W') |
| 64 | + add(actual_pos, tmp) |
| 65 | + endwhile |
| 66 | + assert_equal(expected_pos, actual_pos) |
| 67 | + |
| 68 | + # Code |
| 69 | + expected_pos = [[15, 40], [15, 65], [0, 0]] |
| 70 | + actual_pos = [] |
| 71 | + tmp = [] |
| 72 | + cursor(1, 1) |
| 73 | + while tmp != [0, 0] |
| 74 | + tmp = searchpos(code_regex, 'W') |
| 75 | + add(actual_pos, tmp) |
| 76 | + endwhile |
| 77 | + assert_equal(expected_pos, actual_pos) |
| 78 | + |
| 79 | + # Strkethrough |
| 80 | + expected_pos = [[6, 5], [6, 41], [0, 0]] |
| 81 | + actual_pos = [] |
| 82 | + tmp = [] |
| 83 | + cursor(1, 1) |
| 84 | + while tmp != [0, 0] |
| 85 | + tmp = searchpos(strikethrough_regex, 'W') |
| 86 | + add(actual_pos, tmp) |
| 87 | + endwhile |
| 88 | + assert_equal(expected_pos, actual_pos) |
| 89 | + |
| 90 | + # redraw! |
| 91 | + # sleep 3 |
| 92 | + :%bw! |
| 93 | + Cleanup_markdown_testfile() |
| 94 | +enddef |
0 commit comments