Statistics
| Revision:

root / branches / v2_0_0_prep / libraries / libFMap_dal / src-test / org / gvsig / fmap / dal / feature / paging / impl / OneSubsetOneSetPagingCalculatorTest.java @ 33378

History | View | Annotate | Download (10.6 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 * 
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 * 
11
 * 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
 * 
16
 * 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
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
 * MA  02110-1301, USA.
20
 * 
21
 */
22

    
23
/*
24
 * AUTHORS (In addition to CIT):
25
 * 2010 {}  {{Task}}
26
 */
27
package org.gvsig.fmap.dal.feature.paging.impl;
28

    
29

    
30
/**
31
 * Unit tests for the {@link OneSubsetOneSetPagingCalculator} class.
32
 * 
33
 * @author 2010- C?sar Ordi?ana - gvSIG team
34
 */
35
public class OneSubsetOneSetPagingCalculatorTest extends AbstractPagingCalculatorTest {
36

    
37
        private static final int MAX_PAGE_SIZE = 4;
38

    
39
        private TestSizeable sizeable1 = new TestSizeable(6);
40
        private TestSizeable sizeable2 = new TestSizeable(17);
41

    
42
        private OneSubsetOneSetPagingCalculator calculator;
43

    
44
        protected void setUp() throws Exception {
45
                super.setUp();
46
                calculator =
47
                                new OneSubsetOneSetPagingCalculator(MAX_PAGE_SIZE, sizeable1, sizeable2);
48
        }
49

    
50
        /**
51
         * Test method for
52
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetSize()}
53
         * .
54
         */
55
        public void testGetFirstSetSize() {
56
                assertEquals(sizeable1.getSize(), calculator.getFirstSetSize());
57
        }
58

    
59
        /**
60
         * Test method for
61
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetSize()}
62
         * .
63
         */
64
        public void testGetSecondSetSize() {
65
                assertEquals(sizeable2.getSize() - sizeable1.getSize(), calculator.getSecondSetSize());
66
        }
67

    
68
        /**
69
         * Test method for
70
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetInitialIndex()}
71
         * .
72
         */
73
        public void testGetFirstSetInitialIndex() {
74
                calculator.setCurrentPage(0);
75
                assertEquals(0, calculator.getFirstSetInitialIndex());
76

    
77
                calculator.setCurrentPage(1);
78
                assertEquals(0 + MAX_PAGE_SIZE, calculator.getFirstSetInitialIndex());
79

    
80
                calculator.setCurrentPage(2);
81
                assertEquals(-1, calculator.getFirstSetInitialIndex());
82

    
83
                calculator.setCurrentPage(3);
84
                assertEquals(-1, calculator.getFirstSetInitialIndex());
85

    
86
                calculator.setCurrentPage(calculator.getNumPages() - 1);
87
                assertEquals(-1, calculator.getFirstSetInitialIndex());
88

    
89
                // Change values so all data fits into a single page
90
                sizeable1.setSize(1l);
91
                sizeable2.setSize(15l);
92
                calculator.setMaxPageSize(20);
93

    
94
                calculator.setCurrentPage(0);
95
                assertEquals(0, calculator.getFirstSetInitialIndex());
96
        }
97

    
98
        /**
99
         * Test method for
100
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetInitialIndex()}
101
         * .
102
         */
103
        public void testGetSecondSetInitialIndex() {
104
                calculator.setCurrentPage(0);
105
                assertEquals(-1, calculator.getSecondSetInitialIndex());
106

    
107
                calculator.setCurrentPage(1);
108
                assertEquals(0, calculator.getSecondSetInitialIndex());
109

    
110
                calculator.setCurrentPage(2);
111
                assertEquals(2, calculator.getSecondSetInitialIndex());
112

    
113
                calculator.setCurrentPage(3);
114
                assertEquals(2 + MAX_PAGE_SIZE, calculator.getSecondSetInitialIndex());
115

    
116
                calculator.setCurrentPage(calculator.getNumPages() - 1);
117
                assertEquals(2 + ((calculator.getNumPages() - 3) * MAX_PAGE_SIZE),
118
                                calculator.getSecondSetInitialIndex());
119

    
120
                // Change values so all data fits into a single page
121
                sizeable1.setSize(1l);
122
                sizeable2.setSize(15l);
123
                calculator.setMaxPageSize(20);
124

    
125
                calculator.setCurrentPage(0);
126
                assertEquals(0, calculator.getSecondSetInitialIndex());
127

    
128
                // Set the two sets equal, so all elements in the first set are
129
                // contained in the second one
130
                sizeable1.setSize(15l);
131
                sizeable2.setSize(15l);
132
                calculator.setMaxPageSize(4);
133

    
134
                calculator.setCurrentPage(0);
135
                assertEquals(-1, calculator.getSecondSetInitialIndex());
136

    
137
                calculator.setCurrentPage(1);
138
                assertEquals(-1, calculator.getSecondSetInitialIndex());
139

    
140
                calculator.setCurrentPage(2);
141
                assertEquals(-1, calculator.getSecondSetInitialIndex());
142

    
143
                calculator.setCurrentPage(3);
144
                assertEquals(-1, calculator.getSecondSetInitialIndex());
145
        }
146

    
147
        /**
148
         * Test method for
149
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetHowMany()}
150
         * .
151
         */
152
        public void testGetFirstSetHowMany() {
153
                calculator.setCurrentPage(0);
154
                assertEquals(MAX_PAGE_SIZE, calculator.getFirstSetHowMany());
155

    
156
                calculator.setCurrentPage(1);
157
                assertEquals(2, calculator.getFirstSetHowMany());
158

    
159
                calculator.setCurrentPage(2);
160
                assertEquals(0, calculator.getFirstSetHowMany());
161

    
162
                calculator.setCurrentPage(3);
163
                assertEquals(0, calculator.getFirstSetHowMany());
164

    
165
                calculator.setCurrentPage(calculator.getNumPages() - 1);
166
                assertEquals(0, calculator.getFirstSetHowMany());
167

    
168
                // Change values so all data fits into a single page
169
                sizeable1.setSize(1l);
170
                sizeable2.setSize(15l);
171
                calculator.setMaxPageSize(20);
172

    
173
                calculator.setCurrentPage(0);
174
                assertEquals(1, calculator.getFirstSetHowMany());
175

    
176
                // Change values so all data is available into the first set
177
                sizeable1.setSize(25l);
178
                sizeable2.setSize(25l);
179
                calculator.setMaxPageSize(20);
180

    
181
                calculator.setCurrentPage(0);
182
                assertEquals(20, calculator.getFirstSetHowMany());
183

    
184
                calculator.setCurrentPage(1);
185
                assertEquals(5, calculator.getFirstSetHowMany());
186
        }
187

    
188
        /**
189
         * Test method for
190
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetHowMany()}
191
         * .
192
         */
193
        public void testGetSecondSetHowMany() {
194
                calculator.setCurrentPage(0);
195
                assertEquals(0l, calculator.getSecondSetHowMany());
196

    
197
                calculator.setCurrentPage(1);
198
                assertEquals(2l, calculator.getSecondSetHowMany());
199

    
200
                calculator.setCurrentPage(2);
201
                assertEquals(MAX_PAGE_SIZE, calculator.getSecondSetHowMany());
202

    
203
                calculator.setCurrentPage(3);
204
                assertEquals(MAX_PAGE_SIZE, calculator.getSecondSetHowMany());
205

    
206
                calculator.setCurrentPage(calculator.getNumPages() - 1);
207
                assertEquals(1l, calculator.getSecondSetHowMany());
208

    
209
                // Change values so all data fits into a single page
210
                sizeable1.setSize(1l);
211
                sizeable2.setSize(15l);
212
                calculator.setMaxPageSize(20);
213

    
214
                calculator.setCurrentPage(0);
215
                assertEquals(14l, calculator.getSecondSetHowMany());
216

    
217
                // Set the two sets equal, so all elements in the first set are
218
                // contained in the second one
219
                sizeable1.setSize(15l);
220
                sizeable2.setSize(15l);
221
                calculator.setMaxPageSize(4);
222

    
223
                calculator.setCurrentPage(0);
224
                assertEquals(0l, calculator.getSecondSetHowMany());
225

    
226
                calculator.setCurrentPage(1);
227
                assertEquals(0l, calculator.getSecondSetHowMany());
228

    
229
                calculator.setCurrentPage(2);
230
                assertEquals(0l, calculator.getSecondSetHowMany());
231

    
232
                calculator.setCurrentPage(3);
233
                assertEquals(0l, calculator.getSecondSetHowMany());
234
        }
235

    
236
        /**
237
         * Test method for
238
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAllValuesInFirstSet()}
239
         * .
240
         */
241
        public void testHasCurrentPageAllValuesInFirstSet() {
242
                calculator.setCurrentPage(0);
243
                assertTrue(calculator.hasCurrentPageAllValuesInFirstSet());
244

    
245
                calculator.setCurrentPage(1);
246
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
247

    
248
                calculator.setCurrentPage(2);
249
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
250

    
251
                calculator.setCurrentPage(3);
252
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
253

    
254
                calculator.setCurrentPage(calculator.getNumPages() - 1);
255
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
256

    
257
                // Change values so all data fits into a single page
258
                sizeable1.setSize(1l);
259
                sizeable2.setSize(15l);
260
                calculator.setMaxPageSize(20);
261

    
262
                calculator.setCurrentPage(0);
263
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
264
        }
265

    
266
        /**
267
         * Test method for
268
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAnyValuesInFirstSet()}
269
         * .
270
         */
271
        public void testHasCurrentPageAnyValuesInFirstSet() {
272
                calculator.setCurrentPage(0);
273
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
274

    
275
                calculator.setCurrentPage(1);
276
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
277

    
278
                calculator.setCurrentPage(2);
279
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
280

    
281
                calculator.setCurrentPage(3);
282
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
283

    
284
                calculator.setCurrentPage(calculator.getNumPages() - 1);
285
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
286

    
287
                // Change values so all data fits into a single page
288
                sizeable1.setSize(1l);
289
                sizeable2.setSize(15l);
290
                calculator.setMaxPageSize(20);
291

    
292
                calculator.setCurrentPage(0);
293
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
294
        }
295

    
296
        /**
297
         * Test method for
298
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAnyValuesInSecondSet()}
299
         * .
300
         */
301
        public void testHasCurrentPageAnyValuesInSecondSet() {
302
                calculator.setCurrentPage(0);
303
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
304

    
305
                calculator.setCurrentPage(1);
306
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
307

    
308
                calculator.setCurrentPage(2);
309
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
310

    
311
                calculator.setCurrentPage(3);
312
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
313

    
314
                calculator.setCurrentPage(calculator.getNumPages() - 1);
315
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
316

    
317
                // Change values so all data fits into a single page
318
                sizeable1.setSize(1l);
319
                sizeable2.setSize(15l);
320
                calculator.setMaxPageSize(20);
321

    
322
                calculator.setCurrentPage(0);
323
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
324

    
325
                // Set the two sets equal, so all elements in the first set are
326
                // contained in the second one
327
                sizeable1.setSize(15l);
328
                sizeable2.setSize(15l);
329
                calculator.setMaxPageSize(4);
330

    
331
                calculator.setCurrentPage(0);
332
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
333

    
334
                calculator.setCurrentPage(1);
335
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
336

    
337
                calculator.setCurrentPage(2);
338
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
339

    
340
                calculator.setCurrentPage(3);
341
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
342
        }
343

    
344
        private class TestSizeable implements PagingCalculator.Sizeable {
345

    
346
                private long size;
347

    
348
                public TestSizeable(long size) {
349
                        this.size = size;
350
                }
351

    
352
                public long getSize() {
353
                        return size;
354
                }
355

    
356
                public void setSize(long size) {
357
                        this.size = size;
358
                }
359
        }
360
}