]> git.madduck.net Git - etc/vim.git/blob - test/syntax.vader

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Refactoring the fenced code block handling of folding
[etc/vim.git] / test / syntax.vader
1 Given markdown;
2 a **b** c
3
4 Execute (bold):
5   AssertNotEqual SyntaxOf('a'), 'htmlBold'
6   AssertEqual SyntaxOf('b'), 'htmlBold'
7   AssertNotEqual SyntaxOf('c'), 'htmlBold'
8
9 Given markdown;
10 a __b__ c
11
12 Execute (bold):
13   AssertNotEqual SyntaxOf('a'), 'htmlBold'
14   AssertEqual SyntaxOf('b'), 'htmlBold'
15   AssertNotEqual SyntaxOf('c'), 'htmlBold'
16
17 Given markdown;
18 a *b* c
19
20 Execute (italic):
21   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
22   AssertEqual SyntaxOf('b'), 'htmlItalic'
23   AssertNotEqual SyntaxOf('c'), 'htmlItalic'
24
25 Given markdown;
26 a _b_ c
27
28 Execute (italic):
29   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
30   AssertEqual SyntaxOf('b'), 'htmlItalic'
31   AssertNotEqual SyntaxOf('c'), 'htmlItalic'
32
33 Given markdown;
34 a \*b\* c
35
36 Execute (not italic with escaped asterisks):
37   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
38   AssertNotEqual SyntaxOf('b'), 'htmlItalic'
39   AssertNotEqual SyntaxOf('c'), 'htmlItalic'
40
41 Given markdown;
42 a \_b\_ c
43
44 Execute (not italic with escaped underscores):
45   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
46   AssertNotEqual SyntaxOf('b'), 'htmlItalic'
47   AssertNotEqual SyntaxOf('c'), 'htmlItalic'
48
49 Given markdown;
50 a _b\_c_ d
51
52 Execute (italic with escaped underscores):
53   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
54   AssertEqual SyntaxOf('b'), 'htmlItalic'
55   AssertEqual SyntaxOf('c'), 'htmlItalic'
56   AssertNotEqual SyntaxOf('d'), 'htmlItalic'
57
58 Given markdown;
59 a __b\_\_c__ d
60
61 Execute (bold with escaped underscores):
62   AssertNotEqual SyntaxOf('a'), 'htmlBold'
63   AssertEqual SyntaxOf('b'), 'htmlBold'
64   AssertEqual SyntaxOf('c'), 'htmlBold'
65   AssertNotEqual SyntaxOf('d'), 'htmlBold'
66
67 # Links
68
69 Given markdown;
70 [a](b)
71
72 Execute (link with title):
73   AssertEqual SyntaxOf('a'), 'mkdLink'
74   AssertEqual SyntaxOf('b'), 'mkdURL'
75
76 Given markdown;
77 (a)
78
79 (b)
80
81 Execute (parenthesis not in link):
82   AssertNotEqual SyntaxOf('a'), 'mkdURL'
83   AssertNotEqual SyntaxOf('b'), 'mkdURL'
84
85 Given markdown;
86 [a](b) c [d](e)
87
88 Execute (multiple links on a line):
89   AssertNotEqual SyntaxOf('c'), 'mkdLink'
90   AssertNotEqual SyntaxOf('c'), 'mkdURL'
91
92 # Autolinks
93
94 Given markdown;
95 a <http://b> c
96
97 Execute (autolink):
98   AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
99   AssertEqual SyntaxOf('<'), 'mkdDelimiter'
100   AssertEqual SyntaxOf('b'), 'mkdInlineURL'
101   AssertEqual SyntaxOf('>'), 'mkdDelimiter'
102   AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
103
104 Given markdown;
105 <HtTp://a>
106
107 Execute (autolink with scheme case is insensitive):
108   AssertEqual SyntaxOf('a'), 'mkdInlineURL'
109
110 Given markdown;
111 <notascheme://a>
112
113 Execute (autolink without known scheme is not a link):
114   AssertNotEqual SyntaxOf('n'), 'mkdInlineURL'
115
116 Given markdown;
117 <a>
118
119 Execute (autolink without scheme is not a link):
120   AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
121
122 Given markdown;
123 < http://a >
124 <http://b c>
125 <http://d
126 e>
127
128 Execute (autolink with space is not a link):
129   AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
130   AssertNotEqual SyntaxOf('b'), 'mkdInlineURL'
131   AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
132   AssertNotEqual SyntaxOf('d'), 'mkdInlineURL'
133   AssertNotEqual SyntaxOf('e'), 'mkdInlineURL'
134
135 Given markdown;
136 \<http://a>
137
138 Execute (autolinks can be backslash escaped):
139   AssertNotEqual SyntaxOf('<'), 'mkdDelimiter'
140
141 Given markdown;
142 a (http://b.bb) c
143
144 Execute (autolink in parenthesis):
145   AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
146   AssertEqual SyntaxOf('('), 'mkdDelimiter'
147   AssertEqual SyntaxOf('b'), 'mkdInlineURL'
148   AssertEqual SyntaxOf(')'), 'mkdDelimiter'
149   AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
150
151 Given markdown;
152 [![a](http://b)](http://c)
153
154 Execute (autolink in link text):
155   AssertEqual SyntaxOf('!'), 'mkdDelimiter'
156   AssertEqual SyntaxOf('a'), 'mkdLink'
157   AssertEqual SyntaxOf('b'), 'mkdURL'
158   AssertEqual SyntaxOf('c'), 'mkdURL'
159
160 # Code Blocks
161
162 Given markdown;
163 ~~~
164 code
165 ~~~
166
167 Execute (code blocks can be fenced with tildes):
168   AssertEqual SyntaxOf('c'), 'mkdCode'
169
170 Given markdown;
171 ~~~~
172 code
173 ~~~~~
174
175 Execute (code blocks can be fenced with tildes longer than 3):
176   AssertEqual SyntaxOf('c'), 'mkdCode'
177
178 Given markdown;
179 ````
180 code
181 `````
182
183 Execute (code blocks can be fenced with backticks longer than 3):
184   AssertEqual SyntaxOf('c'), 'mkdCode'
185
186 Given markdown;
187 ~~~ruby
188 code
189 ~~~
190
191 Execute (code blocks can have a language specifier):
192   AssertEqual SyntaxOf('c'), 'mkdCode'
193
194 Given markdown;
195 ```c++
196 code
197 ```
198
199 text
200
201 Execute (code blocks can be fenced with backticks and a language specifier):
202   AssertEqual SyntaxOf('code'), 'mkdCode'
203   AssertNotEqual SyntaxOf('text'), 'mkdCode'
204
205 # Indent Code Blocks
206
207 Given markdown;
208 a
209
210     b
211     c
212
213 Execute (indent code blocks):
214   AssertNotEqual SyntaxOf('a'), 'mkdCode'
215   AssertEqual SyntaxOf('b'), 'mkdCode'
216   AssertEqual SyntaxOf('c'), 'mkdCode'
217
218 Given markdown;
219 # a
220
221 b
222
223     c
224
225 Execute (indent code blocks after header):
226   AssertNotEqual SyntaxOf('a'), 'mkdCode'
227   AssertNotEqual SyntaxOf('b'), 'mkdCode'
228   AssertEqual SyntaxOf('c'), 'mkdCode'
229
230 Given markdown;
231 -   a
232
233     b
234
235         c
236
237 Execute (indent code blocks after list):
238   AssertNotEqual SyntaxOf('a'), 'mkdCode'
239   AssertNotEqual SyntaxOf('b'), 'mkdCode'
240   AssertEqual SyntaxOf('c'), 'mkdCode'
241
242 Given markdown;
243 ```c++
244 #include <iostream>
245 code
246 ```
247
248 ```ruby
249 def a
250 end
251 ```
252
253 Execute (fenced code block syntax with a language specifier):
254   let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_refresh_syntax')
255   call b:func(0)
256   AssertEqual SyntaxOf('include'), 'cInclude'
257   AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
258   AssertEqual SyntaxOf('def'), 'rubyDefine'
259
260 Given markdown;
261 ```a+b-
262 code
263 ```
264
265 Execute (fenced code block syntax with an unknown language specifier):
266   let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_refresh_syntax')
267   call b:func(0)
268   AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_'
269
270 # Math
271
272 Given markdown;
273 a $x$ b
274 c $$y$$ d
275 \$e\$
276 \$\$f\$\$
277
278 Execute (math):
279   AssertNotEqual SyntaxOf('x'), 'mkdMath'
280   AssertNotEqual SyntaxOf('y'), 'mkdMath'
281   let g:vim_markdown_math=1
282   syn off | syn on
283   AssertNotEqual SyntaxOf('a'), 'mkdMath'
284   AssertNotEqual SyntaxOf('b'), 'mkdMath'
285   AssertNotEqual SyntaxOf('c'), 'mkdMath'
286   AssertNotEqual SyntaxOf('d'), 'mkdMath'
287   AssertNotEqual SyntaxOf('e'), 'mkdMath'
288   AssertNotEqual SyntaxOf('f'), 'mkdMath'
289   AssertEqual SyntaxOf('x'), 'mkdMath'
290   AssertEqual SyntaxOf('y'), 'mkdMath'
291   let g:vim_markdown_math=0
292   syn off | syn on
293   AssertNotEqual SyntaxOf('x'), 'mkdMath'
294   AssertNotEqual SyntaxOf('y'), 'mkdMath'
295
296 Given markdown;
297 a
298
299 $
300 b
301 $
302
303 c
304
305 Execute (multiline math):
306   let g:vim_markdown_math=1
307   syn off | syn on
308   AssertNotEqual SyntaxOf('a'), 'mkdMath'
309   AssertEqual SyntaxOf('b'), 'mkdMath'
310   AssertNotEqual SyntaxOf('c'), 'mkdMath'
311
312 Given markdown;
313 $ \sqrt{a}{b} $
314 $$ \frac{a}{b} $$
315
316 Execute (math tex highlighting):
317   let g:vim_markdown_math=0
318   syn off | syn on
319   AssertNotEqual SyntaxOf('sqrt'), 'texStatement'
320   AssertNotEqual SyntaxOf('frac'), 'texStatement'
321   let g:vim_markdown_math=1
322   syn off | syn on
323   AssertEqual SyntaxOf('sqrt'), 'texStatement'
324   AssertEqual SyntaxOf('frac'), 'texStatement'
325
326 # YAML frontmatter
327
328 Given markdown;
329 ---
330 a: b
331 ---
332
333 Execute (YAML frontmatter is controlled by the option):
334   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
335   let g:vim_markdown_frontmatter=1
336   syn off | syn on
337   AssertEqual SyntaxOf('a'), 'yamlBlockMappingKey'
338   let g:vim_markdown_frontmatter=0
339   syn off | syn on
340   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
341
342 Given markdown;
343
344 ---
345 a: b
346 ---
347
348 Execute (YAML frontmatter only works if it's the first thing in the file):
349   let g:vim_markdown_frontmatter=1
350   syn off | syn on
351   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
352
353 Given markdown;
354 ---
355 a: b
356 ---
357
358 ---
359
360 Execute (rules are not mistaken by YAML frontmatter delimiters):
361   let g:vim_markdown_frontmatter=1
362   syn off | syn on
363   AssertEqual SyntaxAt(5, 1), 'mkdRule'
364
365 # Header
366
367 Given markdown;
368 # #a
369 ccc
370
371 ## #b
372 ddd
373
374 Execute (header title starts with #):
375   AssertEqual SyntaxOf('a'), 'htmlH1'
376   AssertEqual SyntaxOf('b'), 'htmlH2'
377
378 Given markdown;
379 # h1 space
380
381 #h1 nospace
382
383 #  h1 2 spaces
384
385 # h1 trailing hash #
386
387 ## h2 space
388
389 ##h2 nospace
390
391 ## h2 trailing hash ##
392
393 ### h3 space
394
395 ###h3 nospace
396
397 ### h3 trailing hash ###
398
399 #### h4
400
401 ##### h5
402
403 ###### h6
404
405 Execute (atx headers):
406   AssertEqual SyntaxOf('# h1 space'), 'htmlH1'
407   AssertEqual SyntaxOf('#h1 nospace'), 'htmlH1'
408   AssertEqual SyntaxOf('#  h1 2 spaces'), 'htmlH1'
409   AssertEqual SyntaxOf('# h1 trailing hash #'), 'htmlH1'
410   AssertEqual SyntaxOf('## h2 space'), 'htmlH2'
411   AssertEqual SyntaxOf('##h2 nospace'), 'htmlH2'
412   AssertEqual SyntaxOf('## h2 trailing hash ##'), 'htmlH2'
413   AssertEqual SyntaxOf('### h3 space'), 'htmlH3'
414   AssertEqual SyntaxOf('###h3 nospace'), 'htmlH3'
415   AssertEqual SyntaxOf('### h3 trailing hash ###'), 'htmlH3'
416   AssertEqual SyntaxOf('#### h4'), 'htmlH4'
417   AssertEqual SyntaxOf('##### h5'), 'htmlH5'
418   AssertEqual SyntaxOf('###### h6'), 'htmlH6'
419
420 Given markdown;
421 # h1 before h2
422
423 ## h2 between h1s
424
425 # h1 after h2
426
427 Execute (atx headers relative positions):
428   AssertEqual SyntaxOf('# h1 before h2'), 'htmlH1'
429   AssertEqual SyntaxOf('## h2 between h1s'), 'htmlH2'
430   AssertEqual SyntaxOf('# h1 after h2'), 'htmlH1'
431
432 Given markdown;
433 setex h1
434 ========
435
436 setex h2
437 --------
438
439 setex h1 single punctuation
440 =
441
442 setex h1 punctuation longer than header
443 ================================
444
445 Execute (setex headers):
446   AssertEqual SyntaxOf('setex h1'), 'htmlH1'
447   AssertEqual SyntaxOf('^========$'), 'htmlH1'
448   AssertEqual SyntaxOf('setex h2'), 'htmlH2'
449   AssertEqual SyntaxOf('--------'), 'htmlH2'
450   AssertEqual SyntaxOf('setex h1 single punctuation'), 'htmlH1'
451   AssertEqual SyntaxOf('^=$'), 'htmlH1'
452   AssertEqual SyntaxOf('setex h1 punctuation longer than header'), 'htmlH1'
453   AssertEqual SyntaxOf('^================================$'), 'htmlH1'
454
455 Given markdown;
456 - not Setex
457 - because list
458
459 Execute (prevent list vs Setex confusion):
460   AssertNotEqual SyntaxOf('- not Setex'), 'htmlH2'
461   AssertNotEqual SyntaxOf('- becuase list'), 'htmlH2'
462
463 Given markdown;
464 setex h1 before atx
465 ===================
466
467 ## atx h2
468
469 ### atx h3
470
471 # atx h1
472
473 setex h2
474 ------------------
475
476 ### atx h3 2
477
478 Execute (mixed atx and setex headers):
479   AssertEqual SyntaxOf('setex h1 before atx'), 'htmlH1'
480   AssertEqual SyntaxOf('==================='), 'htmlH1'
481   AssertEqual SyntaxOf('## atx h2'), 'htmlH2'
482   AssertEqual SyntaxOf('### atx h3'), 'htmlH3'
483   AssertEqual SyntaxOf('# atx h1'), 'htmlH1'
484   AssertEqual SyntaxOf('setex h2'), 'htmlH2'
485   AssertEqual SyntaxOf('------------------'), 'htmlH2'
486
487 # List
488
489 Given markdown;
490 - a & b
491 1. c > d
492
493 Execute (& and > are not marked as htmlError in lists):
494   AssertEqual SyntaxOf('-'), 'mkdListItem'
495   AssertEqual SyntaxOf('1.'), 'mkdListItem'
496   AssertNotEqual SyntaxOf('&'), 'htmlError'
497   AssertNotEqual SyntaxOf('>'), 'htmlError'
498
499 # HTML
500
501 Given markdown;
502 a
503
504 <p>b</p>
505
506 - <span>c</span>
507
508 Execute (HTML tag in text):
509   AssertEqual SyntaxOf('p'), 'htmlTagName'
510   AssertEqual SyntaxOf('<p>'), 'htmlTag'
511   AssertEqual SyntaxOf('</p>'), 'htmlEndTag'
512   AssertEqual SyntaxOf('span'), 'htmlTagName'
513   AssertEqual SyntaxOf('<span>'), 'htmlTag'
514   AssertEqual SyntaxOf('</span>'), 'htmlEndTag'