001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.hbase.hbtop.screen.top; 019 020import static org.hamcrest.CoreMatchers.is; 021import static org.hamcrest.MatcherAssert.assertThat; 022 023import org.apache.hadoop.hbase.HBaseClassTestRule; 024import org.apache.hadoop.hbase.testclassification.SmallTests; 025import org.junit.ClassRule; 026import org.junit.Test; 027import org.junit.experimental.categories.Category; 028 029@Category(SmallTests.class) 030public class TestPaging { 031 032 @ClassRule 033 public static final HBaseClassTestRule CLASS_RULE = HBaseClassTestRule.forClass(TestPaging.class); 034 035 @Test 036 public void testArrowUpAndArrowDown() { 037 Paging paging = new Paging(); 038 paging.updatePageSize(3); 039 paging.updateRecordsSize(5); 040 041 assertPaging(paging, 0, 0, 3); 042 043 paging.arrowDown(); 044 assertPaging(paging, 1, 0, 3); 045 046 paging.arrowDown(); 047 assertPaging(paging, 2, 0, 3); 048 049 paging.arrowDown(); 050 assertPaging(paging, 3, 1, 4); 051 052 paging.arrowDown(); 053 assertPaging(paging, 4, 2, 5); 054 055 paging.arrowDown(); 056 assertPaging(paging, 4, 2, 5); 057 058 paging.arrowUp(); 059 assertPaging(paging, 3, 2, 5); 060 061 paging.arrowUp(); 062 assertPaging(paging, 2, 2, 5); 063 064 paging.arrowUp(); 065 assertPaging(paging, 1, 1, 4); 066 067 paging.arrowUp(); 068 assertPaging(paging, 0, 0, 3); 069 070 paging.arrowUp(); 071 assertPaging(paging, 0, 0, 3); 072 } 073 074 @Test 075 public void testPageUpAndPageDown() { 076 Paging paging = new Paging(); 077 paging.updatePageSize(3); 078 paging.updateRecordsSize(8); 079 080 assertPaging(paging, 0, 0, 3); 081 082 paging.pageDown(); 083 assertPaging(paging, 3, 3, 6); 084 085 paging.pageDown(); 086 assertPaging(paging, 6, 5, 8); 087 088 paging.pageDown(); 089 assertPaging(paging, 7, 5, 8); 090 091 paging.pageDown(); 092 assertPaging(paging, 7, 5, 8); 093 094 paging.pageUp(); 095 assertPaging(paging, 4, 4, 7); 096 097 paging.pageUp(); 098 assertPaging(paging, 1, 1, 4); 099 100 paging.pageUp(); 101 assertPaging(paging, 0, 0, 3); 102 103 paging.pageUp(); 104 assertPaging(paging, 0, 0, 3); 105 } 106 107 @Test 108 public void testInit() { 109 Paging paging = new Paging(); 110 paging.updatePageSize(3); 111 paging.updateRecordsSize(5); 112 113 assertPaging(paging, 0, 0, 3); 114 115 paging.pageDown(); 116 paging.pageDown(); 117 paging.pageDown(); 118 paging.pageDown(); 119 paging.init(); 120 121 assertPaging(paging, 0, 0, 3); 122 } 123 124 @Test 125 public void testWhenPageSizeGraterThanRecordsSize() { 126 Paging paging = new Paging(); 127 paging.updatePageSize(5); 128 paging.updateRecordsSize(3); 129 130 assertPaging(paging, 0, 0, 3); 131 132 paging.arrowDown(); 133 assertPaging(paging, 1, 0, 3); 134 135 paging.arrowDown(); 136 assertPaging(paging, 2, 0, 3); 137 138 paging.arrowDown(); 139 assertPaging(paging, 2, 0, 3); 140 141 paging.arrowUp(); 142 assertPaging(paging, 1, 0, 3); 143 144 paging.arrowUp(); 145 assertPaging(paging, 0, 0, 3); 146 147 paging.arrowUp(); 148 assertPaging(paging, 0, 0, 3); 149 150 paging.pageDown(); 151 assertPaging(paging, 2, 0, 3); 152 153 paging.pageDown(); 154 assertPaging(paging, 2, 0, 3); 155 156 paging.pageUp(); 157 assertPaging(paging, 0, 0, 3); 158 159 paging.pageUp(); 160 assertPaging(paging, 0, 0, 3); 161 } 162 163 @Test 164 public void testWhenPageSizeIsZero() { 165 Paging paging = new Paging(); 166 paging.updatePageSize(0); 167 paging.updateRecordsSize(5); 168 169 assertPaging(paging, 0, 0, 0); 170 171 paging.arrowDown(); 172 assertPaging(paging, 1, 0, 0); 173 174 paging.arrowUp(); 175 assertPaging(paging, 0, 0, 0); 176 177 paging.pageDown(); 178 assertPaging(paging, 0, 0, 0); 179 180 paging.pageUp(); 181 assertPaging(paging, 0, 0, 0); 182 } 183 184 @Test 185 public void testWhenRecordsSizeIsZero() { 186 Paging paging = new Paging(); 187 paging.updatePageSize(3); 188 paging.updateRecordsSize(0); 189 190 assertPaging(paging, 0, 0, 0); 191 192 paging.arrowDown(); 193 assertPaging(paging, 0, 0, 0); 194 195 paging.arrowUp(); 196 assertPaging(paging, 0, 0, 0); 197 198 paging.pageDown(); 199 assertPaging(paging, 0, 0, 0); 200 201 paging.pageUp(); 202 assertPaging(paging, 0, 0, 0); 203 } 204 205 @Test 206 public void testWhenChangingPageSizeDynamically() { 207 Paging paging = new Paging(); 208 paging.updatePageSize(3); 209 paging.updateRecordsSize(5); 210 211 assertPaging(paging, 0, 0, 3); 212 213 paging.arrowDown(); 214 assertPaging(paging, 1, 0, 3); 215 216 paging.updatePageSize(2); 217 assertPaging(paging, 1, 0, 2); 218 219 paging.arrowDown(); 220 assertPaging(paging, 2, 1, 3); 221 222 paging.arrowDown(); 223 assertPaging(paging, 3, 2, 4); 224 225 paging.updatePageSize(4); 226 assertPaging(paging, 3, 1, 5); 227 228 paging.updatePageSize(5); 229 assertPaging(paging, 3, 0, 5); 230 231 paging.updatePageSize(0); 232 assertPaging(paging, 3, 0, 0); 233 234 paging.arrowDown(); 235 assertPaging(paging, 4, 0, 0); 236 237 paging.arrowUp(); 238 assertPaging(paging, 3, 0, 0); 239 240 paging.pageDown(); 241 assertPaging(paging, 3, 0, 0); 242 243 paging.pageUp(); 244 assertPaging(paging, 3, 0, 0); 245 246 paging.updatePageSize(1); 247 assertPaging(paging, 3, 3, 4); 248 } 249 250 @Test 251 public void testWhenChangingRecordsSizeDynamically() { 252 Paging paging = new Paging(); 253 paging.updatePageSize(3); 254 paging.updateRecordsSize(5); 255 256 assertPaging(paging, 0, 0, 3); 257 258 paging.updateRecordsSize(2); 259 assertPaging(paging, 0, 0, 2); 260 assertThat(paging.getCurrentPosition(), is(0)); 261 assertThat(paging.getPageStartPosition(), is(0)); 262 assertThat(paging.getPageEndPosition(), is(2)); 263 264 paging.arrowDown(); 265 assertPaging(paging, 1, 0, 2); 266 267 paging.updateRecordsSize(3); 268 assertPaging(paging, 1, 0, 3); 269 270 paging.arrowDown(); 271 assertPaging(paging, 2, 0, 3); 272 273 paging.updateRecordsSize(1); 274 assertPaging(paging, 0, 0, 1); 275 276 paging.updateRecordsSize(0); 277 assertPaging(paging, 0, 0, 0); 278 279 paging.arrowDown(); 280 assertPaging(paging, 0, 0, 0); 281 282 paging.arrowUp(); 283 assertPaging(paging, 0, 0, 0); 284 285 paging.pageDown(); 286 assertPaging(paging, 0, 0, 0); 287 288 paging.pageUp(); 289 assertPaging(paging, 0, 0, 0); 290 } 291 292 private void assertPaging(Paging paging, int currentPosition, int pageStartPosition, 293 int pageEndPosition) { 294 assertThat(paging.getCurrentPosition(), is(currentPosition)); 295 assertThat(paging.getPageStartPosition(), is(pageStartPosition)); 296 assertThat(paging.getPageEndPosition(), is(pageEndPosition)); 297 } 298}