blob: 580c42fe4d431d0942d34fed6989667adbe0b669 [file] [log] [blame]
Bram Moolenaar14735512016-03-26 21:00:08 +01001" Tests for autocommands
2
3func Test_vim_did_enter()
4 call assert_false(v:vim_did_enter)
5
6 " This script will never reach the main loop, can't check if v:vim_did_enter
7 " becomes one.
8endfunc
Bram Moolenaar40b1b542016-04-20 20:18:23 +02009
Bram Moolenaarc67e8922016-05-24 16:07:40 +020010if has('timers')
11 func ExitInsertMode(id)
12 call feedkeys("\<Esc>")
13 endfunc
14
15 func Test_cursorhold_insert()
16 let g:triggered = 0
17 au CursorHoldI * let g:triggered += 1
18 set updatetime=20
19 call timer_start(100, 'ExitInsertMode')
20 call feedkeys('a', 'x!')
21 call assert_equal(1, g:triggered)
22 endfunc
23
24 func Test_cursorhold_insert_ctrl_x()
25 let g:triggered = 0
26 au CursorHoldI * let g:triggered += 1
27 set updatetime=20
28 call timer_start(100, 'ExitInsertMode')
29 " CursorHoldI does not trigger after CTRL-X
30 call feedkeys("a\<C-X>", 'x!')
31 call assert_equal(0, g:triggered)
32 endfunc
Bram Moolenaar40b1b542016-04-20 20:18:23 +020033endif
34
Bram Moolenaarc67e8922016-05-24 16:07:40 +020035function Test_bufunload()
36 augroup test_bufunload_group
37 autocmd!
38 autocmd BufUnload * call add(s:li, "bufunload")
39 autocmd BufDelete * call add(s:li, "bufdelete")
40 autocmd BufWipeout * call add(s:li, "bufwipeout")
41 augroup END
Bram Moolenaar40b1b542016-04-20 20:18:23 +020042
Bram Moolenaarc67e8922016-05-24 16:07:40 +020043 let s:li=[]
44 new
45 setlocal bufhidden=
46 bunload
47 call assert_equal(["bufunload", "bufdelete"], s:li)
Bram Moolenaar40b1b542016-04-20 20:18:23 +020048
Bram Moolenaarc67e8922016-05-24 16:07:40 +020049 let s:li=[]
50 new
51 setlocal bufhidden=delete
52 bunload
53 call assert_equal(["bufunload", "bufdelete"], s:li)
54
55 let s:li=[]
56 new
57 setlocal bufhidden=unload
58 bwipeout
59 call assert_equal(["bufunload", "bufdelete", "bufwipeout"], s:li)
60
61 augroup! test_bufunload_group
Bram Moolenaar40b1b542016-04-20 20:18:23 +020062endfunc
Bram Moolenaar30445cb2016-07-09 15:21:02 +020063
64" SEGV occurs in older versions. (At least 7.4.2005 or older)
65function Test_autocmd_bufunload_with_tabnext()
66 tabedit
67 tabfirst
68
69 augroup test_autocmd_bufunload_with_tabnext_group
70 autocmd!
71 autocmd BufUnload <buffer> tabnext
72 augroup END
73
74 quit
75 call assert_equal(2, tabpagenr('$'))
76
77 augroup! test_autocmd_bufunload_with_tabnext_group
78 tablast
79 quit
80endfunc
Bram Moolenaarc917da42016-07-19 22:31:36 +020081
82func Test_win_tab_autocmd()
83 let g:record = []
84
85 augroup testing
86 au WinNew * call add(g:record, 'WinNew')
87 au WinEnter * call add(g:record, 'WinEnter')
88 au WinLeave * call add(g:record, 'WinLeave')
89 au TabNew * call add(g:record, 'TabNew')
Bram Moolenaar12c11d52016-07-19 23:13:03 +020090 au TabClosed * call add(g:record, 'TabClosed')
Bram Moolenaarc917da42016-07-19 22:31:36 +020091 au TabEnter * call add(g:record, 'TabEnter')
92 au TabLeave * call add(g:record, 'TabLeave')
93 augroup END
94
95 split
96 tabnew
97 close
98 close
99
100 call assert_equal([
101 \ 'WinLeave', 'WinNew', 'WinEnter',
102 \ 'WinLeave', 'TabLeave', 'WinNew', 'WinEnter', 'TabNew', 'TabEnter',
Bram Moolenaar12c11d52016-07-19 23:13:03 +0200103 \ 'WinLeave', 'TabLeave', 'TabClosed', 'WinEnter', 'TabEnter',
Bram Moolenaarc917da42016-07-19 22:31:36 +0200104 \ 'WinLeave', 'WinEnter'
105 \ ], g:record)
106
Bram Moolenaar12c11d52016-07-19 23:13:03 +0200107 let g:record = []
108 tabnew somefile
109 tabnext
110 bwipe somefile
111
112 call assert_equal([
113 \ 'WinLeave', 'TabLeave', 'WinNew', 'WinEnter', 'TabNew', 'TabEnter',
114 \ 'WinLeave', 'TabLeave', 'WinEnter', 'TabEnter',
115 \ 'TabClosed'
116 \ ], g:record)
117
Bram Moolenaarc917da42016-07-19 22:31:36 +0200118 augroup testing
119 au!
120 augroup END
121 unlet g:record
122endfunc