1" Test for user command counts.
2
3func Test_command_count_0()
4  let bufnr = bufnr('%')
5  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
19  call assert_equal([bufnr, bufnr], lines)
20  %RangeLoadedBuffers
21  call assert_equal([bufnr, bufnr], lines)
22  RangeLoadedBuffersAll
23  call assert_equal([bufnr, bufnr], lines)
24  .,$RangeBuffers
25  call assert_equal([bufnr, lastbuf], lines)
26  %RangeBuffers
27  call assert_equal([bufnr, lastbuf], lines)
28  RangeBuffersAll
29  call assert_equal([bufnr, lastbuf], lines)
30
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()
142  let bufnr = bufnr('%')
143  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('%')
150  exe bufnr . 'buf'
151  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
160  let bufnr = bufnr('$')
161  next aa bb cc dd ee ff
162  call assert_equal(bufnr, bufnr('%'))
163
164  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'
178  let bufnr = bufnr('%')
179  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
197
198" vim: shiftwidth=2 sts=2 expandtab
199