-Given mkd;
+Given markdown;
+a <http://b> c
+
+Execute (gx autolink):
+ let b:url = 'http://b'
+ let b:line = getline(1)
+ let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_GetUrlForPosition')
+ AssertEqual b:func(1, match(b:line, 'a') + 1), ''
+ AssertEqual b:func(1, match(b:line, '<') + 1), b:url
+ AssertEqual b:func(1, match(b:line, 'h') + 1), b:url
+ AssertEqual b:func(1, match(b:line, '>') + 1), b:url
+ AssertEqual b:func(1, match(b:line, 'c') + 1), ''
+
+Given markdown;
+a http://b.bb c
+
+Execute (gx implicit autolink):
+ let b:url = 'http://b.bb'
+ let b:line = getline(1)
+ let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_GetUrlForPosition')
+ AssertEqual b:func(1, match(b:line, 'a') + 1), ''
+ AssertEqual b:func(1, match(b:line, 'h') + 1), b:url
+ AssertEqual b:func(1, match(b:line, 'c') + 1), ''
+
+Given markdown;
+[a]: http://b "c"
+
+Execute (gx link reference definition):
+ let b:url = 'http://b'
+ let b:line = getline(1)
+ let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_GetUrlForPosition')
+ " TODO would be cool if all of the following gave the link.
+ AssertEqual b:func(1, match(b:line, 'a') + 1), ''
+ AssertEqual b:func(1, match(b:line, 'h') + 1), b:url
+ AssertEqual b:func(1, match(b:line, 'c') + 1), ''
+
+Given markdown;
+a [b](c) d
+
+Execute (gx autolink):
+ let b:url = 'c'
+ let b:line = getline(1)
+ let b:func = Markdown_GetFunc('vim-markdown/ftplugin/markdown.vim', 'Markdown_GetUrlForPosition')
+ AssertEqual b:func(1, match(b:line, 'a') + 1), ''
+ AssertEqual b:func(1, match(b:line, '[') + 1), b:url
+ AssertEqual b:func(1, match(b:line, 'b') + 1), b:url
+ AssertEqual b:func(1, match(b:line, ']') + 1), b:url
+ AssertEqual b:func(1, match(b:line, '(') + 1), b:url
+ AssertEqual b:func(1, match(b:line, 'c') + 1), b:url
+ AssertEqual b:func(1, match(b:line, ')') + 1), b:url
+ AssertEqual b:func(1, match(b:line, 'd') + 1), ''
+
+Given markdown;
+[ge_test.md](ge_test.md)
+
+Execute (ge opens file):
+ normal ge
+ AssertEqual @%, 'ge_test.md'
+ AssertEqual getline(1), 'ge test'
+
+Given markdown;
+[ge_test](ge_test)
+
+Execute (ge opens file without .md extensions):
+ let g:vim_markdown_no_extensions_in_markdown = 1
+ normal ge
+ AssertEqual @%, 'ge_test.md'
+ AssertEqual getline(1), 'ge test'
+ unlet g:vim_markdown_no_extensions_in_markdown
+
+Given markdown;
+[ge_test.md](ge_test.md)
+
+Execute (ge does not write before opening file):
+ normal ia
+ normal l
+ normal ge
+ AssertEqual @%, 'ge_test.md'
+ AssertEqual getline(1), 'ge test'
+
+Given markdown;
+[ge_test.md](ge_test.md)
+
+Execute (ge auto-write before opening file):
+ let g:vim_markdown_autowrite = 1
+ normal ia
+ normal l
+ AssertThrows normal ge
+ AssertEqual g:vader_exception, 'Vim(write):E382: Cannot write, ''buftype'' option is set'
+ unlet g:vim_markdown_autowrite
+
+Given markdown;
# a
b
normal [[
AssertEqual line('.'), 1
-Given mkd;
+Given markdown;
# a
b
normal [[
AssertEqual line('.'), 1
-Given mkd;
+Given markdown;
# a
b
normal []
AssertEqual line('.'), 1
-Given mkd;
+Given markdown;
# a
b