blob: 55b230373fdbad0e6ec2fe1ee360d7e43c0bba0e [file] [log] [blame]
Bram Moolenaarb3435b02016-09-29 20:54:59 +02001" Test for user command counts.
2
3func Test_command_count_0()
Bram Moolenaarcf1ba352017-10-27 00:55:04 +02004 let bufnr = bufnr('%')
Bram Moolenaarb3435b02016-09-29 20:54:59 +02005 set hidden
6 set noswapfile
7
8 split DoesNotExistEver
9 let lastbuf = bufnr('$')
10 call setline(1, 'asdf')
11 quit!
12
13 command! -range -addr=loaded_buffers RangeLoadedBuffers :let lines = [<line1>, <line2>]
14 command! -range=% -addr=loaded_buffers RangeLoadedBuffersAll :let lines = [<line1>, <line2>]
15 command! -range -addr=buffers RangeBuffers :let lines = [<line1>, <line2>]
16 command! -range=% -addr=buffers RangeBuffersAll :let lines = [<line1>, <line2>]
17
18 .,$RangeLoadedBuffers
Bram Moolenaarcf1ba352017-10-27 00:55:04 +020019 call assert_equal([bufnr, bufnr], lines)
Bram Moolenaarb3435b02016-09-29 20:54:59 +020020 %RangeLoadedBuffers
Bram Moolenaarcf1ba352017-10-27 00:55:04 +020021 call assert_equal([bufnr, bufnr], lines)
Bram Moolenaarb3435b02016-09-29 20:54:59 +020022 RangeLoadedBuffersAll
Bram Moolenaarcf1ba352017-10-27 00:55:04 +020023 call assert_equal([bufnr, bufnr], lines)
Bram Moolenaarb3435b02016-09-29 20:54:59 +020024 .,$RangeBuffers
Bram Moolenaarcf1ba352017-10-27 00:55:04 +020025 call assert_equal([bufnr, lastbuf], lines)
Bram Moolenaarb3435b02016-09-29 20:54:59 +020026 %RangeBuffers
Bram Moolenaarcf1ba352017-10-27 00:55:04 +020027 call assert_equal([bufnr, lastbuf], lines)
Bram Moolenaarb3435b02016-09-29 20:54:59 +020028 RangeBuffersAll
Bram Moolenaarcf1ba352017-10-27 00:55:04 +020029 call assert_equal([bufnr, lastbuf], lines)
Bram Moolenaarb3435b02016-09-29 20:54:59 +020030
31 delcommand RangeLoadedBuffers
32 delcommand RangeLoadedBuffersAll
33 delcommand RangeBuffers
34 delcommand RangeBuffersAll
35
36 set hidden&
37 set swapfile&
38endfunc
39
40func Test_command_count_1()
41 silent! %argd
42 arga a b c d e
43 argdo echo "loading buffers"
44 argu 3
45 command! -range -addr=arguments RangeArguments :let lines = [<line1>, <line2>]
46 command! -range=% -addr=arguments RangeArgumentsAll :let lines = [<line1>, <line2>]
47 .-,$-RangeArguments
48 call assert_equal([2, 4], lines)
49 %RangeArguments
50 call assert_equal([1, 5], lines)
51 RangeArgumentsAll
52 call assert_equal([1, 5], lines)
53 N
54 .RangeArguments
55 call assert_equal([2, 2], lines)
56 delcommand RangeArguments
57 delcommand RangeArgumentsAll
58
59 split|split|split|split
60 3wincmd w
61 command! -range -addr=windows RangeWindows :let lines = [<line1>, <line2>]
62 .,$RangeWindows
63 call assert_equal([3, 5], lines)
64 %RangeWindows
65 call assert_equal([1, 5], lines)
66 delcommand RangeWindows
67
68 command! -range=% -addr=windows RangeWindowsAll :let lines = [<line1>, <line2>]
69 RangeWindowsAll
70 call assert_equal([1, 5], lines)
71 delcommand RangeWindowsAll
72 only
73 blast|bd
74
75 tabe|tabe|tabe|tabe
76 normal 2gt
77 command! -range -addr=tabs RangeTabs :let lines = [<line1>, <line2>]
78 .,$RangeTabs
79 call assert_equal([2, 5], lines)
80 %RangeTabs
81 call assert_equal([1, 5], lines)
82 delcommand RangeTabs
83
84 command! -range=% -addr=tabs RangeTabsAll :let lines = [<line1>, <line2>]
85 RangeTabsAll
86 call assert_equal([1, 5], lines)
87 delcommand RangeTabsAll
88 1tabonly
89
90 s/\n/\r\r\r\r\r/
91 2ma<
92 $-ma>
93 command! -range=% RangeLines :let lines = [<line1>, <line2>]
94 '<,'>RangeLines
95 call assert_equal([2, 5], lines)
96 delcommand RangeLines
97
98 command! -range=% -buffer LocalRangeLines :let lines = [<line1>, <line2>]
99 '<,'>LocalRangeLines
100 call assert_equal([2, 5], lines)
101 delcommand LocalRangeLines
102endfunc
103
104func Test_command_count_2()
105 silent! %argd
106 arga a b c d
107 call assert_fails('5argu', 'E16:')
108
109 $argu
110 call assert_equal('d', expand('%:t'))
111
112 1argu
113 call assert_equal('a', expand('%:t'))
114
115 call assert_fails('300b', 'E16:')
116
117 split|split|split|split
118 0close
119
120 $wincmd w
121 $close
122 call assert_equal(3, winnr())
123
124 call assert_fails('$+close', 'E16:')
125
126 $tabe
127 call assert_equal(2, tabpagenr())
128
129 call assert_fails('$+tabe', 'E16:')
130
131 only!
132 e x
133 0tabm
134 normal 1gt
135 call assert_equal('x', expand('%:t'))
136
137 tabonly!
138 only!
139endfunc
140
141func Test_command_count_3()
Bram Moolenaarcf1ba352017-10-27 00:55:04 +0200142 let bufnr = bufnr('%')
Bram Moolenaarb3435b02016-09-29 20:54:59 +0200143 se nohidden
144 e aaa
145 let buf_aaa = bufnr('%')
146 e bbb
147 let buf_bbb = bufnr('%')
148 e ccc
149 let buf_ccc = bufnr('%')
Bram Moolenaarcf1ba352017-10-27 00:55:04 +0200150 exe bufnr . 'buf'
Bram Moolenaarb3435b02016-09-29 20:54:59 +0200151 call assert_equal([1, 1, 1], [buflisted(buf_aaa), buflisted(buf_bbb), buflisted(buf_ccc)])
152 exe buf_bbb . "," . buf_ccc . "bdelete"
153 call assert_equal([1, 0, 0], [buflisted(buf_aaa), buflisted(buf_bbb), buflisted(buf_ccc)])
154 exe buf_aaa . "bdelete"
155 call assert_equal([0, 0, 0], [buflisted(buf_aaa), buflisted(buf_bbb), buflisted(buf_ccc)])
156endfunc
157
158func Test_command_count_4()
159 %argd
Bram Moolenaarcf1ba352017-10-27 00:55:04 +0200160 let bufnr = bufnr('$')
Bram Moolenaar32bbd002018-08-31 23:06:22 +0200161 next aa bb cc dd ee ff
162 call assert_equal(bufnr, bufnr('%'))
163
Bram Moolenaarb3435b02016-09-29 20:54:59 +0200164 3argu
165 let args = []
166 .,$-argdo call add(args, expand('%'))
167 call assert_equal(['cc', 'dd', 'ee'], args)
168
169 " create windows to get 5
170 split|split|split|split
171 2wincmd w
172 let windows = []
173 .,$-windo call add(windows, winnr())
174 call assert_equal([2, 3, 4], windows)
175 only!
176
177 exe bufnr . 'buf'
Bram Moolenaarcf1ba352017-10-27 00:55:04 +0200178 let bufnr = bufnr('%')
Bram Moolenaarb3435b02016-09-29 20:54:59 +0200179 let buffers = []
180 .,$-bufdo call add(buffers, bufnr('%'))
181 call assert_equal([bufnr, bufnr + 1, bufnr + 2, bufnr + 3, bufnr + 4], buffers)
182
183 exe (bufnr + 3) . 'bdel'
184 let buffers = []
185 exe (bufnr + 2) . ',' . (bufnr + 5) . "bufdo call add(buffers, bufnr('%'))"
186 call assert_equal([bufnr + 2, bufnr + 4, bufnr + 5], buffers)
187
188 " create tabpages to get 5
189 tabe|tabe|tabe|tabe
190 normal! 2gt
191 let tabpages = []
192 .,$-tabdo call add(tabpages, tabpagenr())
193 call assert_equal([2, 3, 4], tabpages)
194 tabonly!
195 bwipe!
196endfunc