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.testclassification.SmallTests; 024import org.junit.jupiter.api.Tag; 025import org.junit.jupiter.api.Test; 026 027@Tag(SmallTests.TAG) 028public class TestPaging { 029 030 @Test 031 public void testArrowUpAndArrowDown() { 032 Paging paging = new Paging(); 033 paging.updatePageSize(3); 034 paging.updateRecordsSize(5); 035 036 assertPaging(paging, 0, 0, 3); 037 038 paging.arrowDown(); 039 assertPaging(paging, 1, 0, 3); 040 041 paging.arrowDown(); 042 assertPaging(paging, 2, 0, 3); 043 044 paging.arrowDown(); 045 assertPaging(paging, 3, 1, 4); 046 047 paging.arrowDown(); 048 assertPaging(paging, 4, 2, 5); 049 050 paging.arrowDown(); 051 assertPaging(paging, 4, 2, 5); 052 053 paging.arrowUp(); 054 assertPaging(paging, 3, 2, 5); 055 056 paging.arrowUp(); 057 assertPaging(paging, 2, 2, 5); 058 059 paging.arrowUp(); 060 assertPaging(paging, 1, 1, 4); 061 062 paging.arrowUp(); 063 assertPaging(paging, 0, 0, 3); 064 065 paging.arrowUp(); 066 assertPaging(paging, 0, 0, 3); 067 } 068 069 @Test 070 public void testPageUpAndPageDown() { 071 Paging paging = new Paging(); 072 paging.updatePageSize(3); 073 paging.updateRecordsSize(8); 074 075 assertPaging(paging, 0, 0, 3); 076 077 paging.pageDown(); 078 assertPaging(paging, 3, 3, 6); 079 080 paging.pageDown(); 081 assertPaging(paging, 6, 5, 8); 082 083 paging.pageDown(); 084 assertPaging(paging, 7, 5, 8); 085 086 paging.pageDown(); 087 assertPaging(paging, 7, 5, 8); 088 089 paging.pageUp(); 090 assertPaging(paging, 4, 4, 7); 091 092 paging.pageUp(); 093 assertPaging(paging, 1, 1, 4); 094 095 paging.pageUp(); 096 assertPaging(paging, 0, 0, 3); 097 098 paging.pageUp(); 099 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}