615
|
1 Tests for the exists() function. vim: set ft=vim :
|
|
2
|
|
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
|
617
|
16
|
|
17 let test_cases = []
|
615
|
18
|
|
19 " valid autocmd group
|
617
|
20 let test_cases += [['#myagroup', 1]]
|
615
|
21 " Valid autocmd group and event
|
617
|
22 let test_cases += [['#myagroup#BufEnter', 1]]
|
615
|
23 " Valid autocmd group, event and pattern
|
617
|
24 let test_cases += [['#myagroup#BufEnter#*.my', 1]]
|
615
|
25 " Valid autocmd event
|
617
|
26 let test_cases += [['#BufEnter', 1]]
|
615
|
27 " Valid autocmd event and pattern
|
617
|
28 let test_cases += [['#BufEnter#*.my', 1]]
|
615
|
29 " Non-existing autocmd group or event
|
617
|
30 let test_cases += [['#xyzagroup', 0]]
|
615
|
31 " Non-existing autocmd group and valid autocmd event
|
617
|
32 let test_cases += [['#xyzagroup#BufEnter', 0]]
|
|
33 " Valid autocmd group and event with no matching pattern
|
|
34 let test_cases += [['#myagroup#CmdwinEnter', 0]]
|
|
35 " Valid autocmd group and non-existing autocmd event
|
|
36 let test_cases += [['#myagroup#xyzacmd', 0]]
|
|
37 " Valid autocmd group and event and non-matching pattern
|
|
38 let test_cases += [['#myagroup#BufEnter#xyzpat', 0]]
|
|
39 " Valid autocmd event and non-matching pattern
|
|
40 let test_cases += [['#BufEnter#xyzpat', 0]]
|
|
41 " Empty autocmd group, event and pattern
|
|
42 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]]
|
615
|
49
|
620
|
50 " 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]]
|
625
|
54 " Global option
|
|
55 let test_cases += [['&g:errorformat', 1]]
|
|
56 " Local option
|
|
57 let test_cases += [['&l:errorformat', 1]]
|
620
|
58 " 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
|
617
|
88 redir! > test.out
|
615
|
89
|
617
|
90 for [test_case, result] in test_cases
|
|
91 echo test_case . ": " . result
|
|
92 call RunTest(test_case, result)
|
|
93 endfor
|
615
|
94
|
620
|
95 " 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
|
625
|
219 " 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
|
620
|
239 " 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
|
625
|
257 " Existing global list
|
|
258 let g:global_list = ["blue", "orange"]
|
|
259 echo 'g:global_list: 1'
|
|
260 if exists('g:global_list')
|
620
|
261 echo "OK"
|
|
262 else
|
|
263 echo "FAILED"
|
|
264 endif
|
|
265
|
625
|
266 " 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')
|
620
|
288 echo "OK"
|
|
289 else
|
|
290 echo "FAILED"
|
|
291 endif
|
|
292
|
|
293 " Existing global curly-brace variable
|
|
294 let str = "global"
|
625
|
295 let g:curly_{str}_var = 1
|
|
296 echo 'g:curly_' . str . '_var: 1'
|
620
|
297 if exists('g:curly_{str}_var')
|
|
298 echo "OK"
|
|
299 else
|
|
300 echo "FAILED"
|
|
301 endif
|
|
302
|
|
303 " Non-existing global curly-brace variable
|
625
|
304 unlet g:curly_{str}_var
|
|
305 echo 'g:curly_' . str . '_var: 0'
|
620
|
306 if !exists('g:curly_{str}_var')
|
|
307 echo "OK"
|
|
308 else
|
|
309 echo "FAILED"
|
|
310 endif
|
|
311
|
625
|
312 " 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
|
620
|
458 " Script-local tests
|
|
459 source test60.vim
|
|
460
|
625
|
461 " 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
|
615
|
510 redir END
|
|
511 endfunction
|
|
512 :call TestExists()
|
|
513 :edit! test.out
|
|
514 :set ff=unix
|
|
515 :w
|
|
516 :qa!
|
|
517 ENDTEST
|
|
518
|