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