blob: 2d793ed88fbdc9ddbd9d0db60727490ba3a3bca4 [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 Moolenaarb3435b02016-09-29 20:54:59 +0200161 arga aa bb cc dd ee ff
162 3argu
163 let args = []
164 .,$-argdo call add(args, expand('%'))
165 call assert_equal(['cc', 'dd', 'ee'], args)
166
167 " create windows to get 5
168 split|split|split|split
169 2wincmd w
170 let windows = []
171 .,$-windo call add(windows, winnr())
172 call assert_equal([2, 3, 4], windows)
173 only!
174
175 exe bufnr . 'buf'
Bram Moolenaarcf1ba352017-10-27 00:55:04 +0200176 bnext
177 let bufnr = bufnr('%')
Bram Moolenaarb3435b02016-09-29 20:54:59 +0200178 let buffers = []
179 .,$-bufdo call add(buffers, bufnr('%'))
180 call assert_equal([bufnr, bufnr + 1, bufnr + 2, bufnr + 3, bufnr + 4], buffers)
181
182 exe (bufnr + 3) . 'bdel'
183 let buffers = []
184 exe (bufnr + 2) . ',' . (bufnr + 5) . "bufdo call add(buffers, bufnr('%'))"
185 call assert_equal([bufnr + 2, bufnr + 4, bufnr + 5], buffers)
186
187 " create tabpages to get 5
188 tabe|tabe|tabe|tabe
189 normal! 2gt
190 let tabpages = []
191 .,$-tabdo call add(tabpages, tabpagenr())
192 call assert_equal([2, 3, 4], tabpages)
193 tabonly!
194 bwipe!
195endfunc