blob: 3a5b73ee6ed885d59b41c1f03b825239d51ec9ed [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 Moolenaar91170f82006-05-05 21:15:17 +000021 " valid autocmd group with garbage
22 let test_cases += [['#myagroup+b', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000023 " Valid autocmd group and event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000024 let test_cases += [['#myagroup#BufEnter', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000025 " Valid autocmd group, event and pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000026 let test_cases += [['#myagroup#BufEnter#*.my', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000027 " Valid autocmd event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000028 let test_cases += [['#BufEnter', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000029 " Valid autocmd event and pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000030 let test_cases += [['#BufEnter#*.my', 1]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000031 " Non-existing autocmd group or event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000032 let test_cases += [['#xyzagroup', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000033 " Non-existing autocmd group and valid autocmd event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000034 let test_cases += [['#xyzagroup#BufEnter', 0]]
35 " Valid autocmd group and event with no matching pattern
36 let test_cases += [['#myagroup#CmdwinEnter', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000037 " Valid autocmd group and non-existing autocmd event
Bram Moolenaar8fa04452005-12-23 22:13:51 +000038 let test_cases += [['#myagroup#xyzacmd', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000039 " Valid autocmd group and event and non-matching pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000040 let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000041 " Valid autocmd event and non-matching pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000042 let test_cases += [['#BufEnter#xyzpat', 0]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000043 " Empty autocmd group, event and pattern
Bram Moolenaar8fa04452005-12-23 22:13:51 +000044 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]]
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000051
Bram Moolenaarebefac62005-12-28 22:39:57 +000052 " 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]]
Bram Moolenaar91170f82006-05-05 21:15:17 +000056 " Existing and working option with garbage
57 let test_cases += [['&tw-', 0]]
Bram Moolenaar4770d092006-01-12 23:22:24 +000058 " Global option
59 let test_cases += [['&g:errorformat', 1]]
60 " Local option
61 let test_cases += [['&l:errorformat', 1]]
Bram Moolenaarebefac62005-12-28 22:39:57 +000062 " 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]]
68
69 " Existing and working option (long form)
70 let test_cases += [['+incsearch', 1]]
Bram Moolenaar91170f82006-05-05 21:15:17 +000071 " Existing and working option with garbage
72 let test_cases += [['+incsearch!1', 0]]
Bram Moolenaarebefac62005-12-28 22:39:57 +000073 " Existing and working option (short form)
74 let test_cases += [['+is', 1]]
75 " Existing option that is hidden.
76 let test_cases += [['+autoprint', 0]]
77
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]]
83
84 " Valid internal function
85 let test_cases += [['*bufnr', 1]]
Bram Moolenaar91170f82006-05-05 21:15:17 +000086 " Valid internal function with ()
87 let test_cases += [['*bufnr()', 1]]
Bram Moolenaarebefac62005-12-28 22:39:57 +000088 " Non-existing internal function
89 let test_cases += [['*myxyzfunc', 0]]
Bram Moolenaar91170f82006-05-05 21:15:17 +000090 " Valid internal function with garbage
91 let test_cases += [['*bufnr&6', 0]]
Bram Moolenaarebefac62005-12-28 22:39:57 +000092
93 " Valid user defined function
94 let test_cases += [['*TestExists', 1]]
95 " Non-existing user defined function
96 let test_cases += [['*MyxyzFunc', 0]]
97
Bram Moolenaar8fa04452005-12-23 22:13:51 +000098 redir! > test.out
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +000099
Bram Moolenaar8fa04452005-12-23 22:13:51 +0000100 for [test_case, result] in test_cases
101 echo test_case . ": " . result
102 call RunTest(test_case, result)
103 endfor
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +0000104
Bram Moolenaarebefac62005-12-28 22:39:57 +0000105 " Valid internal command (full match)
106 echo ':edit: 2'
107 if exists(':edit') == 2
108 echo "OK"
109 else
110 echo "FAILED"
111 endif
112
Bram Moolenaar91170f82006-05-05 21:15:17 +0000113 " 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
120
Bram Moolenaarebefac62005-12-28 22:39:57 +0000121 " Valid internal command (partial match)
122 echo ':q: 1'
123 if exists(':q') == 1
124 echo "OK"
125 else
126 echo "FAILED"
127 endif
128
129 " Non-existing internal command
130 echo ':invalidcmd: 0'
131 if !exists(':invalidcmd')
132 echo "OK"
133 else
134 echo "FAILED"
135 endif
136
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
145
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
154
155 " Command modifier
156 echo ':rightbelow: 2'
157 if exists(':rightbelow') == 2
158 echo "OK"
159 else
160 echo "FAILED"
161 endif
162
163 " Non-existing user defined command (full match)
164 delcommand MyCmd
165
166 echo ':MyCmd: 0'
167 if !exists(':MyCmd')
168 echo "OK"
169 else
170 echo "FAILED"
171 endif
172
173 " Non-existing user defined command (partial match)
174 delcommand MyOtherCmd
175
176 echo ':My: 0'
177 if !exists(':My')
178 echo "OK"
179 else
180 echo "FAILED"
181 endif
182
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
191
Bram Moolenaar91170f82006-05-05 21:15:17 +0000192 " 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
200
Bram Moolenaarebefac62005-12-28 22:39:57 +0000201 " 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
209
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
218
Bram Moolenaar91170f82006-05-05 21:15:17 +0000219 " 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
226
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
234
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
242
Bram Moolenaarebefac62005-12-28 22:39:57 +0000243 " 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
251
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
260
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
269
Bram Moolenaar4770d092006-01-12 23:22:24 +0000270 " 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
279
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
288
289
Bram Moolenaarebefac62005-12-28 22:39:57 +0000290 " 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
298
Bram Moolenaar91170f82006-05-05 21:15:17 +0000299 " 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
306
Bram Moolenaarebefac62005-12-28 22:39:57 +0000307 " 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
315
Bram Moolenaar4770d092006-01-12 23:22:24 +0000316 " Existing global list
317 let g:global_list = ["blue", "orange"]
318 echo 'g:global_list: 1'
319 if exists('g:global_list')
Bram Moolenaarebefac62005-12-28 22:39:57 +0000320 echo "OK"
321 else
322 echo "FAILED"
323 endif
324
Bram Moolenaar4770d092006-01-12 23:22:24 +0000325 " 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
333
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
342
343 " Non-existing global dictionary
344 unlet g:global_dict
345 echo 'g:global_dict: 0'
346 if !exists('g:global_dict')
Bram Moolenaarebefac62005-12-28 22:39:57 +0000347 echo "OK"
348 else
349 echo "FAILED"
350 endif
351
352 " Existing global curly-brace variable
Bram Moolenaarebefac62005-12-28 22:39:57 +0000353 let str = "global"
Bram Moolenaar4770d092006-01-12 23:22:24 +0000354 let g:curly_{str}_var = 1
355 echo 'g:curly_' . str . '_var: 1'
Bram Moolenaarebefac62005-12-28 22:39:57 +0000356 if exists('g:curly_{str}_var')
357 echo "OK"
358 else
359 echo "FAILED"
360 endif
361
362 " Non-existing global curly-brace variable
Bram Moolenaar4770d092006-01-12 23:22:24 +0000363 unlet g:curly_{str}_var
364 echo 'g:curly_' . str . '_var: 0'
Bram Moolenaarebefac62005-12-28 22:39:57 +0000365 if !exists('g:curly_{str}_var')
366 echo "OK"
367 else
368 echo "FAILED"
369 endif
370
Bram Moolenaar4770d092006-01-12 23:22:24 +0000371 " 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
379
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
388
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
397
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
406
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
415
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
424
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
434
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
443
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
452
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
461
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
470
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
479
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
488
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
497
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
507
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
516
Bram Moolenaarebefac62005-12-28 22:39:57 +0000517 " Script-local tests
518 source test60.vim
519
Bram Moolenaar4770d092006-01-12 23:22:24 +0000520 " Existing Vim internal variable
521 echo 'v:version: 1'
522 if exists('v:version')
523 echo "OK"
524 else
525 echo "FAILED"
526 endif
527
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
535
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
544
545 echo 'a:non_exists_arg: 0'
546 if !exists('a:non_exists_arg')
547 echo "OK"
548 else
549 echo "FAILED"
550 endif
551
552 echo 'a:1: 1'
553 if exists('a:1')
554 echo "OK"
555 else
556 echo "FAILED"
557 endif
558
559 echo 'a:2: 0'
560 if !exists('a:2')
561 echo "OK"
562 else
563 echo "FAILED"
564 endif
565 endfunction
566
567 call TestFuncArg("arg1", "arg2")
568
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +0000569 redir END
570endfunction
571:call TestExists()
Bram Moolenaar9d2c8c12007-09-25 16:00:00 +0000572:delfunc TestExists
573:delfunc RunTest
574:delfunc TestFuncArg
Bram Moolenaarf4cd3e82005-12-22 22:47:02 +0000575:edit! test.out
576:set ff=unix
577:w
578:qa!
579ENDTEST
580