1" Tests for :[count]close! command
2
3func Test_close_count()
4  enew! | only
5
6  let wids = [win_getid()]
7  for i in range(5)
8    new
9    call add(wids, win_getid())
10  endfor
11
12  4wincmd w
13  close!
14  let ids = []
15  windo call add(ids, win_getid())
16  call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids)
17
18  1close!
19  let ids = []
20  windo call add(ids, win_getid())
21  call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids)
22
23  $close!
24  let ids = []
25  windo call add(ids, win_getid())
26  call assert_equal([wids[4], wids[3], wids[1]], ids)
27
28  1wincmd w
29  2close!
30  let ids = []
31  windo call add(ids, win_getid())
32  call assert_equal([wids[4], wids[1]], ids)
33
34  1wincmd w
35  new
36  call add(wids, win_getid())
37  new
38  call add(wids, win_getid())
39  2wincmd w
40  -1close!
41  let ids = []
42  windo call add(ids, win_getid())
43  call assert_equal([wids[6], wids[4], wids[1]], ids)
44
45  2wincmd w
46  +1close!
47  let ids = []
48  windo call add(ids, win_getid())
49  call assert_equal([wids[6], wids[4]], ids)
50
51  only!
52endfunc
53
54" Tests for :[count]hide command
55func Test_hide_count()
56  enew! | only
57
58  let wids = [win_getid()]
59  for i in range(5)
60    new
61    call add(wids, win_getid())
62  endfor
63
64  4wincmd w
65  .hide
66  let ids = []
67  windo call add(ids, win_getid())
68  call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids)
69
70  1hide
71  let ids = []
72  windo call add(ids, win_getid())
73  call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids)
74
75  $hide
76  let ids = []
77  windo call add(ids, win_getid())
78  call assert_equal([wids[4], wids[3], wids[1]], ids)
79
80  1wincmd w
81  2hide
82  let ids = []
83  windo call add(ids, win_getid())
84  call assert_equal([wids[4], wids[1]], ids)
85
86  1wincmd w
87  new
88  call add(wids, win_getid())
89  new
90  call add(wids, win_getid())
91  3wincmd w
92  -hide
93  let ids = []
94  windo call add(ids, win_getid())
95  call assert_equal([wids[7], wids[4], wids[1]], ids)
96
97  2wincmd w
98  +hide
99  let ids = []
100  windo call add(ids, win_getid())
101  call assert_equal([wids[7], wids[4]], ids)
102
103  only!
104endfunc
105
106" Tests for :[count]close! command with 'hidden'
107func Test_hidden_close_count()
108  enew! | only
109
110  let wids = [win_getid()]
111  for i in range(5)
112    new
113    call add(wids, win_getid())
114  endfor
115
116  set hidden
117
118  $ hide
119  let ids = []
120  windo call add(ids, win_getid())
121  call assert_equal([wids[5], wids[4], wids[3], wids[2], wids[1]], ids)
122
123  $-1 close!
124  let ids = []
125  windo call add(ids, win_getid())
126  call assert_equal([wids[5], wids[4], wids[3], wids[1]], ids)
127
128  1wincmd w
129  .+close!
130  let ids = []
131  windo call add(ids, win_getid())
132  call assert_equal([wids[5], wids[3], wids[1]], ids)
133
134  set nohidden
135  only!
136endfunc
137
138" Tests for 'CTRL-W c' command to close windows.
139func Test_winclose_command()
140  enew! | only
141
142  let wids = [win_getid()]
143  for i in range(5)
144    new
145    call add(wids, win_getid())
146  endfor
147
148  set hidden
149
150  4wincmd w
151  exe "normal \<C-W>c"
152  let ids = []
153  windo call add(ids, win_getid())
154  call assert_equal([wids[5], wids[4], wids[3], wids[1], wids[0]], ids)
155
156  exe "normal 1\<C-W>c"
157  let ids = []
158  windo call add(ids, win_getid())
159  call assert_equal([wids[4], wids[3], wids[1], wids[0]], ids)
160
161  exe "normal 9\<C-W>c"
162  let ids = []
163  windo call add(ids, win_getid())
164  call assert_equal([wids[4], wids[3], wids[1]], ids)
165
166  1wincmd w
167  exe "normal 2\<C-W>c"
168  let ids = []
169  windo call add(ids, win_getid())
170  call assert_equal([wids[4], wids[1]], ids)
171
172  set nohidden
173  only!
174endfunc
175
176" vim: shiftwidth=2 sts=2 expandtab
177