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

f2fc9367532edcc21327ccd2b7e7eb99924084cc
[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_
35
36 Execute (italic text has underscores):
37   AssertEqual SyntaxOf('a'), 'htmlItalic'
38   AssertEqual SyntaxOf('b'), 'htmlItalic'
39
40 Given markdown;
41 a \*b\* c
42
43 Execute (not italic with escaped asterisks):
44   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
45   AssertNotEqual SyntaxOf('b'), 'htmlItalic'
46   AssertNotEqual SyntaxOf('c'), 'htmlItalic'
47
48 Given markdown;
49 a \_b\_ c
50
51 Execute (not italic with escaped underscores):
52   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
53   AssertNotEqual SyntaxOf('b'), 'htmlItalic'
54   AssertNotEqual SyntaxOf('c'), 'htmlItalic'
55
56 Given markdown;
57 a _b\_c_ d
58
59 Execute (italic with escaped underscores):
60   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
61   AssertEqual SyntaxOf('b'), 'htmlItalic'
62   AssertEqual SyntaxOf('c'), 'htmlItalic'
63   AssertNotEqual SyntaxOf('d'), 'htmlItalic'
64
65 Given markdown;
66 a_b_c
67
68 Execute (not italic underscores within text):
69   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
70   AssertNotEqual SyntaxOf('b'), 'htmlItalic'
71   AssertNotEqual SyntaxOf('c'), 'htmlItalic'
72
73 Given markdown;
74 a *b\*c* d
75
76 Execute (italic with escaped asterisks):
77   AssertNotEqual SyntaxOf('a'), 'htmlItalic'
78   AssertEqual SyntaxOf('b'), 'htmlItalic'
79   AssertEqual SyntaxOf('c'), 'htmlItalic'
80   AssertNotEqual SyntaxOf('d'), 'htmlItalic'
81
82 Given markdown;
83 a __b\_\_c__ d
84
85 Execute (bold with escaped underscores):
86   AssertNotEqual SyntaxOf('a'), 'htmlBold'
87   AssertEqual SyntaxOf('b'), 'htmlBold'
88   AssertEqual SyntaxOf('c'), 'htmlBold'
89   AssertNotEqual SyntaxOf('d'), 'htmlBold'
90
91 Given markdown;
92 _a b
93 c_ d
94
95 Execute (italic with underscores in multiple lines):
96   AssertEqual SyntaxOf('a'), 'htmlItalic'
97   AssertEqual SyntaxOf('b'), 'htmlItalic'
98   AssertEqual SyntaxOf('c'), 'htmlItalic'
99   AssertNotEqual SyntaxOf('d'), 'htmlItalic'
100
101 Given markdown;
102 __a b
103 c__ d
104
105 Execute (bold with underscores in multiple lines):
106   AssertEqual SyntaxOf('a'), 'htmlBold'
107   AssertEqual SyntaxOf('b'), 'htmlBold'
108   AssertEqual SyntaxOf('c'), 'htmlBold'
109   AssertNotEqual SyntaxOf('d'), 'htmlBold'
110
111 Given markdown;
112 ___a b
113 c___ d
114
115 Execute (bold italic with underscores in multiple lines):
116   AssertEqual SyntaxOf('a'), 'htmlBoldItalic'
117   AssertEqual SyntaxOf('b'), 'htmlBoldItalic'
118   AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
119   AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
120
121 Given markdown;
122 *a b
123 c* d
124
125 Execute (italic with asterisks in multiple lines):
126   AssertEqual SyntaxOf('a'), 'htmlItalic'
127   AssertEqual SyntaxOf('b'), 'htmlItalic'
128   AssertEqual SyntaxOf('c'), 'htmlItalic'
129   AssertNotEqual SyntaxOf('d'), 'htmlItalic'
130
131 Given markdown;
132 **a b
133 c** d
134
135 Execute (bold with asterisks in multiple lines):
136   AssertEqual SyntaxOf('a'), 'htmlBold'
137   AssertEqual SyntaxOf('b'), 'htmlBold'
138   AssertEqual SyntaxOf('c'), 'htmlBold'
139   AssertNotEqual SyntaxOf('d'), 'htmlBold'
140
141 Given markdown;
142 ***a b
143 c*** d
144
145 Execute (bold italic with asterisks in multiple lines):
146   AssertEqual SyntaxOf('a'), 'htmlBoldItalic'
147   AssertEqual SyntaxOf('b'), 'htmlBoldItalic'
148   AssertEqual SyntaxOf('c'), 'htmlBoldItalic'
149   AssertNotEqual SyntaxOf('d'), 'htmlBoldItalic'
150
151 # Links
152
153 Given markdown;
154 [a](b)
155
156 Execute (link with title):
157   AssertEqual SyntaxOf('a'), 'mkdLink'
158   AssertEqual SyntaxOf('b'), 'mkdURL'
159
160 Given markdown;
161 [a
162 b](c)
163
164 Execute (link text with newline):
165   AssertEqual SyntaxOf('a'), 'mkdLink'
166   AssertEqual SyntaxOf('b'), 'mkdLink'
167   AssertEqual SyntaxOf('c'), 'mkdURL'
168
169 Given markdown;
170 (a)
171
172 (b)
173
174 Execute (parenthesis not in link):
175   AssertNotEqual SyntaxOf('a'), 'mkdURL'
176   AssertNotEqual SyntaxOf('b'), 'mkdURL'
177
178 Given markdown;
179 [a](b) c [d](e)
180
181 Execute (multiple links on a line):
182   AssertNotEqual SyntaxOf('c'), 'mkdLink'
183   AssertNotEqual SyntaxOf('c'), 'mkdURL'
184
185 Given markdown;
186 [a] (b)
187
188 Execute (space is not allowed between link text and parenthesis):
189   AssertNotEqual SyntaxOf('a'), 'mkdLink'
190   AssertNotEqual SyntaxOf('b'), 'mkdURL'
191
192 Given markdown;
193 [a](b)
194
195 Execute (conceal link):
196   setlocal conceallevel=2
197   AssertEqual synconcealed(1, 1)[0], 1
198   AssertEqual synconcealed(1, 2)[0], 0
199   AssertEqual synconcealed(1, 3)[0], 1
200   AssertEqual synconcealed(1, 4)[0], 1
201   AssertEqual synconcealed(1, 4)[0], 1
202   AssertEqual synconcealed(1, 5)[0], 1
203   AssertEqual synconcealed(1, 6)[0], 1
204   setlocal conceallevel=0
205
206 # Autolinks
207
208 Given markdown;
209 a <http://b> c
210
211 Execute (autolink):
212   AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
213   AssertEqual SyntaxOf('<'), 'mkdDelimiter'
214   AssertEqual SyntaxOf('b'), 'mkdInlineURL'
215   AssertEqual SyntaxOf('>'), 'mkdDelimiter'
216   AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
217
218 Given markdown;
219 <HtTp://a>
220
221 Execute (autolink with scheme case is insensitive):
222   AssertEqual SyntaxOf('a'), 'mkdInlineURL'
223
224 Given markdown;
225 <a>
226
227 Execute (autolink without scheme is not a link):
228   AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
229
230 Given markdown;
231 < http://a >
232 <http://b c>
233 <http://d
234 e>
235
236 Execute (autolink with space is not a link):
237   AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
238   AssertNotEqual SyntaxOf('b'), 'mkdInlineURL'
239   AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
240   AssertNotEqual SyntaxOf('d'), 'mkdInlineURL'
241   AssertNotEqual SyntaxOf('e'), 'mkdInlineURL'
242
243 Given markdown;
244 \<http://a>
245
246 Execute (autolinks can be backslash escaped):
247   AssertNotEqual SyntaxOf('<'), 'mkdDelimiter'
248
249 Given markdown;
250 a (http://b.bb) c
251
252 Execute (autolink in parenthesis):
253   AssertNotEqual SyntaxOf('a'), 'mkdInlineURL'
254   AssertEqual SyntaxOf('('), 'mkdDelimiter'
255   AssertEqual SyntaxOf('b'), 'mkdInlineURL'
256   AssertEqual SyntaxOf(')'), 'mkdDelimiter'
257   AssertNotEqual SyntaxOf('c'), 'mkdInlineURL'
258
259 Given markdown;
260 [![a](http://b)](http://c)
261
262 Execute (autolink in link text):
263   AssertEqual SyntaxOf('!'), 'mkdDelimiter'
264   AssertEqual SyntaxOf('a'), 'mkdLink'
265   AssertEqual SyntaxOf('b'), 'mkdURL'
266   AssertEqual SyntaxOf('c'), 'mkdURL'
267
268 # Code Blocks
269
270 Given markdown;
271 ~~~
272 code
273 ~~~
274
275 Execute (code blocks can be fenced with tildes):
276   AssertEqual SyntaxOf('c'), 'mkdCode'
277
278 Given markdown;
279 ~~~~
280 code
281 ~~~~~
282
283 Execute (code blocks can be fenced with tildes longer than 3):
284   AssertEqual SyntaxOf('c'), 'mkdCode'
285
286 Given markdown;
287 ````
288 code
289 `````
290
291 Execute (code blocks can be fenced with backticks longer than 3):
292   AssertEqual SyntaxOf('c'), 'mkdCode'
293
294 Given markdown;
295 ~~~ruby
296 code
297 ~~~
298
299 Execute (code blocks can have a language specifier):
300   AssertEqual SyntaxOf('c'), 'mkdCode'
301
302 Given markdown;
303 ```c++
304 code
305 ```
306
307 text
308
309 Execute (code blocks can be fenced with backticks and a language specifier):
310   AssertEqual SyntaxOf('code'), 'mkdCode'
311   AssertNotEqual SyntaxOf('text'), 'mkdCode'
312
313 # Indent Code Blocks
314
315 Given markdown;
316 a
317
318     b
319     c
320
321 Execute (indent code blocks):
322   AssertNotEqual SyntaxOf('a'), 'mkdCode'
323   AssertEqual SyntaxOf('b'), 'mkdCode'
324   AssertEqual SyntaxOf('c'), 'mkdCode'
325
326 Given markdown;
327 # a
328
329 b
330
331     c
332
333 Execute (indent code blocks after header):
334   AssertNotEqual SyntaxOf('a'), 'mkdCode'
335   AssertNotEqual SyntaxOf('b'), 'mkdCode'
336   AssertEqual SyntaxOf('c'), 'mkdCode'
337
338 Given markdown;
339 -   a
340
341     b
342
343         c
344
345 Execute (indent code blocks after list):
346   AssertNotEqual SyntaxOf('a'), 'mkdCode'
347   AssertNotEqual SyntaxOf('b'), 'mkdCode'
348   AssertEqual SyntaxOf('c'), 'mkdCode'
349
350 Given markdown;
351     a
352     b
353
354 Execute (indent code block at beginning of file):
355   AssertEqual SyntaxOf('a'), 'mkdCode'
356   AssertEqual SyntaxOf('b'), 'mkdCode'
357
358 Given markdown;
359 ```c++
360 #include <iostream>
361 code
362 ```
363
364 ```ruby
365 def a
366 end
367 ```
368
369 Execute (fenced code block syntax with a language specifier):
370   let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
371   call b:func(0)
372   AssertEqual SyntaxOf('include'), 'cInclude'
373   AssertEqual SyntaxOf('code'), 'mkdSnippetCPP'
374   AssertEqual SyntaxOf('def'), 'rubyDefine'
375
376 Given markdown;
377 ```a+b-
378 code
379 ```
380
381 Execute (fenced code block syntax with an unknown language specifier):
382   let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'MarkdownRefreshSyntax')
383   call b:func(0)
384   AssertEqual SyntaxOf('code'), 'mkdSnippetA_B_'
385
386
387 Given markdown;
388 ```
389 =
390 a
391 -
392 ```
393
394 Execute (first = or - in fenced code block is not setex headers):
395   AssertEqual SyntaxOf('='), 'mkdCode'
396   AssertEqual SyntaxOf('-'), 'mkdCode'
397
398 # Math
399
400 Given markdown;
401 a $x$ b
402 c $$y$$ d
403 \$e\$
404 \$\$f\$\$
405
406 Execute (math):
407   AssertNotEqual SyntaxOf('x'), 'mkdMath'
408   AssertNotEqual SyntaxOf('y'), 'mkdMath'
409   let g:vim_markdown_math=1
410   syn off | syn on
411   AssertNotEqual SyntaxOf('a'), 'mkdMath'
412   AssertNotEqual SyntaxOf('b'), 'mkdMath'
413   AssertNotEqual SyntaxOf('c'), 'mkdMath'
414   AssertNotEqual SyntaxOf('d'), 'mkdMath'
415   AssertNotEqual SyntaxOf('e'), 'mkdMath'
416   AssertNotEqual SyntaxOf('f'), 'mkdMath'
417   AssertEqual SyntaxOf('x'), 'mkdMath'
418   AssertEqual SyntaxOf('y'), 'mkdMath'
419   let g:vim_markdown_math=0
420   syn off | syn on
421   AssertNotEqual SyntaxOf('x'), 'mkdMath'
422   AssertNotEqual SyntaxOf('y'), 'mkdMath'
423
424 Given markdown;
425 a
426
427 $
428 b
429 $
430
431 c
432
433 Execute (multiline math):
434   let g:vim_markdown_math=1
435   syn off | syn on
436   AssertNotEqual SyntaxOf('a'), 'mkdMath'
437   AssertEqual SyntaxOf('b'), 'mkdMath'
438   AssertNotEqual SyntaxOf('c'), 'mkdMath'
439
440 Given markdown;
441 $ \sqrt{a}{b} $
442 $$ \frac{a}{b} $$
443
444 Execute (math tex highlighting):
445   let g:vim_markdown_math=0
446   syn off | syn on
447   AssertNotEqual SyntaxOf('sqrt'), 'texStatement'
448   AssertNotEqual SyntaxOf('frac'), 'texStatement'
449   let g:vim_markdown_math=1
450   syn off | syn on
451   AssertEqual SyntaxOf('sqrt'), 'texStatement'
452   AssertEqual SyntaxOf('frac'), 'texStatement'
453
454 # YAML frontmatter
455
456 Given markdown;
457 ---
458 a: b
459 ---
460
461 Execute (YAML frontmatter is controlled by the option):
462   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
463   let g:vim_markdown_frontmatter=1
464   syn off | syn on
465   AssertEqual SyntaxOf('a'), 'yamlBlockMappingKey'
466   let g:vim_markdown_frontmatter=0
467   syn off | syn on
468   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
469
470 Given markdown;
471
472 ---
473 a: b
474 ---
475
476 Execute (YAML frontmatter only works if it's the first thing in the file):
477   let g:vim_markdown_frontmatter=1
478   syn off | syn on
479   AssertNotEqual SyntaxOf('a'), 'yamlBlockMappingKey'
480
481 Given markdown;
482 ---
483 a: b
484 ---
485
486 ---
487
488 Execute (rules are not mistaken by YAML frontmatter delimiters):
489   let g:vim_markdown_frontmatter=1
490   syn off | syn on
491   AssertEqual SyntaxAt(5, 1), 'mkdRule'
492   unlet g:vim_markdown_frontmatter
493
494 # TOML frontmatter
495
496 Given markdown;
497 +++
498 a = "b"
499 +++
500
501 Execute (TOML frontmatter is controlled by the option):
502   syn off | syn on
503   AssertNotEqual SyntaxOf('b'), 'tomlString'
504   let g:vim_markdown_toml_frontmatter=1
505   syn off | syn on
506   AssertEqual SyntaxOf('b'), 'tomlString'
507   let g:vim_markdown_toml_frontmatter=0
508   syn off | syn on
509   AssertNotEqual SyntaxOf('b'), 'tomlString'
510
511 Given markdown;
512
513 +++
514 a = "b"
515 +++
516
517 Execute (TOML frontmatter only works if it's the first thing in the file):
518   let g:vim_markdown_toml_frontmatter=1
519   syn off | syn on
520   AssertNotEqual SyntaxOf('b'), 'tomlString'
521   unlet g:vim_markdown_toml_frontmatter
522
523 # JSON frontmatter
524
525 Given markdown;
526 {
527   "a": "b"
528 }
529
530 Execute (JSON frontmatter is controlled by the option):
531   syn off | syn on
532   AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
533   let g:vim_markdown_json_frontmatter=1
534   syn off | syn on
535   AssertEqual SyntaxOf('a'), 'jsonKeyword'
536   let g:vim_markdown_json_frontmatter=0
537   syn off | syn on
538   AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
539
540 Given markdown;
541
542 {
543   "a": "b"
544 }
545
546 Execute (JSON frontmatter only works if it's the first thing in the file):
547   let g:vim_markdown_json_frontmatter=1
548   syn off | syn on
549   AssertNotEqual SyntaxOf('a'), 'jsonKeyword'
550   unlet g:vim_markdown_json_frontmatter
551
552 # Header
553
554 Given markdown;
555 # #a
556 ccc
557
558 ## #b
559 ddd
560
561 Execute (header title starts with #):
562   AssertEqual SyntaxOf('a'), 'htmlH1'
563   AssertEqual SyntaxOf('b'), 'htmlH2'
564
565 Given markdown;
566 # h1 space
567
568 #h1 nospace
569
570 #  h1 2 spaces
571
572 # h1 trailing hash #
573
574 ## h2 space
575
576 ##h2 nospace
577
578 ## h2 trailing hash ##
579
580 ### h3 space
581
582 ###h3 nospace
583
584 ### h3 trailing hash ###
585
586 #### h4
587
588 ##### h5
589
590 ###### h6
591
592 Execute (atx headers):
593   AssertEqual SyntaxOf('# h1 space'), 'htmlH1'
594   AssertEqual SyntaxOf('#h1 nospace'), 'htmlH1'
595   AssertEqual SyntaxOf('#  h1 2 spaces'), 'htmlH1'
596   AssertEqual SyntaxOf('# h1 trailing hash #'), 'htmlH1'
597   AssertEqual SyntaxOf('## h2 space'), 'htmlH2'
598   AssertEqual SyntaxOf('##h2 nospace'), 'htmlH2'
599   AssertEqual SyntaxOf('## h2 trailing hash ##'), 'htmlH2'
600   AssertEqual SyntaxOf('### h3 space'), 'htmlH3'
601   AssertEqual SyntaxOf('###h3 nospace'), 'htmlH3'
602   AssertEqual SyntaxOf('### h3 trailing hash ###'), 'htmlH3'
603   AssertEqual SyntaxOf('#### h4'), 'htmlH4'
604   AssertEqual SyntaxOf('##### h5'), 'htmlH5'
605   AssertEqual SyntaxOf('###### h6'), 'htmlH6'
606
607 Given markdown;
608 # h1 before h2
609
610 ## h2 between h1s
611
612 # h1 after h2
613
614 Execute (atx headers relative positions):
615   AssertEqual SyntaxOf('# h1 before h2'), 'htmlH1'
616   AssertEqual SyntaxOf('## h2 between h1s'), 'htmlH2'
617   AssertEqual SyntaxOf('# h1 after h2'), 'htmlH1'
618
619 Given markdown;
620 setex h1
621 ========
622
623 setex h2
624 --------
625
626 setex h1 single punctuation
627 =
628
629 setex h1 punctuation longer than header
630 ================================
631
632 Execute (setex headers):
633   AssertEqual SyntaxOf('setex h1'), 'htmlH1'
634   AssertEqual SyntaxOf('^========$'), 'htmlH1'
635   AssertEqual SyntaxOf('setex h2'), 'htmlH2'
636   AssertEqual SyntaxOf('--------'), 'htmlH2'
637   AssertEqual SyntaxOf('setex h1 single punctuation'), 'htmlH1'
638   AssertEqual SyntaxOf('^=$'), 'htmlH1'
639   AssertEqual SyntaxOf('setex h1 punctuation longer than header'), 'htmlH1'
640   AssertEqual SyntaxOf('^================================$'), 'htmlH1'
641
642 Given markdown;
643 - not Setex
644 - because list
645
646 Execute (prevent list vs Setex confusion):
647   AssertNotEqual SyntaxOf('- not Setex'), 'htmlH2'
648   AssertNotEqual SyntaxOf('- becuase list'), 'htmlH2'
649
650 Given markdown;
651 setex h1 before atx
652 ===================
653
654 ## atx h2
655
656 ### atx h3
657
658 # atx h1
659
660 setex h2
661 ------------------
662
663 ### atx h3 2
664
665 Execute (mixed atx and setex headers):
666   AssertEqual SyntaxOf('setex h1 before atx'), 'htmlH1'
667   AssertEqual SyntaxOf('==================='), 'htmlH1'
668   AssertEqual SyntaxOf('## atx h2'), 'htmlH2'
669   AssertEqual SyntaxOf('### atx h3'), 'htmlH3'
670   AssertEqual SyntaxOf('# atx h1'), 'htmlH1'
671   AssertEqual SyntaxOf('setex h2'), 'htmlH2'
672   AssertEqual SyntaxOf('------------------'), 'htmlH2'
673
674 # List
675
676 Given markdown;
677 - a & b
678 1. c > d
679
680 Execute (& and > are not marked as htmlError in lists):
681   AssertEqual SyntaxOf('-'), 'mkdListItem'
682   AssertEqual SyntaxOf('1.'), 'mkdListItem'
683   AssertNotEqual SyntaxOf('&'), 'htmlError'
684   AssertNotEqual SyntaxOf('>'), 'htmlError'
685
686 Given markdown;
687 1. a  
688 2. b
689
690 Execute (list after line break):
691   AssertEqual SyntaxOf('1'), 'mkdListItem'
692   AssertEqual SyntaxOf('2'), 'mkdListItem'
693
694 # HTML
695
696 Given markdown;
697 a
698
699 <p>b</p>
700
701 - <span>c</span>
702
703 Execute (HTML tag in text):
704   AssertEqual SyntaxOf('p'), 'htmlTagName'
705   AssertEqual SyntaxOf('<p>'), 'htmlTag'
706   AssertEqual SyntaxOf('</p>'), 'htmlEndTag'
707   AssertEqual SyntaxOf('span'), 'htmlTagName'
708   AssertEqual SyntaxOf('<span>'), 'htmlTag'
709   AssertEqual SyntaxOf('</span>'), 'htmlEndTag'