]> 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:

Import tests to syntax.vader from test/header.md
[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 ~~~ruby
172 code
173 ~~~
174
175 Execute (code blocks can have a language specifier):
176   AssertEqual SyntaxOf('c'), 'mkdCode'
177
178 Given markdown;
179 ```c++
180 code
181 ```
182
183 text
184
185 Execute (code blocks can be fenced with backticks and a language specifier):
186   AssertEqual SyntaxOf('code'), 'mkdCode'
187   AssertNotEqual SyntaxOf('text'), 'mkdCode'
188
189 # Indent Code Blocks
190
191 Given markdown;
192 a
193
194     b
195     c
196
197 Execute (indent code blocks):
198   AssertNotEqual SyntaxOf('a'), 'mkdCode'
199   AssertEqual SyntaxOf('b'), 'mkdCode'
200   AssertEqual SyntaxOf('c'), 'mkdCode'
201
202 Given markdown;
203 # a
204
205 b
206
207     c
208
209 Execute (indent code blocks after header):
210   AssertNotEqual SyntaxOf('a'), 'mkdCode'
211   AssertNotEqual SyntaxOf('b'), 'mkdCode'
212   AssertEqual SyntaxOf('c'), 'mkdCode'
213
214 Given markdown;
215 -   a
216
217     b
218
219         c
220
221 Execute (indent code blocks after list):
222   AssertNotEqual SyntaxOf('a'), 'mkdCode'
223   AssertNotEqual SyntaxOf('b'), 'mkdCode'
224   AssertEqual SyntaxOf('c'), 'mkdCode'
225
226 # Math
227
228 Given markdown;
229 a $x$ b
230 c $$y$$ d
231 \$e\$
232 \$\$f\$\$
233
234 Execute (math):
235   AssertNotEqual SyntaxOf('x'), 'mkdMath'
236   AssertNotEqual SyntaxOf('y'), 'mkdMath'
237   let g:vim_markdown_math=1
238   syn off | syn on
239   AssertNotEqual SyntaxOf('a'), 'mkdMath'
240   AssertNotEqual SyntaxOf('b'), 'mkdMath'
241   AssertNotEqual SyntaxOf('c'), 'mkdMath'
242   AssertNotEqual SyntaxOf('d'), 'mkdMath'
243   AssertNotEqual SyntaxOf('e'), 'mkdMath'
244   AssertNotEqual SyntaxOf('f'), 'mkdMath'
245   AssertEqual SyntaxOf('x'), 'mkdMath'
246   AssertEqual SyntaxOf('y'), 'mkdMath'
247   let g:vim_markdown_math=0
248   syn off | syn on
249   AssertNotEqual SyntaxOf('x'), 'mkdMath'
250   AssertNotEqual SyntaxOf('y'), 'mkdMath'
251
252 Given markdown;
253 a
254
255 $
256 b
257 $
258
259 c
260
261 Execute (multiline math):
262   let g:vim_markdown_math=1
263   syn off | syn on
264   AssertNotEqual SyntaxOf('a'), 'mkdMath'
265   AssertEqual SyntaxOf('b'), 'mkdMath'
266   AssertNotEqual SyntaxOf('c'), 'mkdMath'
267
268 Given markdown;
269 $ \sqrt{a}{b} $
270 $$ \frac{a}{b} $$
271
272 Execute (math tex highlighting):
273   let g:vim_markdown_math=0
274   syn off | syn on
275   AssertNotEqual SyntaxOf('sqrt'), 'texStatement'
276   AssertNotEqual SyntaxOf('frac'), 'texStatement'
277   let g:vim_markdown_math=1
278   syn off | syn on
279   AssertEqual SyntaxOf('sqrt'), 'texStatement'
280   AssertEqual SyntaxOf('frac'), 'texStatement'
281
282 # YAML frontmatter
283
284 Given markdown;
285 ---
286 a: b
287 ---
288
289 Execute (YAML frontmatter is controlled by the option):
290   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
291   let g:vim_markdown_frontmatter=1
292   syn off | syn on
293   AssertEqual SyntaxOf('a'), 'yamlBlockMappingKey'
294   let g:vim_markdown_frontmatter=0
295   syn off | syn on
296   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
297
298 Given markdown;
299
300 ---
301 a: b
302 ---
303
304 Execute (YAML frontmatter only works if it's the first thing in the file):
305   let g:vim_markdown_frontmatter=1
306   syn off | syn on
307   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
308
309 Given markdown;
310 ---
311 a: b
312 ---
313
314 ---
315
316 Execute (rules are not mistaken by YAML frontmatter delimiters):
317   let g:vim_markdown_frontmatter=1
318   syn off | syn on
319   AssertEqual SyntaxAt(5, 1), 'mkdRule'
320
321 # Header
322
323 Given markdown;
324 # #a
325 ccc
326
327 ## #b
328 ddd
329
330 Execute (header title starts with #):
331   AssertEqual SyntaxOf('a'), 'htmlH1'
332   AssertEqual SyntaxOf('b'), 'htmlH2'
333
334 Given markdown;
335 # h1 space
336
337 #h1 nospace
338
339 #  h1 2 spaces
340
341 # h1 trailing hash #
342
343 ## h2 space
344
345 ##h2 nospace
346
347 ## h2 trailing hash ##
348
349 ### h3 space
350
351 ###h3 nospace
352
353 ### h3 trailing hash ###
354
355 #### h4
356
357 ##### h5
358
359 ###### h6
360
361 Execute (atx headers):
362   AssertEqual SyntaxOf('# h1 space'), 'htmlH1'
363   AssertEqual SyntaxOf('#h1 nospace'), 'htmlH1'
364   AssertEqual SyntaxOf('#  h1 2 spaces'), 'htmlH1'
365   AssertEqual SyntaxOf('# h1 trailing hash #'), 'htmlH1'
366   AssertEqual SyntaxOf('## h2 space'), 'htmlH2'
367   AssertEqual SyntaxOf('##h2 nospace'), 'htmlH2'
368   AssertEqual SyntaxOf('## h2 trailing hash ##'), 'htmlH2'
369   AssertEqual SyntaxOf('### h3 space'), 'htmlH3'
370   AssertEqual SyntaxOf('###h3 nospace'), 'htmlH3'
371   AssertEqual SyntaxOf('### h3 trailing hash ###'), 'htmlH3'
372   AssertEqual SyntaxOf('#### h4'), 'htmlH4'
373   AssertEqual SyntaxOf('##### h5'), 'htmlH5'
374   AssertEqual SyntaxOf('###### h6'), 'htmlH6'
375
376 Given markdown;
377 # h1 before h2
378
379 ## h2 between h1s
380
381 # h1 after h2
382
383 Execute (atx headers relative positions):
384   AssertEqual SyntaxOf('# h1 before h2'), 'htmlH1'
385   AssertEqual SyntaxOf('## h2 between h1s'), 'htmlH2'
386   AssertEqual SyntaxOf('# h1 after h2'), 'htmlH1'
387
388 Given markdown;
389 setex h1
390 ========
391
392 setex h2
393 --------
394
395 setex h1 single punctuation
396 =
397
398 setex h1 punctuation longer than header
399 ================================
400
401 Execute (setex headers):
402   AssertEqual SyntaxOf('setex h1'), 'htmlH1'
403   AssertEqual SyntaxOf('^========$'), 'htmlH1'
404   AssertEqual SyntaxOf('setex h2'), 'htmlH2'
405   AssertEqual SyntaxOf('--------'), 'htmlH2'
406   AssertEqual SyntaxOf('setex h1 single punctuation'), 'htmlH1'
407   AssertEqual SyntaxOf('^=$'), 'htmlH1'
408   AssertEqual SyntaxOf('setex h1 punctuation longer than header'), 'htmlH1'
409   AssertEqual SyntaxOf('^================================$'), 'htmlH1'
410
411 Given markdown;
412 - not Setex
413 - because list
414
415 Execute (prevent list vs Setex confusion):
416   AssertNotEqual SyntaxOf('- not Setex'), 'htmlH2'
417   AssertNotEqual SyntaxOf('- becuase list'), 'htmlH2'
418
419 Given markdown;
420 setex h1 before atx
421 ===================
422
423 ## atx h2
424
425 ### atx h3
426
427 # atx h1
428
429 setex h2
430 ------------------
431
432 ### atx h3 2
433
434 Execute (mixed atx and setex headers):
435   AssertEqual SyntaxOf('setex h1 before atx'), 'htmlH1'
436   AssertEqual SyntaxOf('==================='), 'htmlH1'
437   AssertEqual SyntaxOf('## atx h2'), 'htmlH2'
438   AssertEqual SyntaxOf('### atx h3'), 'htmlH3'
439   AssertEqual SyntaxOf('# atx h1'), 'htmlH1'
440   AssertEqual SyntaxOf('setex h2'), 'htmlH2'
441   AssertEqual SyntaxOf('------------------'), 'htmlH2'
442
443 # List
444
445 Given markdown;
446 - a & b
447 1. c > d
448
449 Execute (& and > are not marked as htmlError in lists):
450   AssertEqual SyntaxOf('-'), 'mkdListItem'
451   AssertEqual SyntaxOf('1.'), 'mkdListItem'
452   AssertNotEqual SyntaxOf('&'), 'htmlError'
453   AssertNotEqual SyntaxOf('>'), 'htmlError'
454
455 # HTML
456
457 Given markdown;
458 a
459
460 <p>b</p>
461
462 - <span>c</span>
463
464 Execute (HTML tag in text):
465   AssertEqual SyntaxOf('p'), 'htmlTagName'
466   AssertEqual SyntaxOf('<p>'), 'htmlTag'
467   AssertEqual SyntaxOf('</p>'), 'htmlEndTag'
468   AssertEqual SyntaxOf('span'), 'htmlTagName'
469   AssertEqual SyntaxOf('<span>'), 'htmlTag'
470   AssertEqual SyntaxOf('</span>'), 'htmlEndTag'