blob: 99f888af19dd4086b2b31002af6fb22e80816cf6 [file] [log] [blame]
Bram Moolenaar2d6c8002016-01-03 23:31:24 +01001" Test that the system menu can be loaded.
2
Bram Moolenaar11dd8c12017-03-04 20:41:34 +01003if !has('menu')
Bram Moolenaarb0f94c12019-06-13 22:19:53 +02004 throw 'Skipped, menu feature missing'
Bram Moolenaar11dd8c12017-03-04 20:41:34 +01005endif
6
Bram Moolenaar2d6c8002016-01-03 23:31:24 +01007func Test_load_menu()
8 try
9 source $VIMRUNTIME/menu.vim
10 catch
Bram Moolenaar37175402017-03-18 20:18:45 +010011 call assert_report('error while loading menus: ' . v:exception)
Bram Moolenaar2d6c8002016-01-03 23:31:24 +010012 endtry
Bram Moolenaara1c8ecf2017-03-04 21:41:05 +010013 call assert_match('browse confirm w', execute(':menu File.Save'))
Bram Moolenaar11dd8c12017-03-04 20:41:34 +010014 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
Bram Moolenaara1c8ecf2017-03-04 21:41:05 +010025 " First delete any English menus.
26 source $VIMRUNTIME/delmenu.vim
Bram Moolenaar11dd8c12017-03-04 20:41:34 +010027 set langmenu=de_de
28 source $VIMRUNTIME/menu.vim
Bram Moolenaar5558d192017-03-04 21:02:22 +010029 call assert_match('browse confirm w', execute(':menu Datei.Speichern'))
Bram Moolenaar11dd8c12017-03-04 20:41:34 +010030
31 source $VIMRUNTIME/delmenu.vim
Bram Moolenaar2d6c8002016-01-03 23:31:24 +010032endfunc
Bram Moolenaar4c5d8152018-10-19 22:36:53 +020033
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
Bram Moolenaarce793532019-05-05 14:19:20 +020057 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')
Bram Moolenaar4c5d8152018-10-19 22:36:53 +020070 tlunmenu Test.FooBar
Bram Moolenaarce793532019-05-05 14:19:20 +020071 call assert_fails('emenu t Test.FooBar', 'E335: Menu not defined for Terminal mode')
72
73 aunmenu Test.FooBar
Bram Moolenaar4c5d8152018-10-19 22:36:53 +020074 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