Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.impl / src / test / java / org / gvsig / fmap / dal / feature / paging / impl / OneSubsetOneSetPagingCalculatorTest.java @ 40767

History | View | Annotate | Download (10.7 KB)

1 40559 jjdelcerro
/**
2
 * gvSIG. Desktop Geographic Information System.
3 40435 jjdelcerro
 *
4 40559 jjdelcerro
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6 40435 jjdelcerro
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8 40559 jjdelcerro
 * as published by the Free Software Foundation; either version 3
9 40435 jjdelcerro
 * of the License, or (at your option) any later version.
10 40559 jjdelcerro
 *
11 40435 jjdelcerro
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15 40559 jjdelcerro
 *
16 40435 jjdelcerro
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18 40559 jjdelcerro
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 40435 jjdelcerro
 * MA  02110-1301, USA.
20 40559 jjdelcerro
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23 40435 jjdelcerro
 */
24
package org.gvsig.fmap.dal.feature.paging.impl;
25
26
import junit.framework.TestCase;
27
28
import org.gvsig.tools.paging.PagingCalculator.Sizeable;
29
30
/**
31
 * Unit tests for the {@link OneSubsetOneSetPagingCalculator} class.
32
 *
33
 * @author gvSIG team
34
 */
35
public class OneSubsetOneSetPagingCalculatorTest extends
36
 TestCase {
37
38
        private static final int MAX_PAGE_SIZE = 4;
39
40
        private TestSizeable sizeable1 = new TestSizeable(6);
41
        private TestSizeable sizeable2 = new TestSizeable(17);
42
43
        private OneSubsetOneSetPagingCalculator calculator;
44
45
        protected void setUp() throws Exception {
46
                super.setUp();
47
                calculator =
48
            new OneSubsetOneSetPagingCalculator(sizeable1, sizeable2,
49
                MAX_PAGE_SIZE);
50
        }
51
52
        /**
53
         * Test method for
54
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetSize()}
55
         * .
56
         */
57
        public void testGetFirstSetSize() {
58
                assertEquals(sizeable1.getSize(), calculator.getFirstSetSize());
59
        }
60
61
        /**
62
         * Test method for
63
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetSize()}
64
         * .
65
         */
66
        public void testGetSecondSetSize() {
67
                assertEquals(sizeable2.getSize() - sizeable1.getSize(), calculator.getSecondSetSize());
68
        }
69
70
        /**
71
         * Test method for
72
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetInitialIndex()}
73
         * .
74
         */
75
        public void testGetFirstSetInitialIndex() {
76
                calculator.setCurrentPage(0);
77
                assertEquals(0, calculator.getFirstSetInitialIndex());
78
79
                calculator.setCurrentPage(1);
80
                assertEquals(0 + MAX_PAGE_SIZE, calculator.getFirstSetInitialIndex());
81
82
                calculator.setCurrentPage(2);
83
                assertEquals(-1, calculator.getFirstSetInitialIndex());
84
85
                calculator.setCurrentPage(3);
86
                assertEquals(-1, calculator.getFirstSetInitialIndex());
87
88
                calculator.setCurrentPage(calculator.getNumPages() - 1);
89
                assertEquals(-1, calculator.getFirstSetInitialIndex());
90
91
                // Change values so all data fits into a single page
92
                sizeable1.setSize(1l);
93
                sizeable2.setSize(15l);
94
                calculator.setMaxPageSize(20);
95
96
                calculator.setCurrentPage(0);
97
                assertEquals(0, calculator.getFirstSetInitialIndex());
98
        }
99
100
        /**
101
         * Test method for
102
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetInitialIndex()}
103
         * .
104
         */
105
        public void testGetSecondSetInitialIndex() {
106
                calculator.setCurrentPage(0);
107
                assertEquals(-1, calculator.getSecondSetInitialIndex());
108
109
                calculator.setCurrentPage(1);
110
                assertEquals(0, calculator.getSecondSetInitialIndex());
111
112
                calculator.setCurrentPage(2);
113
                assertEquals(2, calculator.getSecondSetInitialIndex());
114
115
                calculator.setCurrentPage(3);
116
                assertEquals(2 + MAX_PAGE_SIZE, calculator.getSecondSetInitialIndex());
117
118
                calculator.setCurrentPage(calculator.getNumPages() - 1);
119
                assertEquals(2 + ((calculator.getNumPages() - 3) * MAX_PAGE_SIZE),
120
                                calculator.getSecondSetInitialIndex());
121
122
                // Change values so all data fits into a single page
123
                sizeable1.setSize(1l);
124
                sizeable2.setSize(15l);
125
                calculator.setMaxPageSize(20);
126
127
                calculator.setCurrentPage(0);
128
                assertEquals(0, calculator.getSecondSetInitialIndex());
129
130
                // Set the two sets equal, so all elements in the first set are
131
                // contained in the second one
132
                sizeable1.setSize(15l);
133
                sizeable2.setSize(15l);
134
                calculator.setMaxPageSize(4);
135
136
                calculator.setCurrentPage(0);
137
                assertEquals(-1, calculator.getSecondSetInitialIndex());
138
139
                calculator.setCurrentPage(1);
140
                assertEquals(-1, calculator.getSecondSetInitialIndex());
141
142
                calculator.setCurrentPage(2);
143
                assertEquals(-1, calculator.getSecondSetInitialIndex());
144
145
                calculator.setCurrentPage(3);
146
                assertEquals(-1, calculator.getSecondSetInitialIndex());
147
        }
148
149
        /**
150
         * Test method for
151
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetHowMany()}
152
         * .
153
         */
154
        public void testGetFirstSetHowMany() {
155
                calculator.setCurrentPage(0);
156
                assertEquals(MAX_PAGE_SIZE, calculator.getFirstSetHowMany());
157
158
                calculator.setCurrentPage(1);
159
                assertEquals(2, calculator.getFirstSetHowMany());
160
161
                calculator.setCurrentPage(2);
162
                assertEquals(0, calculator.getFirstSetHowMany());
163
164
                calculator.setCurrentPage(3);
165
                assertEquals(0, calculator.getFirstSetHowMany());
166
167
                calculator.setCurrentPage(calculator.getNumPages() - 1);
168
                assertEquals(0, calculator.getFirstSetHowMany());
169
170
                // Change values so all data fits into a single page
171
                sizeable1.setSize(1l);
172
                sizeable2.setSize(15l);
173
                calculator.setMaxPageSize(20);
174
175
                calculator.setCurrentPage(0);
176
                assertEquals(1, calculator.getFirstSetHowMany());
177
178
                // Change values so all data is available into the first set
179
                sizeable1.setSize(25l);
180
                sizeable2.setSize(25l);
181
                calculator.setMaxPageSize(20);
182
183
                calculator.setCurrentPage(0);
184
                assertEquals(20, calculator.getFirstSetHowMany());
185
186
                calculator.setCurrentPage(1);
187
                assertEquals(5, calculator.getFirstSetHowMany());
188
        }
189
190
        /**
191
         * Test method for
192
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetHowMany()}
193
         * .
194
         */
195
        public void testGetSecondSetHowMany() {
196
                calculator.setCurrentPage(0);
197
                assertEquals(0l, calculator.getSecondSetHowMany());
198
199
                calculator.setCurrentPage(1);
200
                assertEquals(2l, calculator.getSecondSetHowMany());
201
202
                calculator.setCurrentPage(2);
203
                assertEquals(MAX_PAGE_SIZE, calculator.getSecondSetHowMany());
204
205
                calculator.setCurrentPage(3);
206
                assertEquals(MAX_PAGE_SIZE, calculator.getSecondSetHowMany());
207
208
                calculator.setCurrentPage(calculator.getNumPages() - 1);
209
                assertEquals(1l, calculator.getSecondSetHowMany());
210
211
                // Change values so all data fits into a single page
212
                sizeable1.setSize(1l);
213
                sizeable2.setSize(15l);
214
                calculator.setMaxPageSize(20);
215
216
                calculator.setCurrentPage(0);
217
                assertEquals(14l, calculator.getSecondSetHowMany());
218
219
                // Set the two sets equal, so all elements in the first set are
220
                // contained in the second one
221
                sizeable1.setSize(15l);
222
                sizeable2.setSize(15l);
223
                calculator.setMaxPageSize(4);
224
225
                calculator.setCurrentPage(0);
226
                assertEquals(0l, calculator.getSecondSetHowMany());
227
228
                calculator.setCurrentPage(1);
229
                assertEquals(0l, calculator.getSecondSetHowMany());
230
231
                calculator.setCurrentPage(2);
232
                assertEquals(0l, calculator.getSecondSetHowMany());
233
234
                calculator.setCurrentPage(3);
235
                assertEquals(0l, calculator.getSecondSetHowMany());
236
        }
237
238
        /**
239
         * Test method for
240
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAllValuesInFirstSet()}
241
         * .
242
         */
243
        public void testHasCurrentPageAllValuesInFirstSet() {
244
                calculator.setCurrentPage(0);
245
                assertTrue(calculator.hasCurrentPageAllValuesInFirstSet());
246
247
                calculator.setCurrentPage(1);
248
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
249
250
                calculator.setCurrentPage(2);
251
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
252
253
                calculator.setCurrentPage(3);
254
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
255
256
                calculator.setCurrentPage(calculator.getNumPages() - 1);
257
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
258
259
                // Change values so all data fits into a single page
260
                sizeable1.setSize(1l);
261
                sizeable2.setSize(15l);
262
                calculator.setMaxPageSize(20);
263
264
                calculator.setCurrentPage(0);
265
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
266
        }
267
268
        /**
269
         * Test method for
270
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAnyValuesInFirstSet()}
271
         * .
272
         */
273
        public void testHasCurrentPageAnyValuesInFirstSet() {
274
                calculator.setCurrentPage(0);
275
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
276
277
                calculator.setCurrentPage(1);
278
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
279
280
                calculator.setCurrentPage(2);
281
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
282
283
                calculator.setCurrentPage(3);
284
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
285
286
                calculator.setCurrentPage(calculator.getNumPages() - 1);
287
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
288
289
                // Change values so all data fits into a single page
290
                sizeable1.setSize(1l);
291
                sizeable2.setSize(15l);
292
                calculator.setMaxPageSize(20);
293
294
                calculator.setCurrentPage(0);
295
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
296
        }
297
298
        /**
299
         * Test method for
300
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAnyValuesInSecondSet()}
301
         * .
302
         */
303
        public void testHasCurrentPageAnyValuesInSecondSet() {
304
                calculator.setCurrentPage(0);
305
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
306
307
                calculator.setCurrentPage(1);
308
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
309
310
                calculator.setCurrentPage(2);
311
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
312
313
                calculator.setCurrentPage(3);
314
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
315
316
                calculator.setCurrentPage(calculator.getNumPages() - 1);
317
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
318
319
                // Change values so all data fits into a single page
320
                sizeable1.setSize(1l);
321
                sizeable2.setSize(15l);
322
                calculator.setMaxPageSize(20);
323
324
                calculator.setCurrentPage(0);
325
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
326
327
                // Set the two sets equal, so all elements in the first set are
328
                // contained in the second one
329
                sizeable1.setSize(15l);
330
                sizeable2.setSize(15l);
331
                calculator.setMaxPageSize(4);
332
333
                calculator.setCurrentPage(0);
334
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
335
336
                calculator.setCurrentPage(1);
337
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
338
339
                calculator.setCurrentPage(2);
340
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
341
342
                calculator.setCurrentPage(3);
343
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
344
        }
345
346
    private class TestSizeable implements Sizeable {
347
348
                private long size;
349
350
                public TestSizeable(long size) {
351
                        this.size = size;
352
                }
353
354
                public long getSize() {
355
                        return size;
356
                }
357
358
                public void setSize(long size) {
359
                        this.size = size;
360
                }
361
        }
362 40767 jjdelcerro
}