577 lines · 12.1 KB · Text
RawDownload
Tests for the exists() function.  vim: set ft=vim : STARTTEST:so small.vim:function! RunTest(str, result)    if exists(a:str) == a:result	echo "OK"    else	echo "FAILED: Checking for " . a:str    endifendfunction:function! TestExists()    augroup myagroup	autocmd! BufEnter *.my echo 'myfile edited'    augroup END     let test_cases = []     " valid autocmd group    let test_cases += [['#myagroup', 1]]    " valid autocmd group with garbage    let test_cases += [['#myagroup+b', 0]]    " Valid autocmd group and event    let test_cases += [['#myagroup#BufEnter', 1]]    " Valid autocmd group, event and pattern    let test_cases += [['#myagroup#BufEnter#*.my', 1]]    " Valid autocmd event    let test_cases += [['#BufEnter', 1]]    " Valid autocmd event and pattern    let test_cases += [['#BufEnter#*.my', 1]]    " Non-existing autocmd group or event    let test_cases += [['#xyzagroup', 0]]    " Non-existing autocmd group and valid autocmd event    let test_cases += [['#xyzagroup#BufEnter', 0]]    " Valid autocmd group and event with no matching pattern    let test_cases += [['#myagroup#CmdwinEnter', 0]]    " Valid autocmd group and non-existing autocmd event    let test_cases += [['#myagroup#xyzacmd', 0]]    " Valid autocmd group and event and non-matching pattern    let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]    " Valid autocmd event and non-matching pattern    let test_cases += [['#BufEnter#xyzpat', 0]]    " Empty autocmd group, event and pattern    let test_cases += [['###', 0]]    " Empty autocmd group and event or empty event and pattern    let test_cases += [['##', 0]]    " Valid autocmd event    let test_cases += [['##FileReadCmd', 1]]    " Non-existing autocmd event    let test_cases += [['##MySpecialCmd', 0]]     " Existing and working option (long form)    let test_cases += [['&textwidth', 1]]    " Existing and working option (short form)    let test_cases += [['&tw', 1]]    " Existing and working option with garbage    let test_cases += [['&tw-', 0]]    " Global option    let test_cases += [['&g:errorformat', 1]]    " Local option    let test_cases += [['&l:errorformat', 1]]    " Negative form of existing and working option (long form)    let test_cases += [['&nojoinspaces', 0]]    " Negative form of existing and working option (short form)    let test_cases += [['&nojs', 0]]    " Non-existing option    let test_cases += [['&myxyzoption', 0]]     " Existing and working option (long form)    let test_cases += [['+incsearch', 1]]    " Existing and working option with garbage    let test_cases += [['+incsearch!1', 0]]    " Existing and working option (short form)    let test_cases += [['+is', 1]]    " Existing option that is hidden.    let test_cases += [['+autoprint', 0]]     " Existing environment variable    let $EDITOR_NAME = 'Vim Editor'    let test_cases += [['$EDITOR_NAME', 1]]    " Non-existing environment variable    let test_cases += [['$NON_ENV_VAR', 0]]     " Valid internal function    let test_cases += [['*bufnr', 1]]    " Valid internal function with ()    let test_cases += [['*bufnr()', 1]]    " Non-existing internal function    let test_cases += [['*myxyzfunc', 0]]    " Valid internal function with garbage    let test_cases += [['*bufnr&6', 0]]     " Valid user defined function    let test_cases += [['*TestExists', 1]]    " Non-existing user defined function    let test_cases += [['*MyxyzFunc', 0]]     redir! > test.out     for [test_case, result] in test_cases      	echo test_case . ": " . result        call RunTest(test_case, result)    endfor     " Valid internal command (full match)    echo ':edit: 2'    if exists(':edit') == 2	echo "OK"    else	echo "FAILED"    endif     " Valid internal command (full match) with garbage    echo ':edit/a: 0'    if exists(':edit/a') == 0	echo "OK"    else	echo "FAILED"    endif     " Valid internal command (partial match)    echo ':q: 1'    if exists(':q') == 1	echo "OK"    else	echo "FAILED"    endif     " Non-existing internal command    echo ':invalidcmd: 0'    if !exists(':invalidcmd')	echo "OK"    else	echo "FAILED"    endif     " User defined command (full match)    command! MyCmd :echo 'My command'    echo ':MyCmd: 2'    if exists(':MyCmd') == 2	echo "OK"    else	echo "FAILED"    endif     " User defined command (partial match)    command! MyOtherCmd :echo 'Another command'    echo ':My: 3'    if exists(':My') == 3	echo "OK"    else	echo "FAILED"    endif     " Command modifier    echo ':rightbelow: 2'    if exists(':rightbelow') == 2	echo "OK"    else	echo "FAILED"    endif     " Non-existing user defined command (full match)    delcommand MyCmd     echo ':MyCmd: 0'    if !exists(':MyCmd')	echo "OK"    else	echo "FAILED"    endif     " Non-existing user defined command (partial match)    delcommand MyOtherCmd     echo ':My: 0'    if !exists(':My')	echo "OK"    else	echo "FAILED"    endif     " Valid local variable    let local_var = 1    echo 'local_var: 1'    if exists('local_var')	echo "OK"    else	echo "FAILED"    endif     " Valid local variable with garbage    let local_var = 1    echo 'local_var%n: 0'    if !exists('local_var%n')	echo "OK"    else	echo "FAILED"    endif     " Non-existing local variable    unlet local_var    echo 'local_var: 0'    if !exists('local_var')	echo "OK"    else	echo "FAILED"    endif     " Valid local list    let local_list = ["blue", "orange"]    echo 'local_list: 1'    if exists('local_list')	echo "OK"    else	echo "FAILED"    endif     " Valid local list item    echo 'local_list[1]: 1'    if exists('local_list[1]')	echo "OK"    else	echo "FAILED"    endif     " Valid local list item with garbage    echo 'local_list[1]+5: 0'    if !exists('local_list[1]+5')	echo "OK"    else	echo "FAILED"    endif     " Invalid local list item    echo 'local_list[2]: 0'    if !exists('local_list[2]')	echo "OK"    else	echo "FAILED"    endif     " Non-existing local list    unlet local_list    echo 'local_list: 0'    if !exists('local_list')	echo "OK"    else	echo "FAILED"    endif     " Valid local dictionary    let local_dict = {"xcord":100, "ycord":2}    echo 'local_dict: 1'    if exists('local_dict')	echo "OK"    else	echo "FAILED"    endif     " Non-existing local dictionary    unlet local_dict    echo 'local_dict: 0'    if !exists('local_dict')	echo "OK"    else	echo "FAILED"    endif     " Existing local curly-brace variable    let str = "local"    let curly_{str}_var = 1    echo 'curly_' . str . '_var: 1'    if exists('curly_{str}_var')	echo "OK"    else	echo "FAILED"    endif     " Non-existing local curly-brace variable    unlet curly_{str}_var    echo 'curly_' . str . '_var: 0'    if !exists('curly_{str}_var')	echo "OK"    else	echo "FAILED"    endif      " Existing global variable    let g:global_var = 1    echo 'g:global_var: 1'    if exists('g:global_var')	echo "OK"    else	echo "FAILED"    endif     " Existing global variable with garbage    echo 'g:global_var-n: 1'    if !exists('g:global_var-n')	echo "OK"    else	echo "FAILED"    endif     " Non-existing global variable    unlet g:global_var    echo 'g:global_var: 0'    if !exists('g:global_var')	echo "OK"    else	echo "FAILED"    endif     " Existing global list    let g:global_list = ["blue", "orange"]    echo 'g:global_list: 1'    if exists('g:global_list')	echo "OK"    else	echo "FAILED"    endif     " Non-existing global list    unlet g:global_list    echo 'g:global_list: 0'    if !exists('g:global_list')	echo "OK"    else	echo "FAILED"    endif     " Existing global dictionary    let g:global_dict = {"xcord":100, "ycord":2}    echo 'g:global_dict: 1'    if exists('g:global_dict')	echo "OK"    else	echo "FAILED"    endif     " Non-existing global dictionary    unlet g:global_dict    echo 'g:global_dict: 0'    if !exists('g:global_dict')	echo "OK"    else	echo "FAILED"    endif     " Existing global curly-brace variable    let str = "global"    let g:curly_{str}_var = 1    echo 'g:curly_' . str . '_var: 1'    if exists('g:curly_{str}_var')	echo "OK"    else	echo "FAILED"    endif     " Non-existing global curly-brace variable    unlet g:curly_{str}_var    echo 'g:curly_' . str . '_var: 0'    if !exists('g:curly_{str}_var')	echo "OK"    else	echo "FAILED"    endif     " Existing window variable    echo 'w:window_var: 1'    let w:window_var = 1    if exists('w:window_var')	echo "OK"    else	echo "FAILED"    endif     " Non-existing window variable    unlet w:window_var    echo 'w:window_var: 0'    if !exists('w:window_var')	echo "OK"    else	echo "FAILED"    endif     " Existing window list    let w:window_list = ["blue", "orange"]    echo 'w:window_list: 1'    if exists('w:window_list')	echo "OK"    else	echo "FAILED"    endif     " Non-existing window list    unlet w:window_list    echo 'w:window_list: 0'    if !exists('w:window_list')	echo "OK"    else	echo "FAILED"    endif     " Existing window dictionary    let w:window_dict = {"xcord":100, "ycord":2}    echo 'w:window_dict: 1'    if exists('w:window_dict')	echo "OK"    else	echo "FAILED"    endif     " Non-existing window dictionary    unlet w:window_dict    echo 'w:window_dict: 0'    if !exists('w:window_dict')	echo "OK"    else	echo "FAILED"    endif     " Existing window curly-brace variable    let str = "window"    let w:curly_{str}_var = 1    echo 'w:curly_' . str . '_var: 1'    if exists('w:curly_{str}_var')	echo "OK"    else	echo "FAILED"    endif     " Non-existing window curly-brace variable    unlet w:curly_{str}_var    echo 'w:curly_' . str . '_var: 0'    if !exists('w:curly_{str}_var')	echo "OK"    else	echo "FAILED"    endif     " Existing buffer variable    echo 'b:buffer_var: 1'    let b:buffer_var = 1    if exists('b:buffer_var')	echo "OK"    else	echo "FAILED"    endif     " Non-existing buffer variable    unlet b:buffer_var    echo 'b:buffer_var: 0'    if !exists('b:buffer_var')	echo "OK"    else	echo "FAILED"    endif     " Existing buffer list    let b:buffer_list = ["blue", "orange"]    echo 'b:buffer_list: 1'    if exists('b:buffer_list')	echo "OK"    else	echo "FAILED"    endif     " Non-existing buffer list    unlet b:buffer_list    echo 'b:buffer_list: 0'    if !exists('b:buffer_list')	echo "OK"    else	echo "FAILED"    endif     " Existing buffer dictionary    let b:buffer_dict = {"xcord":100, "ycord":2}    echo 'b:buffer_dict: 1'    if exists('b:buffer_dict')	echo "OK"    else	echo "FAILED"    endif     " Non-existing buffer dictionary    unlet b:buffer_dict    echo 'b:buffer_dict: 0'    if !exists('b:buffer_dict')	echo "OK"    else	echo "FAILED"    endif     " Existing buffer curly-brace variable    let str = "buffer"    let b:curly_{str}_var = 1

Lines 1–500 of 577.