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

Move test/header.md to test/toc.vader
[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 # List
335
336 Given markdown;
337 - a & b
338 1. c > d
339
340 Execute (& and > are not marked as htmlError in lists):
341   AssertEqual SyntaxOf('-'), 'mkdListItem'
342   AssertEqual SyntaxOf('1.'), 'mkdListItem'
343   AssertNotEqual SyntaxOf('&'), 'htmlError'
344   AssertNotEqual SyntaxOf('>'), 'htmlError'
345
346 # HTML
347
348 Given markdown;
349 a
350
351 <p>b</p>
352
353 - <span>c</span>
354
355 Execute (HTML tag in text):
356   AssertEqual SyntaxOf('p'), 'htmlTagName'
357   AssertEqual SyntaxOf('<p>'), 'htmlTag'
358   AssertEqual SyntaxOf('</p>'), 'htmlEndTag'
359   AssertEqual SyntaxOf('span'), 'htmlTagName'
360   AssertEqual SyntaxOf('<span>'), 'htmlTag'
361   AssertEqual SyntaxOf('</span>'), 'htmlEndTag'