blob: 2c414b38ef6598dddc2d2f89caf4de8606d9ca90 [file] [log] [blame]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +00001Tests for the exists() function. vim: set ft=vim :
2
3STARTTEST
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
11endfunction
12:function! TestExists()
13 augroup myagroup
14 autocmd! BufEnter *.my echo 'myfile edited'
15 augroup END
Bram Moolenaar8fa04452005-12-23 22:13:51 +000016
17 let test_cases = []
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000018
19 " valid autocmd group
Bram Moolenaar8fa04452005-12-23 22:13:51 +000020 let test_cases += [['#myagroup', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000021 " Valid autocmd group and event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000022 let test_cases += [['#myagroup#BufEnter', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000023 " Valid autocmd group, event and pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000024 let test_cases += [['#myagroup#BufEnter#*.my', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000025 " Valid autocmd event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000026 let test_cases += [['#BufEnter', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000027 " Valid autocmd event and pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000028 let test_cases += [['#BufEnter#*.my', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000029 " Non-existing autocmd group or event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000030 let test_cases += [['#xyzagroup', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000031 " Non-existing autocmd group and valid autocmd event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000032 let test_cases += [['#xyzagroup#BufEnter', 0]]
33 " Valid autocmd group and event with no matching pattern
34 let test_cases += [['#myagroup#CmdwinEnter', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000035 " Valid autocmd group and non-existing autocmd event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000036 let test_cases += [['#myagroup#xyzacmd', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000037 " Valid autocmd group and event and non-matching pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000038 let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000039 " Valid autocmd event and non-matching pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000040 let test_cases += [['#BufEnter#xyzpat', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000041 " Empty autocmd group, event and pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000042 let test_cases += [['###', 0]]
43 " Empty autocmd group and event or empty event and pattern
44 let test_cases += [['##', 0]]
45 " Valid autocmd event
46 let test_cases += [['##FileReadCmd', 1]]
47 " Non-existing autocmd event
48 let test_cases += [['##MySpecialCmd', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000049
Bram Moolenaarebefac62005-12-28 22:39:57 +000050 " Existing and working option (long form)
51 let test_cases += [['&textwidth', 1]]
52 " Existing and working option (short form)
53 let test_cases += [['&tw', 1]]
Bram Moolenaar4770d092006-01-12 23:22:24 +000054 " Global option
55 let test_cases += [['&g:errorformat', 1]]
56 " Local option
57 let test_cases += [['&l:errorformat', 1]]
Bram Moolenaarebefac62005-12-28 22:39:57 +000058 " Negative form of existing and working option (long form)
59 let test_cases += [['&nojoinspaces', 0]]
60 " Negative form of existing and working option (short form)
61 let test_cases += [['&nojs', 0]]
62 " Non-existing option
63 let test_cases += [['&myxyzoption', 0]]
64
65 " Existing and working option (long form)
66 let test_cases += [['+incsearch', 1]]
67 " Existing and working option (short form)
68 let test_cases += [['+is', 1]]
69 " Existing option that is hidden.
70 let test_cases += [['+autoprint', 0]]
71
72 " Existing environment variable
73 let $EDITOR_NAME = 'Vim Editor'
74 let test_cases += [['$EDITOR_NAME', 1]]
75 " Non-existing environment variable
76 let test_cases += [['$NON_ENV_VAR', 0]]
77
78 " Valid internal function
79 let test_cases += [['*bufnr', 1]]
80 " Non-existing internal function
81 let test_cases += [['*myxyzfunc', 0]]
82
83 " Valid user defined function
84 let test_cases += [['*TestExists', 1]]
85 " Non-existing user defined function
86 let test_cases += [['*MyxyzFunc', 0]]
87
Bram Moolenaar8fa04452005-12-23 22:13:51 +000088 redir! > test.out
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000089
Bram Moolenaar8fa04452005-12-23 22:13:51 +000090 for [test_case, result] in test_cases
91 echo test_case . ": " . result
92 call RunTest(test_case, result)
93 endfor
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000094
Bram Moolenaarebefac62005-12-28 22:39:57 +000095 " Valid internal command (full match)
96 echo ':edit: 2'
97 if exists(':edit') == 2
98 echo "OK"
99 else
100 echo "FAILED"
101 endif
102
103 " Valid internal command (partial match)
104 echo ':q: 1'
105 if exists(':q') == 1
106 echo "OK"
107 else
108 echo "FAILED"
109 endif
110
111 " Non-existing internal command
112 echo ':invalidcmd: 0'
113 if !exists(':invalidcmd')
114 echo "OK"
115 else
116 echo "FAILED"
117 endif
118
119 " User defined command (full match)
120 command! MyCmd :echo 'My command'
121 echo ':MyCmd: 2'
122 if exists(':MyCmd') == 2
123 echo "OK"
124 else
125 echo "FAILED"
126 endif
127
128 " User defined command (partial match)
129 command! MyOtherCmd :echo 'Another command'
130 echo ':My: 3'
131 if exists(':My') == 3
132 echo "OK"
133 else
134 echo "FAILED"
135 endif
136
137 " Command modifier
138 echo ':rightbelow: 2'
139 if exists(':rightbelow') == 2
140 echo "OK"
141 else
142 echo "FAILED"
143 endif
144
145 " Non-existing user defined command (full match)
146 delcommand MyCmd
147
148 echo ':MyCmd: 0'
149 if !exists(':MyCmd')
150 echo "OK"
151 else
152 echo "FAILED"
153 endif
154
155 " Non-existing user defined command (partial match)
156 delcommand MyOtherCmd
157
158 echo ':My: 0'
159 if !exists(':My')
160 echo "OK"
161 else
162 echo "FAILED"
163 endif
164
165 " Valid local variable
166 let local_var = 1
167 echo 'local_var: 1'
168 if exists('local_var')
169 echo "OK"
170 else
171 echo "FAILED"
172 endif
173
174 " Non-existing local variable
175 unlet local_var
176 echo 'local_var: 0'
177 if !exists('local_var')
178 echo "OK"
179 else
180 echo "FAILED"
181 endif
182
183 " Valid local list
184 let local_list = ["blue", "orange"]
185 echo 'local_list: 1'
186 if exists('local_list')
187 echo "OK"
188 else
189 echo "FAILED"
190 endif
191
192 " Non-existing local list
193 unlet local_list
194 echo 'local_list: 0'
195 if !exists('local_list')
196 echo "OK"
197 else
198 echo "FAILED"
199 endif
200
201 " Valid local dictionary
202 let local_dict = {"xcord":100, "ycord":2}
203 echo 'local_dict: 1'
204 if exists('local_dict')
205 echo "OK"
206 else
207 echo "FAILED"
208 endif
209
210 " Non-existing local dictionary
211 unlet local_dict
212 echo 'local_dict: 0'
213 if !exists('local_dict')
214 echo "OK"
215 else
216 echo "FAILED"
217 endif
218
Bram Moolenaar4770d092006-01-12 23:22:24 +0000219 " Existing local curly-brace variable
220 let str = "local"
221 let curly_{str}_var = 1
222 echo 'curly_' . str . '_var: 1'
223 if exists('curly_{str}_var')
224 echo "OK"
225 else
226 echo "FAILED"
227 endif
228
229 " Non-existing local curly-brace variable
230 unlet curly_{str}_var
231 echo 'curly_' . str . '_var: 0'
232 if !exists('curly_{str}_var')
233 echo "OK"
234 else
235 echo "FAILED"
236 endif
237
238
Bram Moolenaarebefac62005-12-28 22:39:57 +0000239 " Existing global variable
240 let g:global_var = 1
241 echo 'g:global_var: 1'
242 if exists('g:global_var')
243 echo "OK"
244 else
245 echo "FAILED"
246 endif
247
248 " Non-existing global variable
249 unlet g:global_var
250 echo 'g:global_var: 0'
251 if !exists('g:global_var')
252 echo "OK"
253 else
254 echo "FAILED"
255 endif
256
Bram Moolenaar4770d092006-01-12 23:22:24 +0000257 " Existing global list
258 let g:global_list = ["blue", "orange"]
259 echo 'g:global_list: 1'
260 if exists('g:global_list')
Bram Moolenaarebefac62005-12-28 22:39:57 +0000261 echo "OK"
262 else
263 echo "FAILED"
264 endif
265
Bram Moolenaar4770d092006-01-12 23:22:24 +0000266 " Non-existing global list
267 unlet g:global_list
268 echo 'g:global_list: 0'
269 if !exists('g:global_list')
270 echo "OK"
271 else
272 echo "FAILED"
273 endif
274
275 " Existing global dictionary
276 let g:global_dict = {"xcord":100, "ycord":2}
277 echo 'g:global_dict: 1'
278 if exists('g:global_dict')
279 echo "OK"
280 else
281 echo "FAILED"
282 endif
283
284 " Non-existing global dictionary
285 unlet g:global_dict
286 echo 'g:global_dict: 0'
287 if !exists('g:global_dict')
Bram Moolenaarebefac62005-12-28 22:39:57 +0000288 echo "OK"
289 else
290 echo "FAILED"
291 endif
292
293 " Existing global curly-brace variable
Bram Moolenaarebefac62005-12-28 22:39:57 +0000294 let str = "global"
Bram Moolenaar4770d092006-01-12 23:22:24 +0000295 let g:curly_{str}_var = 1
296 echo 'g:curly_' . str . '_var: 1'
Bram Moolenaarebefac62005-12-28 22:39:57 +0000297 if exists('g:curly_{str}_var')
298 echo "OK"
299 else
300 echo "FAILED"
301 endif
302
303 " Non-existing global curly-brace variable
Bram Moolenaar4770d092006-01-12 23:22:24 +0000304 unlet g:curly_{str}_var
305 echo 'g:curly_' . str . '_var: 0'
Bram Moolenaarebefac62005-12-28 22:39:57 +0000306 if !exists('g:curly_{str}_var')
307 echo "OK"
308 else
309 echo "FAILED"
310 endif
311
Bram Moolenaar4770d092006-01-12 23:22:24 +0000312 " Existing window variable
313 echo 'w:window_var: 1'
314 let w:window_var = 1
315 if exists('w:window_var')
316 echo "OK"
317 else
318 echo "FAILED"
319 endif
320
321 " Non-existing window variable
322 unlet w:window_var
323 echo 'w:window_var: 0'
324 if !exists('w:window_var')
325 echo "OK"
326 else
327 echo "FAILED"
328 endif
329
330 " Existing window list
331 let w:window_list = ["blue", "orange"]
332 echo 'w:window_list: 1'
333 if exists('w:window_list')
334 echo "OK"
335 else
336 echo "FAILED"
337 endif
338
339 " Non-existing window list
340 unlet w:window_list
341 echo 'w:window_list: 0'
342 if !exists('w:window_list')
343 echo "OK"
344 else
345 echo "FAILED"
346 endif
347
348 " Existing window dictionary
349 let w:window_dict = {"xcord":100, "ycord":2}
350 echo 'w:window_dict: 1'
351 if exists('w:window_dict')
352 echo "OK"
353 else
354 echo "FAILED"
355 endif
356
357 " Non-existing window dictionary
358 unlet w:window_dict
359 echo 'w:window_dict: 0'
360 if !exists('w:window_dict')
361 echo "OK"
362 else
363 echo "FAILED"
364 endif
365
366 " Existing window curly-brace variable
367 let str = "window"
368 let w:curly_{str}_var = 1
369 echo 'w:curly_' . str . '_var: 1'
370 if exists('w:curly_{str}_var')
371 echo "OK"
372 else
373 echo "FAILED"
374 endif
375
376 " Non-existing window curly-brace variable
377 unlet w:curly_{str}_var
378 echo 'w:curly_' . str . '_var: 0'
379 if !exists('w:curly_{str}_var')
380 echo "OK"
381 else
382 echo "FAILED"
383 endif
384
385 " Existing buffer variable
386 echo 'b:buffer_var: 1'
387 let b:buffer_var = 1
388 if exists('b:buffer_var')
389 echo "OK"
390 else
391 echo "FAILED"
392 endif
393
394 " Non-existing buffer variable
395 unlet b:buffer_var
396 echo 'b:buffer_var: 0'
397 if !exists('b:buffer_var')
398 echo "OK"
399 else
400 echo "FAILED"
401 endif
402
403 " Existing buffer list
404 let b:buffer_list = ["blue", "orange"]
405 echo 'b:buffer_list: 1'
406 if exists('b:buffer_list')
407 echo "OK"
408 else
409 echo "FAILED"
410 endif
411
412 " Non-existing buffer list
413 unlet b:buffer_list
414 echo 'b:buffer_list: 0'
415 if !exists('b:buffer_list')
416 echo "OK"
417 else
418 echo "FAILED"
419 endif
420
421 " Existing buffer dictionary
422 let b:buffer_dict = {"xcord":100, "ycord":2}
423 echo 'b:buffer_dict: 1'
424 if exists('b:buffer_dict')
425 echo "OK"
426 else
427 echo "FAILED"
428 endif
429
430 " Non-existing buffer dictionary
431 unlet b:buffer_dict
432 echo 'b:buffer_dict: 0'
433 if !exists('b:buffer_dict')
434 echo "OK"
435 else
436 echo "FAILED"
437 endif
438
439 " Existing buffer curly-brace variable
440 let str = "buffer"
441 let b:curly_{str}_var = 1
442 echo 'b:curly_' . str . '_var: 1'
443 if exists('b:curly_{str}_var')
444 echo "OK"
445 else
446 echo "FAILED"
447 endif
448
449 " Non-existing buffer curly-brace variable
450 unlet b:curly_{str}_var
451 echo 'b:curly_' . str . '_var: 0'
452 if !exists('b:curly_{str}_var')
453 echo "OK"
454 else
455 echo "FAILED"
456 endif
457
Bram Moolenaarebefac62005-12-28 22:39:57 +0000458 " Script-local tests
459 source test60.vim
460
Bram Moolenaar4770d092006-01-12 23:22:24 +0000461 " Existing Vim internal variable
462 echo 'v:version: 1'
463 if exists('v:version')
464 echo "OK"
465 else
466 echo "FAILED"
467 endif
468
469 " Non-existing Vim internal variable
470 echo 'v:non_exists_var: 0'
471 if !exists('v:non_exists_var')
472 echo "OK"
473 else
474 echo "FAILED"
475 endif
476
477 " Function arguments
478 function TestFuncArg(func_arg, ...)
479 echo 'a:func_arg: 1'
480 if exists('a:func_arg')
481 echo "OK"
482 else
483 echo "FAILED"
484 endif
485
486 echo 'a:non_exists_arg: 0'
487 if !exists('a:non_exists_arg')
488 echo "OK"
489 else
490 echo "FAILED"
491 endif
492
493 echo 'a:1: 1'
494 if exists('a:1')
495 echo "OK"
496 else
497 echo "FAILED"
498 endif
499
500 echo 'a:2: 0'
501 if !exists('a:2')
502 echo "OK"
503 else
504 echo "FAILED"
505 endif
506 endfunction
507
508 call TestFuncArg("arg1", "arg2")
509
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +0000510 redir END
511endfunction
512:call TestExists()
513:edit! test.out
514:set ff=unix
515:w
516:qa!
517ENDTEST
518