xref: /vim-8.2.3635/src/testdir/test_menu.vim (revision bc93cebb)
1" Test that the system menu can be loaded.
2
3source check.vim
4CheckFeature menu
5
6func Test_load_menu()
7  try
8    source $VIMRUNTIME/menu.vim
9  catch
10    call assert_report('error while loading menus: ' . v:exception)
11  endtry
12  call assert_match('browse confirm w', execute(':menu File.Save'))
13
14  let v:errmsg = ''
15  doautocmd LoadBufferMenu VimEnter
16  call assert_equal('', v:errmsg)
17
18  source $VIMRUNTIME/delmenu.vim
19  call assert_equal('', v:errmsg)
20endfunc
21
22func Test_translate_menu()
23  if !has('multi_lang')
24    return
25  endif
26  if !filereadable($VIMRUNTIME . '/lang/menu_de_de.latin1.vim')
27    throw 'Skipped: translated menu not found'
28  endif
29
30  " First delete any English menus.
31  source $VIMRUNTIME/delmenu.vim
32  set langmenu=de_de
33  source $VIMRUNTIME/menu.vim
34  call assert_match('browse confirm w', execute(':menu Datei.Speichern'))
35
36  source $VIMRUNTIME/delmenu.vim
37endfunc
38
39func Test_menu_commands()
40  nmenu 2 Test.FooBar :let g:did_menu = 'normal'<CR>
41  vmenu 2 Test.FooBar :let g:did_menu = 'visual'<CR>
42  smenu 2 Test.FooBar :let g:did_menu = 'select'<CR>
43  omenu 2 Test.FooBar :let g:did_menu = 'op-pending'<CR>
44  tlmenu 2 Test.FooBar :let g:did_menu = 'terminal'<CR>
45  imenu 2 Test.FooBar :let g:did_menu = 'insert'<CR>
46  cmenu 2 Test.FooBar :let g:did_menu = 'cmdline'<CR>
47  emenu n Test.FooBar
48
49  call feedkeys(":menu Test.FooB\<C-A>\<C-B>\"\<CR>", 'tx')
50  call assert_equal('"menu Test.FooBar', @:)
51
52  call assert_equal('normal', g:did_menu)
53  emenu v Test.FooBar
54  call assert_equal('visual', g:did_menu)
55  emenu s Test.FooBar
56  call assert_equal('select', g:did_menu)
57  emenu o Test.FooBar
58  call assert_equal('op-pending', g:did_menu)
59  emenu t Test.FooBar
60  call assert_equal('terminal', g:did_menu)
61  emenu i Test.FooBar
62  call assert_equal('insert', g:did_menu)
63  emenu c Test.FooBar
64  call assert_equal('cmdline', g:did_menu)
65
66  nunmenu Test.FooBar
67  call assert_fails('emenu n Test.FooBar', 'E335: Menu not defined for Normal mode')
68  vunmenu Test.FooBar
69  call assert_fails('emenu v Test.FooBar', 'E335: Menu not defined for Visual mode')
70  vmenu 2 Test.FooBar :let g:did_menu = 'visual'<CR>
71  sunmenu Test.FooBar
72  call assert_fails('emenu s Test.FooBar', 'E335: Menu not defined for Select mode')
73  ounmenu Test.FooBar
74  call assert_fails('emenu o Test.FooBar', 'E335: Menu not defined for Op-pending mode')
75  iunmenu Test.FooBar
76  call assert_fails('emenu i Test.FooBar', 'E335: Menu not defined for Insert mode')
77  cunmenu Test.FooBar
78  call assert_fails('emenu c Test.FooBar', 'E335: Menu not defined for Cmdline mode')
79  tlunmenu Test.FooBar
80  call assert_fails('emenu t Test.FooBar', 'E335: Menu not defined for Terminal mode')
81
82  aunmenu Test.FooBar
83  call assert_fails('emenu n Test.FooBar', 'E334:')
84
85  nmenu 2 Test.FooBar.Child :let g:did_menu = 'foobar'<CR>
86  call assert_fails('emenu n Test.FooBar', 'E333:')
87  nunmenu Test.FooBar.Child
88
89  unlet g:did_menu
90endfun
91
92" Test for menu item completion in command line
93func Test_menu_expand()
94  " Create the menu itmes for test
95  for i in range(1, 4)
96    let m = 'menu Xmenu.A' .. i .. '.A' .. i
97    for j in range(1, 4)
98      exe m .. 'B' .. j .. ' :echo "A' .. i .. 'B' .. j .. '"' .. "<CR>"
99    endfor
100  endfor
101  set wildmenu
102
103  " Test for <CR> selecting a submenu
104  call feedkeys(":emenu Xmenu.A\<Tab>\<CR>\<Right>x\<BS>\<C-B>\"\<CR>", 'xt')
105  call assert_equal('"emenu Xmenu.A1.A1B2', @:)
106
107  " Test for <Down> selecting a submenu
108  call feedkeys(":emenu Xmenu.A\<Tab>\<Right>\<Right>\<Down>" ..
109        \ "\<C-A>\<C-B>\"\<CR>", 'xt')
110  call assert_equal('"emenu Xmenu.A3.A3B1 A3B2 A3B3 A3B4', @:)
111
112  " Test for <Up> to go up a submenu
113  call feedkeys(":emenu Xmenu.A\<Tab>\<Down>\<Up>\<Right>\<Right>" ..
114        \ "\<Left>\<Down>\<C-A>\<C-B>\"\<CR>", 'xt')
115  call assert_equal('"emenu Xmenu.A2.A2B1 A2B2 A2B3 A2B4', @:)
116
117  " Test for <Up> to go up a menu
118  call feedkeys(":emenu Xmenu.A\<Tab>\<Down>\<Up>\<Up>\<Up>" ..
119        \ "\<C-A>\<C-B>\"\<CR>", 'xt')
120  call assert_equal('"emenu Buffers. Xmenu.', @:)
121
122  set wildmenu&
123  unmenu Xmenu
124endfunc
125
126" vim: shiftwidth=2 sts=2 expandtab
127