1source view_util.vim
2
3let s:imactivatefunc_called = 0
4let s:imstatusfunc_called = 0
5let s:imstatus_active = 0
6
7func IM_activatefunc(active)
8  let s:imactivatefunc_called = 1
9let s:imstatus_active = a:active
10endfunc
11
12func IM_statusfunc()
13  let s:imstatusfunc_called = 1
14  return s:imstatus_active
15endfunc
16
17func Test_iminsert2()
18  let s:imactivatefunc_called = 0
19  let s:imstatusfunc_called = 0
20
21  set imactivatefunc=IM_activatefunc
22  set imstatusfunc=IM_statusfunc
23  set iminsert=2
24  normal! i
25  set iminsert=0
26  set imactivatefunc=
27  set imstatusfunc=
28
29  let expected = has('gui_running') ? 0 : 1
30  call assert_equal(expected, s:imactivatefunc_called)
31  call assert_equal(expected, s:imstatusfunc_called)
32endfunc
33
34func Test_imgetstatus()
35  if has('gui_running')
36    if !has('win32')
37      throw 'Skipped: running in the GUI, only works on MS-Windows'
38    endif
39    set imactivatefunc=
40    set imstatusfunc=
41  else
42    set imactivatefunc=IM_activatefunc
43    set imstatusfunc=IM_statusfunc
44    let s:imstatus_active = 0
45  endif
46
47  new
48  set iminsert=2
49  call feedkeys("i\<C-R>=getimstatus()\<CR>\<ESC>", 'nx')
50  call assert_equal('1', getline(1))
51  set iminsert=0
52  call feedkeys("o\<C-R>=getimstatus()\<CR>\<ESC>", 'nx')
53  call assert_equal('0', getline(2))
54  bw!
55
56  set imactivatefunc=
57  set imstatusfunc=
58endfunc
59