diff src/testdir/test_exists.vim @ 12616:4767939d10cc v8.0.1186

patch 8.0.1186: still quite a few old style tests commit https://github.com/vim/vim/commit/4a6fcf8047de13c7949ab2f27f7774acaec4ae4d Author: Bram Moolenaar <Bram@vim.org> Date: Thu Oct 12 21:29:22 2017 +0200 patch 8.0.1186: still quite a few old style tests Problem: Still quite a few old style tests. Solution: Convert old to new style tests. (Yegappan Lakshmanan) Avoid ringing the bell while running tests.
author Christian Brabandt <cb@256bit.org>
date Thu, 12 Oct 2017 21:30:07 +0200
parents
children 2f4be7ca1b1b
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/src/testdir/test_exists.vim
@@ -0,0 +1,321 @@
+" Tests for the exists() function
+func Test_exists()
+  augroup myagroup
+      autocmd! BufEnter       *.my     echo "myfile edited"
+      autocmd! FuncUndefined  UndefFun exec "fu UndefFun()\nendfu"
+  augroup END
+  set rtp+=./sautest
+
+  " valid autocmd group
+  call assert_equal(1, exists('#myagroup'))
+  " valid autocmd group with garbage
+  call assert_equal(0, exists('#myagroup+b'))
+  " Valid autocmd group and event
+  call assert_equal(1, exists('#myagroup#BufEnter'))
+  " Valid autocmd group, event and pattern
+  call assert_equal(1, exists('#myagroup#BufEnter#*.my'))
+  " Valid autocmd event
+  call assert_equal(1, exists('#BufEnter'))
+  " Valid autocmd event and pattern
+  call assert_equal(1, exists('#BufEnter#*.my'))
+  " Non-existing autocmd group or event
+  call assert_equal(0, exists('#xyzagroup'))
+  " Non-existing autocmd group and valid autocmd event
+  call assert_equal(0, exists('#xyzagroup#BufEnter'))
+  " Valid autocmd group and event with no matching pattern
+  call assert_equal(0, exists('#myagroup#CmdwinEnter'))
+  " Valid autocmd group and non-existing autocmd event
+  call assert_equal(0, exists('#myagroup#xyzacmd'))
+  " Valid autocmd group and event and non-matching pattern
+  call assert_equal(0, exists('#myagroup#BufEnter#xyzpat'))
+  " Valid autocmd event and non-matching pattern
+  call assert_equal(0, exists('#BufEnter#xyzpat'))
+  " Empty autocmd group, event and pattern
+  call assert_equal(0, exists('###'))
+  " Empty autocmd group and event or empty event and pattern
+  call assert_equal(0, exists('##'))
+  " Valid autocmd event
+  call assert_equal(1, exists('##FileReadCmd'))
+  " Non-existing autocmd event
+  call assert_equal(0, exists('##MySpecialCmd'))
+
+  " Existing and working option (long form)
+  call assert_equal(1, exists('&textwidth'))
+  " Existing and working option (short form)
+  call assert_equal(1, exists('&tw'))
+  " Existing and working option with garbage
+  call assert_equal(0, exists('&tw-'))
+  " Global option
+  call assert_equal(1, exists('&g:errorformat'))
+  " Local option
+  call assert_equal(1, exists('&l:errorformat'))
+  " Negative form of existing and working option (long form)
+  call assert_equal(0, exists('&nojoinspaces'))
+  " Negative form of existing and working option (short form)
+  call assert_equal(0, exists('&nojs'))
+  " Non-existing option
+  call assert_equal(0, exists('&myxyzoption'))
+
+  " Existing and working option (long form)
+  call assert_equal(1, exists('+incsearch'))
+  " Existing and working option with garbage
+  call assert_equal(0, exists('+incsearch!1'))
+  " Existing and working option (short form)
+  call assert_equal(1, exists('+is'))
+  " Existing option that is hidden.
+  call assert_equal(0, exists('+autoprint'))
+
+  " Existing environment variable
+  let $EDITOR_NAME = 'Vim Editor'
+  call assert_equal(1, exists('$EDITOR_NAME'))
+  " Non-existing environment variable
+  call assert_equal(0, exists('$NON_ENV_VAR'))
+
+  " Valid internal function
+  call assert_equal(1, exists('*bufnr'))
+  " Valid internal function with ()
+  call assert_equal(1, exists('*bufnr()'))
+  " Non-existing internal function
+  call assert_equal(0, exists('*myxyzfunc'))
+  " Valid internal function with garbage
+  call assert_equal(0, exists('*bufnr&6'))
+  " Valid user defined function
+  call assert_equal(1, exists('*Test_exists'))
+  " Non-existing user defined function
+  call assert_equal(0, exists('*MyxyzFunc'))
+  " Function that may be created by FuncUndefined event
+  call assert_equal(0, exists('*UndefFun'))
+  " Function that may be created by script autoloading
+  call assert_equal(0, exists('*footest#F'))
+
+  " Valid internal command (full match)
+  call assert_equal(2, exists(':edit'))
+  " Valid internal command (full match) with garbage
+  call assert_equal(0, exists(':edit/a'))
+  " Valid internal command (partial match)
+  call assert_equal(1, exists(':q'))
+  " Non-existing internal command
+  call assert_equal(0, exists(':invalidcmd'))
+
+  " User defined command (full match)
+  command! MyCmd :echo 'My command'
+  call assert_equal(2, exists(':MyCmd'))
+  " User defined command (partial match)
+  command! MyOtherCmd :echo 'Another command'
+  call assert_equal(3, exists(':My'))
+
+  " Command modifier
+  call assert_equal(2, exists(':rightbelow'))
+
+  " Non-existing user defined command (full match)
+  delcommand MyCmd
+  call assert_equal(0, exists(':MyCmd'))
+
+  " Non-existing user defined command (partial match)
+  delcommand MyOtherCmd
+  call assert_equal(0, exists(':My'))
+
+  " Valid local variable
+  let local_var = 1
+  call assert_equal(1, exists('local_var'))
+  " Valid local variable with garbage
+  call assert_equal(0, exists('local_var%n'))
+  " Non-existing local variable
+  unlet local_var
+  call assert_equal(0, exists('local_var'))
+
+  " Non-existing autoload variable that may be autoloaded
+  call assert_equal(0, exists('footest#x'))
+
+  " Valid local list
+  let local_list = ["blue", "orange"]
+  call assert_equal(1, exists('local_list'))
+  " Valid local list item
+  call assert_equal(1, exists('local_list[1]'))
+  " Valid local list item with garbage
+  call assert_equal(0, exists('local_list[1]+5'))
+  " Invalid local list item
+  call assert_equal(0, exists('local_list[2]'))
+  " Non-existing local list
+  unlet local_list
+  call assert_equal(0, exists('local_list'))
+  " Valid local dictionary
+  let local_dict = {"xcord":100, "ycord":2}
+  call assert_equal(1, exists('local_dict'))
+  " Non-existing local dictionary
+  unlet local_dict
+  call assert_equal(0, exists('local_dict'))
+  " Existing local curly-brace variable
+  let str = "local"
+  let curly_{str}_var = 1
+  call assert_equal(1, exists('curly_{str}_var'))
+  " Non-existing local curly-brace variable
+  unlet curly_{str}_var
+  call assert_equal(0, exists('curly_{str}_var'))
+
+  " Existing global variable
+  let g:global_var = 1
+  call assert_equal(1, exists('g:global_var'))
+  " Existing global variable with garbage
+  call assert_equal(0, exists('g:global_var-n'))
+  " Non-existing global variable
+  unlet g:global_var
+  call assert_equal(0, exists('g:global_var'))
+  " Existing global list
+  let g:global_list = ["blue", "orange"]
+  call assert_equal(1, exists('g:global_list'))
+  " Non-existing global list
+  unlet g:global_list
+  call assert_equal(0, exists('g:global_list'))
+  " Existing global dictionary
+  let g:global_dict = {"xcord":100, "ycord":2}
+  call assert_equal(1, exists('g:global_dict'))
+  " Non-existing global dictionary
+  unlet g:global_dict
+  call assert_equal(0, exists('g:global_dict'))
+  " Existing global curly-brace variable
+  let str = "global"
+  let g:curly_{str}_var = 1
+  call assert_equal(1, exists('g:curly_{str}_var'))
+  " Non-existing global curly-brace variable
+  unlet g:curly_{str}_var
+  call assert_equal(0, exists('g:curly_{str}_var'))
+
+  " Existing window variable
+  let w:window_var = 1
+  call assert_equal(1, exists('w:window_var'))
+  " Non-existing window variable
+  unlet w:window_var
+  call assert_equal(0, exists('w:window_var'))
+  " Existing window list
+  let w:window_list = ["blue", "orange"]
+  call assert_equal(1, exists('w:window_list'))
+  " Non-existing window list
+  unlet w:window_list
+  call assert_equal(0, exists('w:window_list'))
+  " Existing window dictionary
+  let w:window_dict = {"xcord":100, "ycord":2}
+  call assert_equal(1, exists('w:window_dict'))
+  " Non-existing window dictionary
+  unlet w:window_dict
+  call assert_equal(0, exists('w:window_dict'))
+  " Existing window curly-brace variable
+  let str = "window"
+  let w:curly_{str}_var = 1
+  call assert_equal(1, exists('w:curly_{str}_var'))
+  " Non-existing window curly-brace variable
+  unlet w:curly_{str}_var
+  call assert_equal(0, exists('w:curly_{str}_var'))
+
+  " Existing tab variable
+  let t:tab_var = 1
+  call assert_equal(1, exists('t:tab_var'))
+  " Non-existing tab variable
+  unlet t:tab_var
+  call assert_equal(0, exists('t:tab_var'))
+  " Existing tab list
+  let t:tab_list = ["blue", "orange"]
+  call assert_equal(1, exists('t:tab_list'))
+  " Non-existing tab list
+  unlet t:tab_list
+  call assert_equal(0, exists('t:tab_list'))
+  " Existing tab dictionary
+  let t:tab_dict = {"xcord":100, "ycord":2}
+  call assert_equal(1, exists('t:tab_dict'))
+  " Non-existing tab dictionary
+  unlet t:tab_dict
+  call assert_equal(0, exists('t:tab_dict'))
+  " Existing tab curly-brace variable
+  let str = "tab"
+  let t:curly_{str}_var = 1
+  call assert_equal(1, exists('t:curly_{str}_var'))
+  " Non-existing tab curly-brace variable
+  unlet t:curly_{str}_var
+  call assert_equal(0, exists('t:curly_{str}_var'))
+
+  " Existing buffer variable
+  let b:buffer_var = 1
+  call assert_equal(1, exists('b:buffer_var'))
+  " Non-existing buffer variable
+  unlet b:buffer_var
+  call assert_equal(0, exists('b:buffer_var'))
+  " Existing buffer list
+  let b:buffer_list = ["blue", "orange"]
+  call assert_equal(1, exists('b:buffer_list'))
+  " Non-existing buffer list
+  unlet b:buffer_list
+  call assert_equal(0, exists('b:buffer_list'))
+  " Existing buffer dictionary
+  let b:buffer_dict = {"xcord":100, "ycord":2}
+  call assert_equal(1, exists('b:buffer_dict'))
+  " Non-existing buffer dictionary
+  unlet b:buffer_dict
+  call assert_equal(0, exists('b:buffer_dict'))
+  " Existing buffer curly-brace variable
+  let str = "buffer"
+  let b:curly_{str}_var = 1
+  call assert_equal(1, exists('b:curly_{str}_var'))
+  " Non-existing buffer curly-brace variable
+  unlet b:curly_{str}_var
+  call assert_equal(0, exists('b:curly_{str}_var'))
+
+  " Existing Vim internal variable
+  call assert_equal(1, exists('v:version'))
+  " Non-existing Vim internal variable
+  call assert_equal(0, exists('v:non_exists_var'))
+
+  " Existing script-local variable
+  let s:script_var = 1
+  call assert_equal(1, exists('s:script_var'))
+  " Non-existing script-local variable
+  unlet s:script_var
+  call assert_equal(0, exists('s:script_var'))
+  " Existing script-local list
+  let s:script_list = ["blue", "orange"]
+  call assert_equal(1, exists('s:script_list'))
+  " Non-existing script-local list
+  unlet s:script_list
+  call assert_equal(0, exists('s:script_list'))
+  " Existing script-local dictionary
+  let s:script_dict = {"xcord":100, "ycord":2}
+  call assert_equal(1, exists('s:script_dict'))
+  " Non-existing script-local dictionary
+  unlet s:script_dict
+  call assert_equal(0, exists('s:script_dict'))
+  " Existing script curly-brace variable
+  let str = "script"
+  let s:curly_{str}_var = 1
+  call assert_equal(1, exists('s:curly_{str}_var'))
+  " Non-existing script-local curly-brace variable
+  unlet s:curly_{str}_var
+  call assert_equal(0, exists('s:curly_{str}_var'))
+
+  " Existing script-local function
+  function! s:my_script_func()
+  endfunction
+
+  echo '*s:my_script_func: 1'
+  call assert_equal(1, exists('*s:my_script_func'))
+
+  " Non-existing script-local function
+  delfunction s:my_script_func
+
+  call assert_equal(0, exists('*s:my_script_func'))
+  unlet str
+
+  call assert_equal(1, g:footest#x)
+  call assert_equal(0, footest#F())
+  call assert_equal(0, UndefFun())
+endfunc
+
+" exists() test for Function arguments
+func FuncArg_Tests(func_arg, ...)
+  call assert_equal(1, exists('a:func_arg'))
+  call assert_equal(0, exists('a:non_exists_arg'))
+  call assert_equal(1, exists('a:1'))
+  call assert_equal(0, exists('a:2'))
+endfunc
+
+func Test_exists_funcarg()
+  call FuncArg_Tests("arg1", "arg2")
+endfunc