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