View Javadoc

1   /**
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *     http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   */
18  package org.apache.hadoop.hbase.hbtop.screen.top;
19  
20  import static org.hamcrest.CoreMatchers.is;
21  import static org.junit.Assert.assertThat;
22  
23  import org.apache.hadoop.hbase.testclassification.SmallTests;
24  import org.junit.Test;
25  import org.junit.experimental.categories.Category;
26  
27  @Category(SmallTests.class)
28  public class TestPaging {
29  
30    @Test
31    public void testArrowUpAndArrowDown() {
32      Paging paging = new Paging();
33      paging.updatePageSize(3);
34      paging.updateRecordsSize(5);
35  
36      assertPaging(paging, 0, 0, 3);
37  
38      paging.arrowDown();
39      assertPaging(paging, 1, 0, 3);
40  
41      paging.arrowDown();
42      assertPaging(paging, 2, 0, 3);
43  
44      paging.arrowDown();
45      assertPaging(paging, 3, 1, 4);
46  
47      paging.arrowDown();
48      assertPaging(paging, 4, 2, 5);
49  
50      paging.arrowDown();
51      assertPaging(paging, 4, 2, 5);
52  
53      paging.arrowUp();
54      assertPaging(paging, 3, 2, 5);
55  
56      paging.arrowUp();
57      assertPaging(paging, 2, 2, 5);
58  
59      paging.arrowUp();
60      assertPaging(paging, 1, 1, 4);
61  
62      paging.arrowUp();
63      assertPaging(paging, 0, 0, 3);
64  
65      paging.arrowUp();
66      assertPaging(paging, 0, 0, 3);
67    }
68  
69    @Test
70    public void testPageUpAndPageDown() {
71      Paging paging = new Paging();
72      paging.updatePageSize(3);
73      paging.updateRecordsSize(8);
74  
75      assertPaging(paging, 0, 0, 3);
76  
77      paging.pageDown();
78      assertPaging(paging, 3, 3, 6);
79  
80      paging.pageDown();
81      assertPaging(paging, 6, 5, 8);
82  
83      paging.pageDown();
84      assertPaging(paging, 7, 5, 8);
85  
86      paging.pageDown();
87      assertPaging(paging, 7, 5, 8);
88  
89      paging.pageUp();
90      assertPaging(paging, 4, 4, 7);
91  
92      paging.pageUp();
93      assertPaging(paging, 1, 1, 4);
94  
95      paging.pageUp();
96      assertPaging(paging, 0, 0, 3);
97  
98      paging.pageUp();
99      assertPaging(paging, 0, 0, 3);
100   }
101 
102   @Test
103   public void testInit() {
104     Paging paging = new Paging();
105     paging.updatePageSize(3);
106     paging.updateRecordsSize(5);
107 
108     assertPaging(paging, 0, 0, 3);
109 
110     paging.pageDown();
111     paging.pageDown();
112     paging.pageDown();
113     paging.pageDown();
114     paging.init();
115 
116     assertPaging(paging, 0, 0, 3);
117   }
118 
119   @Test
120   public void testWhenPageSizeGraterThanRecordsSize() {
121     Paging paging = new Paging();
122     paging.updatePageSize(5);
123     paging.updateRecordsSize(3);
124 
125     assertPaging(paging, 0, 0, 3);
126 
127     paging.arrowDown();
128     assertPaging(paging, 1, 0, 3);
129 
130     paging.arrowDown();
131     assertPaging(paging, 2, 0, 3);
132 
133     paging.arrowDown();
134     assertPaging(paging, 2, 0, 3);
135 
136     paging.arrowUp();
137     assertPaging(paging, 1, 0, 3);
138 
139     paging.arrowUp();
140     assertPaging(paging, 0, 0, 3);
141 
142     paging.arrowUp();
143     assertPaging(paging, 0, 0, 3);
144 
145     paging.pageDown();
146     assertPaging(paging, 2, 0, 3);
147 
148     paging.pageDown();
149     assertPaging(paging, 2, 0, 3);
150 
151     paging.pageUp();
152     assertPaging(paging, 0, 0, 3);
153 
154     paging.pageUp();
155     assertPaging(paging, 0, 0, 3);
156   }
157 
158   @Test
159   public void testWhenPageSizeIsZero() {
160     Paging paging = new Paging();
161     paging.updatePageSize(0);
162     paging.updateRecordsSize(5);
163 
164     assertPaging(paging, 0, 0, 0);
165 
166     paging.arrowDown();
167     assertPaging(paging, 1, 0, 0);
168 
169     paging.arrowUp();
170     assertPaging(paging, 0, 0, 0);
171 
172     paging.pageDown();
173     assertPaging(paging, 0, 0, 0);
174 
175     paging.pageUp();
176     assertPaging(paging, 0, 0, 0);
177   }
178 
179   @Test
180   public void testWhenRecordsSizeIsZero() {
181     Paging paging = new Paging();
182     paging.updatePageSize(3);
183     paging.updateRecordsSize(0);
184 
185     assertPaging(paging, 0, 0, 0);
186 
187     paging.arrowDown();
188     assertPaging(paging, 0, 0, 0);
189 
190     paging.arrowUp();
191     assertPaging(paging, 0, 0, 0);
192 
193     paging.pageDown();
194     assertPaging(paging, 0, 0, 0);
195 
196     paging.pageUp();
197     assertPaging(paging, 0, 0, 0);
198   }
199 
200   @Test
201   public void testWhenChangingPageSizeDynamically() {
202     Paging paging = new Paging();
203     paging.updatePageSize(3);
204     paging.updateRecordsSize(5);
205 
206     assertPaging(paging, 0, 0, 3);
207 
208     paging.arrowDown();
209     assertPaging(paging, 1, 0, 3);
210 
211     paging.updatePageSize(2);
212     assertPaging(paging, 1, 0, 2);
213 
214     paging.arrowDown();
215     assertPaging(paging, 2, 1, 3);
216 
217     paging.arrowDown();
218     assertPaging(paging, 3, 2, 4);
219 
220     paging.updatePageSize(4);
221     assertPaging(paging, 3, 1, 5);
222 
223     paging.updatePageSize(5);
224     assertPaging(paging, 3, 0, 5);
225 
226     paging.updatePageSize(0);
227     assertPaging(paging, 3, 0, 0);
228 
229     paging.arrowDown();
230     assertPaging(paging, 4, 0, 0);
231 
232     paging.arrowUp();
233     assertPaging(paging, 3, 0, 0);
234 
235     paging.pageDown();
236     assertPaging(paging, 3, 0, 0);
237 
238     paging.pageUp();
239     assertPaging(paging, 3, 0, 0);
240 
241     paging.updatePageSize(1);
242     assertPaging(paging, 3, 3, 4);
243   }
244 
245   @Test
246   public void testWhenChangingRecordsSizeDynamically() {
247     Paging paging = new Paging();
248     paging.updatePageSize(3);
249     paging.updateRecordsSize(5);
250 
251     assertPaging(paging, 0, 0, 3);
252 
253     paging.updateRecordsSize(2);
254     assertPaging(paging, 0, 0, 2);
255     assertThat(paging.getCurrentPosition(), is(0));
256     assertThat(paging.getPageStartPosition(), is(0));
257     assertThat(paging.getPageEndPosition(), is(2));
258 
259     paging.arrowDown();
260     assertPaging(paging, 1, 0, 2);
261 
262     paging.updateRecordsSize(3);
263     assertPaging(paging, 1, 0, 3);
264 
265     paging.arrowDown();
266     assertPaging(paging, 2, 0, 3);
267 
268     paging.updateRecordsSize(1);
269     assertPaging(paging, 0, 0, 1);
270 
271     paging.updateRecordsSize(0);
272     assertPaging(paging, 0, 0, 0);
273 
274     paging.arrowDown();
275     assertPaging(paging, 0, 0, 0);
276 
277     paging.arrowUp();
278     assertPaging(paging, 0, 0, 0);
279 
280     paging.pageDown();
281     assertPaging(paging, 0, 0, 0);
282 
283     paging.pageUp();
284     assertPaging(paging, 0, 0, 0);
285   }
286 
287   private void assertPaging(Paging paging, int currentPosition, int pageStartPosition,
288     int pageEndPosition) {
289     assertThat(paging.getCurrentPosition(), is(currentPosition));
290     assertThat(paging.getPageStartPosition(), is(pageStartPosition));
291     assertThat(paging.getPageEndPosition(), is(pageEndPosition));
292   }
293 }