xref: /vim-8.2.3635/src/testdir/test_menu.vim (revision dabfde04)
1" Test that the system menu can be loaded.
2
3if !has('menu')
4  finish
5endif
6
7func Test_load_menu()
8  try
9    source $VIMRUNTIME/menu.vim
10  catch
11    call assert_report('error while loading menus: ' . v:exception)
12  endtry
13  call assert_match('browse confirm w', execute(':menu File.Save'))
14  source $VIMRUNTIME/delmenu.vim
15endfunc
16
17func Test_translate_menu()
18  if !has('multi_lang')
19    return
20  endif
21  if !filereadable($VIMRUNTIME . '/lang/menu_de_de.latin1.vim')
22    throw 'Skipped: translated menu not found'
23  endif
24
25  " First delete any English menus.
26  source $VIMRUNTIME/delmenu.vim
27  set langmenu=de_de
28  source $VIMRUNTIME/menu.vim
29  call assert_match('browse confirm w', execute(':menu Datei.Speichern'))
30
31  source $VIMRUNTIME/delmenu.vim
32endfunc
33
34func Test_menu_commands()
35  nmenu 2 Test.FooBar :let g:did_menu = 'normal'<CR>
36  vmenu 2 Test.FooBar :let g:did_menu = 'visual'<CR>
37  smenu 2 Test.FooBar :let g:did_menu = 'select'<CR>
38  omenu 2 Test.FooBar :let g:did_menu = 'op-pending'<CR>
39  tlmenu 2 Test.FooBar :let g:did_menu = 'terminal'<CR>
40  imenu 2 Test.FooBar :let g:did_menu = 'insert'<CR>
41  cmenu 2 Test.FooBar :let g:did_menu = 'cmdline'<CR>
42  emenu n Test.FooBar
43  call assert_equal('normal', g:did_menu)
44  emenu v Test.FooBar
45  call assert_equal('visual', g:did_menu)
46  emenu s Test.FooBar
47  call assert_equal('select', g:did_menu)
48  emenu o Test.FooBar
49  call assert_equal('op-pending', g:did_menu)
50  emenu t Test.FooBar
51  call assert_equal('terminal', g:did_menu)
52  emenu i Test.FooBar
53  call assert_equal('insert', g:did_menu)
54  emenu c Test.FooBar
55  call assert_equal('cmdline', g:did_menu)
56
57  nunmenu Test.FooBar
58  call assert_fails('emenu n Test.FooBar', 'E335: Menu not defined for Normal mode')
59  vunmenu Test.FooBar
60  call assert_fails('emenu v Test.FooBar', 'E335: Menu not defined for Visual mode')
61  vmenu 2 Test.FooBar :let g:did_menu = 'visual'<CR>
62  sunmenu Test.FooBar
63  call assert_fails('emenu s Test.FooBar', 'E335: Menu not defined for Select mode')
64  ounmenu Test.FooBar
65  call assert_fails('emenu o Test.FooBar', 'E335: Menu not defined for Op-pending mode')
66  iunmenu Test.FooBar
67  call assert_fails('emenu i Test.FooBar', 'E335: Menu not defined for Insert mode')
68  cunmenu Test.FooBar
69  call assert_fails('emenu c Test.FooBar', 'E335: Menu not defined for Cmdline mode')
70  tlunmenu Test.FooBar
71  call assert_fails('emenu t Test.FooBar', 'E335: Menu not defined for Terminal mode')
72
73  aunmenu Test.FooBar
74  call assert_fails('emenu n Test.FooBar', 'E334:')
75
76  nmenu 2 Test.FooBar.Child :let g:did_menu = 'foobar'<CR>
77  call assert_fails('emenu n Test.FooBar', 'E333:')
78  nunmenu Test.FooBar.Child
79
80  unlet g:did_menu
81endfun
82