1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.component;
21
22 import org.apache.myfaces.tobago.internal.config.AbstractTobagoTestBase;
23 import org.junit.jupiter.api.Assertions;
24 import org.junit.jupiter.api.BeforeEach;
25 import org.junit.jupiter.api.Test;
26
27 import javax.faces.model.ListDataModel;
28 import java.util.ArrayList;
29 import java.util.Collections;
30 import java.util.List;
31
32 public class UISheetUnitTest extends AbstractTobagoTestBase {
33
34 private static final String[] DATA = {"one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
35 private List<String> nineRows;
36 private UISheet data;
37 private UISheet unknown;
38
39 @Override
40 @BeforeEach
41 public void setUp() throws Exception {
42 super.setUp();
43 nineRows = new ArrayList<>();
44 Collections.addAll(nineRows, DATA);
45
46 data = new UISheet();
47 data.setValue(new ListDataModel(nineRows));
48
49 unknown = new UISheet();
50 unknown.setValue(new DataModelWithUnknownRows(nineRows));
51 }
52
53 @Test
54 public void test5RowsPerPage() {
55 data.setRows(5);
56
57
58
59 Assertions.assertEquals(2, data.getPages(), "number of pages");
60 }
61
62 @Test
63 public void test9RowsPerPage() {
64 data.setRows(9);
65
66 Assertions.assertEquals(1, data.getPages(), "number of pages");
67 }
68
69 @Test
70 public void test2RowsPerPage() {
71 data.setRows(2);
72
73
74
75
76
77 Assertions.assertEquals(5, data.getPages(), "number of pages");
78 }
79
80 @Test
81 public void test3RowsPerPage() {
82 data.setRows(3);
83
84
85
86 Assertions.assertEquals(3, data.getPages(), "number of pages");
87 }
88
89 @Test
90 public void test1RowPerPage() {
91 data.setRows(1);
92
93
94
95
96
97
98
99
100
101 Assertions.assertEquals(9, data.getPages(), "number of pages");
102 }
103
104 @Test
105 public void testAllRowsPerPage() {
106 data.setRows(0);
107
108 Assertions.assertEquals(1, data.getPages(), "number of pages");
109 }
110
111 @Test
112 public void testCurrentPageRows5() {
113 data.setRows(5);
114
115
116
117 Assertions.assertEquals(0, data.getCurrentPage(), "current page");
118 Assertions.assertEquals(true, data.isAtBeginning(), "is at beginning");
119
120 data.setFirst(5);
121
122
123
124 Assertions.assertEquals(1, data.getCurrentPage(), "current page");
125 Assertions.assertEquals(false, data.isAtBeginning(), "is at beginning");
126
127 data.setFirst(0);
128
129
130 Assertions.assertEquals(0, data.getCurrentPage(), "current page");
131 Assertions.assertEquals(true, data.isAtBeginning(), "is at beginning");
132
133 data.setFirst(4);
134
135
136 Assertions.assertEquals(0, data.getCurrentPage(), "current page");
137 Assertions.assertEquals(false, data.isAtBeginning(), "is at beginning");
138
139 data.setFirst(100);
140
141 Assertions.assertEquals(1, data.getCurrentPage(), "current page");
142 Assertions.assertEquals(false, data.isAtBeginning(), "is at beginning");
143 }
144
145 @Test
146 public void testCurrentPageRows20() {
147 data.setRows(20);
148
149
150 Assertions.assertEquals(0, data.getCurrentPage(), "current page");
151 Assertions.assertEquals(true, data.isAtBeginning(), "is at beginning");
152
153 data.setFirst(8);
154
155
156 Assertions.assertEquals(0, data.getCurrentPage(), "current page");
157 Assertions.assertEquals(false, data.isAtBeginning(), "is at beginning");
158
159 data.setFirst(0);
160
161 Assertions.assertEquals(0, data.getCurrentPage(), "current page");
162 Assertions.assertEquals(true, data.isAtBeginning(), "is at beginning");
163
164 data.setFirst(100);
165
166 Assertions.assertEquals(0, data.getCurrentPage(), "current page");
167 Assertions.assertEquals(false, data.isAtBeginning(), "is at beginning");
168 }
169
170 @Test
171 public void testRowData() {
172 data.setRowIndex(0);
173 Assertions.assertEquals("one", data.getRowData());
174 data.setRowIndex(8);
175 Assertions.assertEquals("nine", data.getRowData());
176 data.setRowIndex(9);
177 try {
178 data.getRowData();
179 Assertions.fail();
180 } catch (final IllegalArgumentException e) {
181
182 }
183 }
184
185 @Test
186 public void testHasRowCount() {
187 Assertions.assertEquals(true, data.hasRowCount(), "has row count");
188 Assertions.assertEquals(false, unknown.hasRowCount(), "has row count");
189 }
190
191 @Test
192 public void testRowsUnlimited() {
193 data.setRows(5);
194 unknown.setRows(5);
195
196 Assertions.assertEquals(false, data.isRowsUnlimited(), "unlimited rows");
197 Assertions.assertEquals(false, unknown.isRowsUnlimited(), "unlimited rows");
198
199 data.setRows(0);
200 unknown.setRows(0);
201
202 Assertions.assertEquals(true, data.isRowsUnlimited(), "unlimited rows");
203 Assertions.assertEquals(true, unknown.isRowsUnlimited(), "unlimited rows");
204 }
205
206 @Test
207 public void testNeedMoreThanOnePage() {
208
209
210
211 data.setRows(0);
212
213 Assertions.assertEquals(false, data.needMoreThanOnePage(), "need more than one page");
214
215 data.setRows(5);
216
217
218 Assertions.assertEquals(true, data.needMoreThanOnePage(), "need more than one page");
219
220 data.setRows(20);
221
222 Assertions.assertEquals(false, data.needMoreThanOnePage(), "need more than one page");
223
224
225
226 unknown.setRows(0);
227
228 Assertions.assertEquals(false, unknown.needMoreThanOnePage(), "need more than one page");
229
230 unknown.setRows(5);
231
232
233 Assertions.assertEquals(true, unknown.needMoreThanOnePage(), "need more than one page");
234
235 unknown.setRows(20);
236
237 Assertions.assertEquals(true, unknown.needMoreThanOnePage(), "need more than one page");
238 }
239
240 @Test
241 public void testFirstRowIndexOfLastPage() {
242
243
244
245 data.setRows(0);
246
247 Assertions.assertEquals(0, data.getFirstRowIndexOfLastPage(), "first row index of last page");
248
249 data.setRows(5);
250
251
252 Assertions.assertEquals(5, data.getFirstRowIndexOfLastPage(), "first row index of last page");
253
254 data.setRows(20);
255
256 Assertions.assertEquals(0, data.getFirstRowIndexOfLastPage(), "first row index of last page");
257
258
259
260 unknown.setRows(0);
261
262 Assertions.assertEquals(0, unknown.getFirstRowIndexOfLastPage(), "first row index of last page");
263
264 unknown.setRows(5);
265
266
267 try {
268 unknown.getFirstRowIndexOfLastPage();
269 Assertions.fail("first row index of last page");
270 } catch (final IllegalArgumentException e) {
271
272 }
273
274 unknown.setRows(20);
275
276 try {
277 unknown.getFirstRowIndexOfLastPage();
278 Assertions.fail("first row index of last page");
279 } catch (final IllegalArgumentException e) {
280
281 }
282 }
283
284 @Test
285 public void testLastRowIndexOfCurrentPage() {
286
287
288
289 data.setRows(0);
290
291 Assertions.assertEquals(9, data.getLastRowIndexOfCurrentPage(), "last row index of current page");
292
293 data.setRows(5);
294
295
296 Assertions.assertEquals(5, data.getLastRowIndexOfCurrentPage(), "last row index of current page");
297
298 data.setRows(20);
299
300 Assertions.assertEquals(9, data.getLastRowIndexOfCurrentPage(), "last row index of current page");
301
302
303
304 unknown.setRows(0);
305
306 try {
307 unknown.getLastRowIndexOfCurrentPage();
308 Assertions.fail("last row index of current page");
309 } catch (final IllegalArgumentException e) {
310
311 }
312
313 unknown.setRows(5);
314
315
316 try {
317 unknown.getLastRowIndexOfCurrentPage();
318 Assertions.fail("last row index of current page");
319 } catch (final IllegalArgumentException e) {
320
321 }
322
323 unknown.setRows(20);
324
325 try {
326 unknown.getLastRowIndexOfCurrentPage();
327 Assertions.fail("last row index of current page");
328 } catch (final IllegalArgumentException e) {
329
330 }
331 }
332
333 @Test
334 public void testGetCurrentPageOnUnknown() {
335
336
337
338 unknown.setRows(0);
339
340 Assertions.assertEquals(0, unknown.getCurrentPage(), "current page");
341
342 unknown.setRows(5);
343
344
345 Assertions.assertEquals(0, unknown.getCurrentPage(), "current page");
346
347 unknown.setFirst(5);
348
349
350 Assertions.assertEquals(1, unknown.getCurrentPage(), "current page");
351 }
352
353 @Test
354 public void testGetPagesOnUnknown() {
355
356
357
358 unknown.setRows(0);
359
360 Assertions.assertEquals(1, unknown.getPages(), "pages");
361
362 unknown.setRows(5);
363
364
365 try {
366 unknown.getPages();
367 Assertions.fail("pages");
368 } catch (final IllegalArgumentException e) {
369
370 }
371 }
372
373 @Test
374 public void testDynamicRemoval() {
375 nineRows.remove(0);
376 nineRows.remove(0);
377 nineRows.remove(0);
378 data.setRows(5);
379 Assertions.assertEquals(2, data.getPages());
380 nineRows.remove(0);
381 nineRows.remove(0);
382 nineRows.remove(0);
383 Assertions.assertEquals(1, data.getPages());
384 }
385
386 @Test
387 public void testStripRowIndex() {
388 Assertions.assertEquals("comp1:comp2", new UISheet().stripRowIndex("123:comp1:comp2"));
389 Assertions.assertEquals("comp1:comp2", new UISheet().stripRowIndex("comp1:comp2"));
390 }
391
392 private static class DataModelWithUnknownRows extends ListDataModel {
393
394 DataModelWithUnknownRows(final List list) {
395 super(list);
396 }
397
398 @Override
399 public int getRowCount() {
400 return -1;
401 }
402 }
403
404 }