header 1
header 2
header 3
+
+Given markdown;
+ATX tests.
+
+# h1 space
+
+#h1 nospace
+
+# h1 2 spaces
+
+# h1 trailing hash #
+
+## h2 space
+
+##h2 nospace
+
+## h2 trailing hash ##
+
+### h3 space
+
+###h3 nospace
+
+### h3 trailing hash ###
+
+#### h4
+
+##### h5
+
+###### h6
+
+---
+
+Relative positions.
+
+# h1 before h2
+
+## h2 between h1s
+
+# h1 after h2
+
+---
+
+Setex tests.
+
+setex h1
+========
+
+setex h2
+--------
+
+setex h1 single punctuation
+=
+
+setex h1 punctuation longer than header
+================================
+
+Prevent list vs Setex confusion:
+
+- not Setex
+- because list
+
+---
+
+Mixed tests.
+
+setex h1 before atx
+===================
+
+## atx h2
+
+### atx h3
+
+# atx h1
+
+setex h2
+------------------
+
+### atx h3 2
+
+Execute (Toc multiple headers):
+ :Toc
+
+Expect (multiple headers):
+ h1 space
+ h1 nospace
+ h1 2 spaces
+ h1 trailing hash
+ h2 space
+ h2 nospace
+ h2 trailing hash
+ h3 space
+ h3 nospace
+ h3 trailing hash
+ h4
+ h5
+ h6
+ h1 before h2
+ h2 between h1s
+ h1 after h2
+ setex h1
+ setex h2
+ setex h1 single punctuation
+ setex h1 punctuation longer than header
+ setex h1 before atx
+ atx h2
+ atx h3
+ atx h1
+ setex h2
+ atx h3 2
+
+Execute:
+ :lclose
+
+Given markdown;
+# header 1
+
+## header 2
+
+### header 3
+
+Execute (Toc cursor on the current header):
+ normal! 4G
+ :Toc
+ AssertEqual line('.'), 2
+ :lclose
+ normal! G
+ :Toc
+ AssertEqual line('.'), 3
+ :lclose