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.junit.Assert.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 030@Category(SmallTests.class) 031public class TestPaging { 032 033 @ClassRule 034 public static final HBaseClassTestRule CLASS_RULE = 035 HBaseClassTestRule.forClass(TestPaging.class); 036 037 @Test 038 public void testArrowUpAndArrowDown() { 039 Paging paging = new Paging(); 040 paging.updatePageSize(3); 041 paging.updateRecordsSize(5); 042 043 assertPaging(paging, 0, 0, 3); 044 045 paging.arrowDown(); 046 assertPaging(paging, 1, 0, 3); 047 048 paging.arrowDown(); 049 assertPaging(paging, 2, 0, 3); 050 051 paging.arrowDown(); 052 assertPaging(paging, 3, 1, 4); 053 054 paging.arrowDown(); 055 assertPaging(paging, 4, 2, 5); 056 057 paging.arrowDown(); 058 assertPaging(paging, 4, 2, 5); 059 060 paging.arrowUp(); 061 assertPaging(paging, 3, 2, 5); 062 063 paging.arrowUp(); 064 assertPaging(paging, 2, 2, 5); 065 066 paging.arrowUp(); 067 assertPaging(paging, 1, 1, 4); 068 069 paging.arrowUp(); 070 assertPaging(paging, 0, 0, 3); 071 072 paging.arrowUp(); 073 assertPaging(paging, 0, 0, 3); 074 } 075 076 @Test 077 public void testPageUpAndPageDown() { 078 Paging paging = new Paging(); 079 paging.updatePageSize(3); 080 paging.updateRecordsSize(8); 081 082 assertPaging(paging, 0, 0, 3); 083 084 paging.pageDown(); 085 assertPaging(paging, 3, 3, 6); 086 087 paging.pageDown(); 088 assertPaging(paging, 6, 5, 8); 089 090 paging.pageDown(); 091 assertPaging(paging, 7, 5, 8); 092 093 paging.pageDown(); 094 assertPaging(paging, 7, 5, 8); 095 096 paging.pageUp(); 097 assertPaging(paging, 4, 4, 7); 098 099 paging.pageUp(); 100 assertPaging(paging, 1, 1, 4); 101 102 paging.pageUp(); 103 assertPaging(paging, 0, 0, 3); 104 105 paging.pageUp(); 106 assertPaging(paging, 0, 0, 3); 107 } 108 109 @Test 110 public void testInit() { 111 Paging paging = new Paging(); 112 paging.updatePageSize(3); 113 paging.updateRecordsSize(5); 114 115 assertPaging(paging, 0, 0, 3); 116 117 paging.pageDown(); 118 paging.pageDown(); 119 paging.pageDown(); 120 paging.pageDown(); 121 paging.init(); 122 123 assertPaging(paging, 0, 0, 3); 124 } 125 126 @Test 127 public void testWhenPageSizeGraterThanRecordsSize() { 128 Paging paging = new Paging(); 129 paging.updatePageSize(5); 130 paging.updateRecordsSize(3); 131 132 assertPaging(paging, 0, 0, 3); 133 134 paging.arrowDown(); 135 assertPaging(paging, 1, 0, 3); 136 137 paging.arrowDown(); 138 assertPaging(paging, 2, 0, 3); 139 140 paging.arrowDown(); 141 assertPaging(paging, 2, 0, 3); 142 143 paging.arrowUp(); 144 assertPaging(paging, 1, 0, 3); 145 146 paging.arrowUp(); 147 assertPaging(paging, 0, 0, 3); 148 149 paging.arrowUp(); 150 assertPaging(paging, 0, 0, 3); 151 152 paging.pageDown(); 153 assertPaging(paging, 2, 0, 3); 154 155 paging.pageDown(); 156 assertPaging(paging, 2, 0, 3); 157 158 paging.pageUp(); 159 assertPaging(paging, 0, 0, 3); 160 161 paging.pageUp(); 162 assertPaging(paging, 0, 0, 3); 163 } 164 165 @Test 166 public void testWhenPageSizeIsZero() { 167 Paging paging = new Paging(); 168 paging.updatePageSize(0); 169 paging.updateRecordsSize(5); 170 171 assertPaging(paging, 0, 0, 0); 172 173 paging.arrowDown(); 174 assertPaging(paging, 1, 0, 0); 175 176 paging.arrowUp(); 177 assertPaging(paging, 0, 0, 0); 178 179 paging.pageDown(); 180 assertPaging(paging, 0, 0, 0); 181 182 paging.pageUp(); 183 assertPaging(paging, 0, 0, 0); 184 } 185 186 @Test 187 public void testWhenRecordsSizeIsZero() { 188 Paging paging = new Paging(); 189 paging.updatePageSize(3); 190 paging.updateRecordsSize(0); 191 192 assertPaging(paging, 0, 0, 0); 193 194 paging.arrowDown(); 195 assertPaging(paging, 0, 0, 0); 196 197 paging.arrowUp(); 198 assertPaging(paging, 0, 0, 0); 199 200 paging.pageDown(); 201 assertPaging(paging, 0, 0, 0); 202 203 paging.pageUp(); 204 assertPaging(paging, 0, 0, 0); 205 } 206 207 @Test 208 public void testWhenChangingPageSizeDynamically() { 209 Paging paging = new Paging(); 210 paging.updatePageSize(3); 211 paging.updateRecordsSize(5); 212 213 assertPaging(paging, 0, 0, 3); 214 215 paging.arrowDown(); 216 assertPaging(paging, 1, 0, 3); 217 218 paging.updatePageSize(2); 219 assertPaging(paging, 1, 0, 2); 220 221 paging.arrowDown(); 222 assertPaging(paging, 2, 1, 3); 223 224 paging.arrowDown(); 225 assertPaging(paging, 3, 2, 4); 226 227 paging.updatePageSize(4); 228 assertPaging(paging, 3, 1, 5); 229 230 paging.updatePageSize(5); 231 assertPaging(paging, 3, 0, 5); 232 233 paging.updatePageSize(0); 234 assertPaging(paging, 3, 0, 0); 235 236 paging.arrowDown(); 237 assertPaging(paging, 4, 0, 0); 238 239 paging.arrowUp(); 240 assertPaging(paging, 3, 0, 0); 241 242 paging.pageDown(); 243 assertPaging(paging, 3, 0, 0); 244 245 paging.pageUp(); 246 assertPaging(paging, 3, 0, 0); 247 248 paging.updatePageSize(1); 249 assertPaging(paging, 3, 3, 4); 250 } 251 252 @Test 253 public void testWhenChangingRecordsSizeDynamically() { 254 Paging paging = new Paging(); 255 paging.updatePageSize(3); 256 paging.updateRecordsSize(5); 257 258 assertPaging(paging, 0, 0, 3); 259 260 paging.updateRecordsSize(2); 261 assertPaging(paging, 0, 0, 2); 262 assertThat(paging.getCurrentPosition(), is(0)); 263 assertThat(paging.getPageStartPosition(), is(0)); 264 assertThat(paging.getPageEndPosition(), is(2)); 265 266 paging.arrowDown(); 267 assertPaging(paging, 1, 0, 2); 268 269 paging.updateRecordsSize(3); 270 assertPaging(paging, 1, 0, 3); 271 272 paging.arrowDown(); 273 assertPaging(paging, 2, 0, 3); 274 275 paging.updateRecordsSize(1); 276 assertPaging(paging, 0, 0, 1); 277 278 paging.updateRecordsSize(0); 279 assertPaging(paging, 0, 0, 0); 280 281 paging.arrowDown(); 282 assertPaging(paging, 0, 0, 0); 283 284 paging.arrowUp(); 285 assertPaging(paging, 0, 0, 0); 286 287 paging.pageDown(); 288 assertPaging(paging, 0, 0, 0); 289 290 paging.pageUp(); 291 assertPaging(paging, 0, 0, 0); 292 } 293 294 private void assertPaging(Paging paging, int currentPosition, int pageStartPosition, 295 int pageEndPosition) { 296 assertThat(paging.getCurrentPosition(), is(currentPosition)); 297 assertThat(paging.getPageStartPosition(), is(pageStartPosition)); 298 assertThat(paging.getPageEndPosition(), is(pageEndPosition)); 299 } 300}