1" Tests for user defined commands 2 3" Test for <mods> in user defined commands 4function Test_cmdmods() 5 let g:mods = '' 6 7 command! -nargs=* MyCmd let g:mods .= '<mods> ' 8 9 MyCmd 10 aboveleft MyCmd 11 abo MyCmd 12 belowright MyCmd 13 bel MyCmd 14 botright MyCmd 15 bo MyCmd 16 browse MyCmd 17 bro MyCmd 18 confirm MyCmd 19 conf MyCmd 20 hide MyCmd 21 hid MyCmd 22 keepalt MyCmd 23 keepa MyCmd 24 keepjumps MyCmd 25 keepj MyCmd 26 keepmarks MyCmd 27 kee MyCmd 28 keeppatterns MyCmd 29 keepp MyCmd 30 leftabove MyCmd " results in :aboveleft 31 lefta MyCmd 32 lockmarks MyCmd 33 loc MyCmd 34 " noautocmd MyCmd 35 noswapfile MyCmd 36 nos MyCmd 37 rightbelow MyCmd " results in :belowright 38 rightb MyCmd 39 " sandbox MyCmd 40 silent MyCmd 41 sil MyCmd 42 tab MyCmd 43 topleft MyCmd 44 to MyCmd 45 " unsilent MyCmd 46 verbose MyCmd 47 verb MyCmd 48 vertical MyCmd 49 vert MyCmd 50 51 aboveleft belowright botright browse confirm hide keepalt keepjumps 52 \ keepmarks keeppatterns lockmarks noswapfile silent tab 53 \ topleft verbose vertical MyCmd 54 55 call assert_equal(' aboveleft aboveleft belowright belowright botright ' . 56 \ 'botright browse browse confirm confirm hide hide ' . 57 \ 'keepalt keepalt keepjumps keepjumps keepmarks keepmarks ' . 58 \ 'keeppatterns keeppatterns aboveleft aboveleft lockmarks lockmarks noswapfile ' . 59 \ 'noswapfile belowright belowright silent silent tab topleft topleft verbose verbose ' . 60 \ 'vertical vertical ' . 61 \ 'aboveleft belowright botright browse confirm hide keepalt keepjumps ' . 62 \ 'keepmarks keeppatterns lockmarks noswapfile silent tab topleft ' . 63 \ 'verbose vertical ', g:mods) 64 65 let g:mods = '' 66 command! -nargs=* MyQCmd let g:mods .= '<q-mods> ' 67 68 vertical MyQCmd 69 call assert_equal('"vertical" ', g:mods) 70 71 delcommand MyCmd 72 delcommand MyQCmd 73 unlet g:mods 74endfunction 75 76func Test_Ambiguous() 77 command Doit let g:didit = 'yes' 78 command Dothat let g:didthat = 'also' 79 call assert_fails('Do', 'E464:') 80 Doit 81 call assert_equal('yes', g:didit) 82 Dothat 83 call assert_equal('also', g:didthat) 84 unlet g:didit 85 unlet g:didthat 86 87 delcommand Doit 88 Do 89 call assert_equal('also', g:didthat) 90 delcommand Dothat 91endfunc 92 93func Test_CmdUndefined() 94 call assert_fails('Doit', 'E492:') 95 au CmdUndefined Doit :command Doit let g:didit = 'yes' 96 Doit 97 call assert_equal('yes', g:didit) 98 delcommand Doit 99 100 call assert_fails('Dothat', 'E492:') 101 au CmdUndefined * let g:didnot = 'yes' 102 call assert_fails('Dothat', 'E492:') 103 call assert_equal('yes', g:didnot) 104endfunc 105 106func Test_CmdErrors() 107 call assert_fails('com! docmd :', 'E183:') 108 call assert_fails('com! \<Tab> :', 'E182:') 109 call assert_fails('com! _ :', 'E182:') 110 call assert_fails('com! X :', 'E841:') 111 call assert_fails('com! - DoCmd :', 'E175:') 112 call assert_fails('com! -xxx DoCmd :', 'E181:') 113 call assert_fails('com! -addr DoCmd :', 'E179:') 114 call assert_fails('com! -complete DoCmd :', 'E179:') 115 call assert_fails('com! -complete=xxx DoCmd :', 'E180:') 116 call assert_fails('com! -complete=custom DoCmd :', 'E467:') 117 call assert_fails('com! -complete=customlist DoCmd :', 'E467:') 118 call assert_fails('com! -complete=behave,CustomComplete DoCmd :', 'E468:') 119 call assert_fails('com! -nargs=x DoCmd :', 'E176:') 120 call assert_fails('com! -count=1 -count=2 DoCmd :', 'E177:') 121 call assert_fails('com! -count=x DoCmd :', 'E178:') 122 call assert_fails('com! -range=x DoCmd :', 'E178:') 123 124 com! -nargs=0 DoCmd : 125 call assert_fails('DoCmd x', 'E488:') 126 127 com! -nargs=1 DoCmd : 128 call assert_fails('DoCmd', 'E471:') 129 130 com! -nargs=+ DoCmd : 131 call assert_fails('DoCmd', 'E471:') 132 133 call assert_fails('com DoCmd :', 'E174:') 134 comclear 135 call assert_fails('delcom DoCmd', 'E184:') 136endfunc 137 138func CustomComplete(A, L, P) 139 return "January\nFebruary\nMars\n" 140endfunc 141 142func CustomCompleteList(A, L, P) 143 return [ "Monday", "Tuesday", "Wednesday" ] 144endfunc 145 146func Test_CmdCompletion() 147 call feedkeys(":com -\<C-A>\<C-B>\"\<CR>", 'tx') 148 call assert_equal('"com -addr bang bar buffer complete count nargs range register', @:) 149 150 call feedkeys(":com -nargs=0 -\<C-A>\<C-B>\"\<CR>", 'tx') 151 call assert_equal('"com -nargs=0 -addr bang bar buffer complete count nargs range register', @:) 152 153 call feedkeys(":com -nargs=\<C-A>\<C-B>\"\<CR>", 'tx') 154 call assert_equal('"com -nargs=* + 0 1 ?', @:) 155 156 call feedkeys(":com -addr=\<C-A>\<C-B>\"\<CR>", 'tx') 157 call assert_equal('"com -addr=arguments buffers lines loaded_buffers quickfix tabs windows', @:) 158 159 call feedkeys(":com -complete=co\<C-A>\<C-B>\"\<CR>", 'tx') 160 call assert_equal('"com -complete=color command compiler', @:) 161 162 command! DoCmd1 : 163 command! DoCmd2 : 164 call feedkeys(":com \<C-A>\<C-B>\"\<CR>", 'tx') 165 call assert_equal('"com DoCmd1 DoCmd2', @:) 166 167 call feedkeys(":DoC\<C-A>\<C-B>\"\<CR>", 'tx') 168 call assert_equal('"DoCmd1 DoCmd2', @:) 169 170 call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx') 171 call assert_equal('"delcom DoCmd1 DoCmd2', @:) 172 173 delcom DoCmd1 174 call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx') 175 call assert_equal('"delcom DoCmd2', @:) 176 177 call feedkeys(":com DoC\<C-A>\<C-B>\"\<CR>", 'tx') 178 call assert_equal('"com DoCmd2', @:) 179 180 delcom DoCmd2 181 call feedkeys(":delcom DoC\<C-A>\<C-B>\"\<CR>", 'tx') 182 call assert_equal('"delcom DoC', @:) 183 184 call feedkeys(":com DoC\<C-A>\<C-B>\"\<CR>", 'tx') 185 call assert_equal('"com DoC', @:) 186 187 com! -complete=behave DoCmd : 188 call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx') 189 call assert_equal('"DoCmd mswin xterm', @:) 190 191 " This does not work. Why? 192 "call feedkeys(":DoCmd x\<C-A>\<C-B>\"\<CR>", 'tx') 193 "call assert_equal('"DoCmd xterm', @:) 194 195 com! -complete=custom,CustomComplete DoCmd : 196 call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx') 197 call assert_equal('"DoCmd January February Mars', @:) 198 199 com! -complete=customlist,CustomCompleteList DoCmd : 200 call feedkeys(":DoCmd \<C-A>\<C-B>\"\<CR>", 'tx') 201 call assert_equal('"DoCmd Monday Tuesday Wednesday', @:) 202 203 com! -complete=custom,CustomCompleteList DoCmd : 204 call assert_fails("call feedkeys(':DoCmd \<C-D>', 'tx')", 'E730:') 205 206 com! -complete=customlist,CustomComp DoCmd : 207 call assert_fails("call feedkeys(':DoCmd \<C-D>', 'tx')", 'E117:') 208endfunc 209