Merged from the latest developing branch.
[MacVim.git] / src / testdir / test60.in
blob3a5b73ee6ed885d59b41c1f03b825239d51ec9ed
1 Tests for the exists() function.  vim: set ft=vim :
3 STARTTEST
4 :so small.vim
5 :function! RunTest(str, result)
6     if exists(a:str) == a:result
7         echo "OK"
8     else
9         echo "FAILED: Checking for " . a:str
10     endif
11 endfunction
12 :function! TestExists()
13     augroup myagroup
14         autocmd! BufEnter *.my echo 'myfile edited'
15     augroup END
17     let test_cases = []
19     " valid autocmd group
20     let test_cases += [['#myagroup', 1]]
21     " valid autocmd group with garbage
22     let test_cases += [['#myagroup+b', 0]]
23     " Valid autocmd group and event
24     let test_cases += [['#myagroup#BufEnter', 1]]
25     " Valid autocmd group, event and pattern
26     let test_cases += [['#myagroup#BufEnter#*.my', 1]]
27     " Valid autocmd event
28     let test_cases += [['#BufEnter', 1]]
29     " Valid autocmd event and pattern
30     let test_cases += [['#BufEnter#*.my', 1]]
31     " Non-existing autocmd group or event
32     let test_cases += [['#xyzagroup', 0]]
33     " Non-existing autocmd group and valid autocmd event
34     let test_cases += [['#xyzagroup#BufEnter', 0]]
35     " Valid autocmd group and event with no matching pattern
36     let test_cases += [['#myagroup#CmdwinEnter', 0]]
37     " Valid autocmd group and non-existing autocmd event
38     let test_cases += [['#myagroup#xyzacmd', 0]]
39     " Valid autocmd group and event and non-matching pattern
40     let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]
41     " Valid autocmd event and non-matching pattern
42     let test_cases += [['#BufEnter#xyzpat', 0]]
43     " Empty autocmd group, event and pattern
44     let test_cases += [['###', 0]]
45     " Empty autocmd group and event or empty event and pattern
46     let test_cases += [['##', 0]]
47     " Valid autocmd event
48     let test_cases += [['##FileReadCmd', 1]]
49     " Non-existing autocmd event
50     let test_cases += [['##MySpecialCmd', 0]]
52     " Existing and working option (long form)
53     let test_cases += [['&textwidth', 1]]
54     " Existing and working option (short form)
55     let test_cases += [['&tw', 1]]
56     " Existing and working option with garbage
57     let test_cases += [['&tw-', 0]]
58     " Global option
59     let test_cases += [['&g:errorformat', 1]]
60     " Local option
61     let test_cases += [['&l:errorformat', 1]]
62     " Negative form of existing and working option (long form)
63     let test_cases += [['&nojoinspaces', 0]]
64     " Negative form of existing and working option (short form)
65     let test_cases += [['&nojs', 0]]
66     " Non-existing option
67     let test_cases += [['&myxyzoption', 0]]
69     " Existing and working option (long form)
70     let test_cases += [['+incsearch', 1]]
71     " Existing and working option with garbage
72     let test_cases += [['+incsearch!1', 0]]
73     " Existing and working option (short form)
74     let test_cases += [['+is', 1]]
75     " Existing option that is hidden.
76     let test_cases += [['+autoprint', 0]]
78     " Existing environment variable
79     let $EDITOR_NAME = 'Vim Editor'
80     let test_cases += [['$EDITOR_NAME', 1]]
81     " Non-existing environment variable
82     let test_cases += [['$NON_ENV_VAR', 0]]
84     " Valid internal function
85     let test_cases += [['*bufnr', 1]]
86     " Valid internal function with ()
87     let test_cases += [['*bufnr()', 1]]
88     " Non-existing internal function
89     let test_cases += [['*myxyzfunc', 0]]
90     " Valid internal function with garbage
91     let test_cases += [['*bufnr&6', 0]]
93     " Valid user defined function
94     let test_cases += [['*TestExists', 1]]
95     " Non-existing user defined function
96     let test_cases += [['*MyxyzFunc', 0]]
98     redir! > test.out
100     for [test_case, result] in test_cases
101         echo test_case . ": " . result
102         call RunTest(test_case, result)
103     endfor
105     " Valid internal command (full match)
106     echo ':edit: 2'
107     if exists(':edit') == 2
108         echo "OK"
109     else
110         echo "FAILED"
111     endif
113     " Valid internal command (full match) with garbage
114     echo ':edit/a: 0'
115     if exists(':edit/a') == 0
116         echo "OK"
117     else
118         echo "FAILED"
119     endif
121     " Valid internal command (partial match)
122     echo ':q: 1'
123     if exists(':q') == 1
124         echo "OK"
125     else
126         echo "FAILED"
127     endif
129     " Non-existing internal command
130     echo ':invalidcmd: 0'
131     if !exists(':invalidcmd')
132         echo "OK"
133     else
134         echo "FAILED"
135     endif
137     " User defined command (full match)
138     command! MyCmd :echo 'My command'
139     echo ':MyCmd: 2'
140     if exists(':MyCmd') == 2
141         echo "OK"
142     else
143         echo "FAILED"
144     endif
146     " User defined command (partial match)
147     command! MyOtherCmd :echo 'Another command'
148     echo ':My: 3'
149     if exists(':My') == 3
150         echo "OK"
151     else
152         echo "FAILED"
153     endif
155     " Command modifier
156     echo ':rightbelow: 2'
157     if exists(':rightbelow') == 2
158         echo "OK"
159     else
160         echo "FAILED"
161     endif
163     " Non-existing user defined command (full match)
164     delcommand MyCmd
166     echo ':MyCmd: 0'
167     if !exists(':MyCmd')
168         echo "OK"
169     else
170         echo "FAILED"
171     endif
173     " Non-existing user defined command (partial match)
174     delcommand MyOtherCmd
176     echo ':My: 0'
177     if !exists(':My')
178         echo "OK"
179     else
180         echo "FAILED"
181     endif
183     " Valid local variable
184     let local_var = 1
185     echo 'local_var: 1'
186     if exists('local_var')
187         echo "OK"
188     else
189         echo "FAILED"
190     endif
192     " Valid local variable with garbage
193     let local_var = 1
194     echo 'local_var%n: 0'
195     if !exists('local_var%n')
196         echo "OK"
197     else
198         echo "FAILED"
199     endif
201     " Non-existing local variable
202     unlet local_var
203     echo 'local_var: 0'
204     if !exists('local_var')
205         echo "OK"
206     else
207         echo "FAILED"
208     endif
210     " Valid local list
211     let local_list = ["blue", "orange"]
212     echo 'local_list: 1'
213     if exists('local_list')
214         echo "OK"
215     else
216         echo "FAILED"
217     endif
219     " Valid local list item
220     echo 'local_list[1]: 1'
221     if exists('local_list[1]')
222         echo "OK"
223     else
224         echo "FAILED"
225     endif
227     " Valid local list item with garbage
228     echo 'local_list[1]+5: 0'
229     if !exists('local_list[1]+5')
230         echo "OK"
231     else
232         echo "FAILED"
233     endif
235     " Invalid local list item
236     echo 'local_list[2]: 0'
237     if !exists('local_list[2]')
238         echo "OK"
239     else
240         echo "FAILED"
241     endif
243     " Non-existing local list
244     unlet local_list
245     echo 'local_list: 0'
246     if !exists('local_list')
247         echo "OK"
248     else
249         echo "FAILED"
250     endif
252     " Valid local dictionary
253     let local_dict = {"xcord":100, "ycord":2}
254     echo 'local_dict: 1'
255     if exists('local_dict')
256         echo "OK"
257     else
258         echo "FAILED"
259     endif
261     " Non-existing local dictionary
262     unlet local_dict
263     echo 'local_dict: 0'
264     if !exists('local_dict')
265         echo "OK"
266     else
267         echo "FAILED"
268     endif
270     " Existing local curly-brace variable
271     let str = "local"
272     let curly_{str}_var = 1
273     echo 'curly_' . str . '_var: 1'
274     if exists('curly_{str}_var')
275         echo "OK"
276     else
277         echo "FAILED"
278     endif
280     " Non-existing local curly-brace variable
281     unlet curly_{str}_var
282     echo 'curly_' . str . '_var: 0'
283     if !exists('curly_{str}_var')
284         echo "OK"
285     else
286         echo "FAILED"
287     endif
290     " Existing global variable
291     let g:global_var = 1
292     echo 'g:global_var: 1'
293     if exists('g:global_var')
294         echo "OK"
295     else
296         echo "FAILED"
297     endif
299     " Existing global variable with garbage
300     echo 'g:global_var-n: 1'
301     if !exists('g:global_var-n')
302         echo "OK"
303     else
304         echo "FAILED"
305     endif
307     " Non-existing global variable
308     unlet g:global_var
309     echo 'g:global_var: 0'
310     if !exists('g:global_var')
311         echo "OK"
312     else
313         echo "FAILED"
314     endif
316     " Existing global list
317     let g:global_list = ["blue", "orange"]
318     echo 'g:global_list: 1'
319     if exists('g:global_list')
320         echo "OK"
321     else
322         echo "FAILED"
323     endif
325     " Non-existing global list
326     unlet g:global_list
327     echo 'g:global_list: 0'
328     if !exists('g:global_list')
329         echo "OK"
330     else
331         echo "FAILED"
332     endif
334     " Existing global dictionary
335     let g:global_dict = {"xcord":100, "ycord":2}
336     echo 'g:global_dict: 1'
337     if exists('g:global_dict')
338         echo "OK"
339     else
340         echo "FAILED"
341     endif
343     " Non-existing global dictionary
344     unlet g:global_dict
345     echo 'g:global_dict: 0'
346     if !exists('g:global_dict')
347         echo "OK"
348     else
349         echo "FAILED"
350     endif
352     " Existing global curly-brace variable
353     let str = "global"
354     let g:curly_{str}_var = 1
355     echo 'g:curly_' . str . '_var: 1'
356     if exists('g:curly_{str}_var')
357         echo "OK"
358     else
359         echo "FAILED"
360     endif
362     " Non-existing global curly-brace variable
363     unlet g:curly_{str}_var
364     echo 'g:curly_' . str . '_var: 0'
365     if !exists('g:curly_{str}_var')
366         echo "OK"
367     else
368         echo "FAILED"
369     endif
371     " Existing window variable
372     echo 'w:window_var: 1'
373     let w:window_var = 1
374     if exists('w:window_var')
375         echo "OK"
376     else
377         echo "FAILED"
378     endif
380     " Non-existing window variable
381     unlet w:window_var
382     echo 'w:window_var: 0'
383     if !exists('w:window_var')
384         echo "OK"
385     else
386         echo "FAILED"
387     endif
389     " Existing window list
390     let w:window_list = ["blue", "orange"]
391     echo 'w:window_list: 1'
392     if exists('w:window_list')
393         echo "OK"
394     else
395         echo "FAILED"
396     endif
398     " Non-existing window list
399     unlet w:window_list
400     echo 'w:window_list: 0'
401     if !exists('w:window_list')
402         echo "OK"
403     else
404         echo "FAILED"
405     endif
407     " Existing window dictionary
408     let w:window_dict = {"xcord":100, "ycord":2}
409     echo 'w:window_dict: 1'
410     if exists('w:window_dict')
411         echo "OK"
412     else
413         echo "FAILED"
414     endif
416     " Non-existing window dictionary
417     unlet w:window_dict
418     echo 'w:window_dict: 0'
419     if !exists('w:window_dict')
420         echo "OK"
421     else
422         echo "FAILED"
423     endif
425     " Existing window curly-brace variable
426     let str = "window"
427     let w:curly_{str}_var = 1
428     echo 'w:curly_' . str . '_var: 1'
429     if exists('w:curly_{str}_var')
430         echo "OK"
431     else
432         echo "FAILED"
433     endif
435     " Non-existing window curly-brace variable
436     unlet w:curly_{str}_var
437     echo 'w:curly_' . str . '_var: 0'
438     if !exists('w:curly_{str}_var')
439         echo "OK"
440     else
441         echo "FAILED"
442     endif
444     " Existing buffer variable
445     echo 'b:buffer_var: 1'
446     let b:buffer_var = 1
447     if exists('b:buffer_var')
448         echo "OK"
449     else
450         echo "FAILED"
451     endif
453     " Non-existing buffer variable
454     unlet b:buffer_var
455     echo 'b:buffer_var: 0'
456     if !exists('b:buffer_var')
457         echo "OK"
458     else
459         echo "FAILED"
460     endif
462     " Existing buffer list
463     let b:buffer_list = ["blue", "orange"]
464     echo 'b:buffer_list: 1'
465     if exists('b:buffer_list')
466         echo "OK"
467     else
468         echo "FAILED"
469     endif
471     " Non-existing buffer list
472     unlet b:buffer_list
473     echo 'b:buffer_list: 0'
474     if !exists('b:buffer_list')
475         echo "OK"
476     else
477         echo "FAILED"
478     endif
480     " Existing buffer dictionary
481     let b:buffer_dict = {"xcord":100, "ycord":2}
482     echo 'b:buffer_dict: 1'
483     if exists('b:buffer_dict')
484         echo "OK"
485     else
486         echo "FAILED"
487     endif
489     " Non-existing buffer dictionary
490     unlet b:buffer_dict
491     echo 'b:buffer_dict: 0'
492     if !exists('b:buffer_dict')
493         echo "OK"
494     else
495         echo "FAILED"
496     endif
498     " Existing buffer curly-brace variable
499     let str = "buffer"
500     let b:curly_{str}_var = 1
501     echo 'b:curly_' . str . '_var: 1'
502     if exists('b:curly_{str}_var')
503         echo "OK"
504     else
505         echo "FAILED"
506     endif
508     " Non-existing buffer curly-brace variable
509     unlet b:curly_{str}_var
510     echo 'b:curly_' . str . '_var: 0'
511     if !exists('b:curly_{str}_var')
512         echo "OK"
513     else
514         echo "FAILED"
515     endif
517     " Script-local tests
518     source test60.vim
520     " Existing Vim internal variable
521     echo 'v:version: 1'
522     if exists('v:version')
523         echo "OK"
524     else
525         echo "FAILED"
526     endif
528     " Non-existing Vim internal variable
529     echo 'v:non_exists_var: 0'
530     if !exists('v:non_exists_var')
531         echo "OK"
532     else
533         echo "FAILED"
534     endif
536     " Function arguments
537     function TestFuncArg(func_arg, ...)
538         echo 'a:func_arg: 1'
539         if exists('a:func_arg')
540             echo "OK"
541         else
542             echo "FAILED"
543         endif
545         echo 'a:non_exists_arg: 0'
546         if !exists('a:non_exists_arg')
547             echo "OK"
548         else
549             echo "FAILED"
550         endif
552         echo 'a:1: 1'
553         if exists('a:1')
554             echo "OK"
555         else
556             echo "FAILED"
557         endif
559         echo 'a:2: 0'
560         if !exists('a:2')
561             echo "OK"
562         else
563             echo "FAILED"
564         endif
565     endfunction
567     call TestFuncArg("arg1", "arg2")
569     redir END
570 endfunction
571 :call TestExists()
572 :delfunc TestExists
573 :delfunc RunTest
574 :delfunc TestFuncArg
575 :edit! test.out
576 :set ff=unix
578 :qa!
579 ENDTEST