from test.vim_test_case import VimTestCase as _VimTest from test.constant import * class ParseSnippets_SimpleSnippet(_VimTest): files = { 'us/all.snippets': r""" snippet testsnip "Test Snippet" b! This is a test snippet! endsnippet """} keys = 'testsnip' + EX wanted = 'This is a test snippet!' class ParseSnippets_MissingEndSnippet(_VimTest): files = { 'us/all.snippets': r""" snippet testsnip "Test Snippet" b! This is a test snippet! """} keys = 'testsnip' + EX wanted = 'testsnip' + EX expected_error = r"Missing 'endsnippet' for 'testsnip' in \S+:4" class ParseSnippets_UnknownDirective(_VimTest): files = { 'us/all.snippets': r""" unknown directive """} keys = 'testsnip' + EX wanted = 'testsnip' + EX expected_error = r"Invalid line 'unknown directive' in \S+:2" class ParseSnippets_InvalidPriorityLine(_VimTest): files = { 'us/all.snippets': r""" priority - 50 """} keys = 'testsnip' + EX wanted = 'testsnip' + EX expected_error = r"Invalid priority '- 50' in \S+:2" class ParseSnippets_InvalidPriorityLine1(_VimTest): files = { 'us/all.snippets': r""" priority """} keys = 'testsnip' + EX wanted = 'testsnip' + EX expected_error = r"Invalid priority '' in \S+:2" class ParseSnippets_ExtendsWithoutFiletype(_VimTest): files = { 'us/all.snippets': r""" extends """} keys = 'testsnip' + EX wanted = 'testsnip' + EX expected_error = r"'extends' without file types in \S+:2" class ParseSnippets_ClearAll(_VimTest): files = { 'us/all.snippets': r""" snippet testsnip "Test snippet" This is a test. endsnippet clearsnippets """} keys = 'testsnip' + EX wanted = 'testsnip' + EX class ParseSnippets_ClearOne(_VimTest): files = { 'us/all.snippets': r""" clearsnippets toclear snippet testsnip "Test snippet" This is a test. endsnippet snippet toclear "Snippet to clear" Do not expand. endsnippet """} keys = 'toclear' + EX + '\n' + 'testsnip' + EX wanted = 'toclear' + EX + '\n' + 'This is a test.' class ParseSnippets_ClearTwo(_VimTest): files = { 'us/all.snippets': r""" clearsnippets testsnip toclear snippet testsnip "Test snippet" This is a test. endsnippet snippet toclear "Snippet to clear" Do not expand. endsnippet """} keys = 'toclear' + EX + '\n' + 'testsnip' + EX wanted = 'toclear' + EX + '\n' + 'testsnip' + EX class _ParseSnippets_MultiWord(_VimTest): files = { 'us/all.snippets': r""" snippet /test snip/ This is a test. endsnippet snippet !snip test! "Another snippet" This is another test. endsnippet snippet "snippet test" "Another snippet" b This is yet another test. endsnippet """} class ParseSnippets_MultiWord_Simple(_ParseSnippets_MultiWord): keys = 'test snip' + EX wanted = 'This is a test.' class ParseSnippets_MultiWord_Description(_ParseSnippets_MultiWord): keys = 'snip test' + EX wanted = 'This is another test.' class ParseSnippets_MultiWord_Description_Option(_ParseSnippets_MultiWord): keys = 'snippet test' + EX wanted = 'This is yet another test.' class _ParseSnippets_MultiWord_RE(_VimTest): files = { 'us/all.snippets': r""" snippet /[d-f]+/ "" r az test endsnippet snippet !^(foo|bar)$! "" r foo-bar test endsnippet snippet "(test ?)+" "" r re-test endsnippet """} class ParseSnippets_MultiWord_RE1(_ParseSnippets_MultiWord_RE): keys = 'abc def' + EX wanted = 'abc az test' class ParseSnippets_MultiWord_RE2(_ParseSnippets_MultiWord_RE): keys = 'foo' + EX + ' bar' + EX + '\nbar' + EX wanted = 'foo-bar test bar\t\nfoo-bar test' class ParseSnippets_MultiWord_RE3(_ParseSnippets_MultiWord_RE): keys = 'test test test' + EX wanted = 're-test' class ParseSnippets_MultiWord_Quotes(_VimTest): files = { 'us/all.snippets': r""" snippet "test snip" This is a test. endsnippet """} keys = 'test snip' + EX wanted = 'This is a test.' class ParseSnippets_MultiWord_WithQuotes(_VimTest): files = { 'us/all.snippets': r""" snippet !"test snip"! This is a test. endsnippet """} keys = '"test snip"' + EX wanted = 'This is a test.' class ParseSnippets_MultiWord_NoContainer(_VimTest): files = { 'us/all.snippets': r""" snippet test snip This is a test. endsnippet """} keys = 'test snip' + EX wanted = keys expected_error = "Invalid multiword trigger: 'test snip' in \S+:2" class ParseSnippets_MultiWord_UnmatchedContainer(_VimTest): files = { 'us/all.snippets': r""" snippet !inv snip/ This is a test. endsnippet """} keys = 'inv snip' + EX wanted = keys expected_error = "Invalid multiword trigger: '!inv snip/' in \S+:2" class ParseSnippets_Global_Python(_VimTest): files = { 'us/all.snippets': r""" global !p def tex(ins): return "a " + ins + " b" endglobal snippet ab x `!p snip.rv = tex("bob")` y endsnippet snippet ac x `!p snip.rv = tex("jon")` y endsnippet """} keys = 'ab' + EX + '\nac' + EX wanted = 'x a bob b y\nx a jon b y' class ParseSnippets_Global_Local_Python(_VimTest): files = { 'us/all.snippets': r""" global !p def tex(ins): return "a " + ins + " b" endglobal snippet ab x `!p first = tex("bob") snip.rv = "first"` `!p snip.rv = first` y endsnippet """} keys = 'ab' + EX wanted = 'x first a bob b y'