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 @ 40435

History | View | Annotate | Download (10.7 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
import junit.framework.TestCase;
30

    
31
import org.gvsig.tools.paging.PagingCalculator.Sizeable;
32

    
33
/**
34
 * Unit tests for the {@link OneSubsetOneSetPagingCalculator} class.
35
 * 
36
 * @author gvSIG team
37
 */
38
public class OneSubsetOneSetPagingCalculatorTest extends
39
 TestCase {
40

    
41
        private static final int MAX_PAGE_SIZE = 4;
42

    
43
        private TestSizeable sizeable1 = new TestSizeable(6);
44
        private TestSizeable sizeable2 = new TestSizeable(17);
45

    
46
        private OneSubsetOneSetPagingCalculator calculator;
47

    
48
        protected void setUp() throws Exception {
49
                super.setUp();
50
                calculator =
51
            new OneSubsetOneSetPagingCalculator(sizeable1, sizeable2,
52
                MAX_PAGE_SIZE);
53
        }
54

    
55
        /**
56
         * Test method for
57
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetSize()}
58
         * .
59
         */
60
        public void testGetFirstSetSize() {
61
                assertEquals(sizeable1.getSize(), calculator.getFirstSetSize());
62
        }
63

    
64
        /**
65
         * Test method for
66
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetSize()}
67
         * .
68
         */
69
        public void testGetSecondSetSize() {
70
                assertEquals(sizeable2.getSize() - sizeable1.getSize(), calculator.getSecondSetSize());
71
        }
72

    
73
        /**
74
         * Test method for
75
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetInitialIndex()}
76
         * .
77
         */
78
        public void testGetFirstSetInitialIndex() {
79
                calculator.setCurrentPage(0);
80
                assertEquals(0, calculator.getFirstSetInitialIndex());
81

    
82
                calculator.setCurrentPage(1);
83
                assertEquals(0 + MAX_PAGE_SIZE, calculator.getFirstSetInitialIndex());
84

    
85
                calculator.setCurrentPage(2);
86
                assertEquals(-1, calculator.getFirstSetInitialIndex());
87

    
88
                calculator.setCurrentPage(3);
89
                assertEquals(-1, calculator.getFirstSetInitialIndex());
90

    
91
                calculator.setCurrentPage(calculator.getNumPages() - 1);
92
                assertEquals(-1, calculator.getFirstSetInitialIndex());
93

    
94
                // Change values so all data fits into a single page
95
                sizeable1.setSize(1l);
96
                sizeable2.setSize(15l);
97
                calculator.setMaxPageSize(20);
98

    
99
                calculator.setCurrentPage(0);
100
                assertEquals(0, calculator.getFirstSetInitialIndex());
101
        }
102

    
103
        /**
104
         * Test method for
105
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetInitialIndex()}
106
         * .
107
         */
108
        public void testGetSecondSetInitialIndex() {
109
                calculator.setCurrentPage(0);
110
                assertEquals(-1, calculator.getSecondSetInitialIndex());
111

    
112
                calculator.setCurrentPage(1);
113
                assertEquals(0, calculator.getSecondSetInitialIndex());
114

    
115
                calculator.setCurrentPage(2);
116
                assertEquals(2, calculator.getSecondSetInitialIndex());
117

    
118
                calculator.setCurrentPage(3);
119
                assertEquals(2 + MAX_PAGE_SIZE, calculator.getSecondSetInitialIndex());
120

    
121
                calculator.setCurrentPage(calculator.getNumPages() - 1);
122
                assertEquals(2 + ((calculator.getNumPages() - 3) * MAX_PAGE_SIZE),
123
                                calculator.getSecondSetInitialIndex());
124

    
125
                // Change values so all data fits into a single page
126
                sizeable1.setSize(1l);
127
                sizeable2.setSize(15l);
128
                calculator.setMaxPageSize(20);
129

    
130
                calculator.setCurrentPage(0);
131
                assertEquals(0, calculator.getSecondSetInitialIndex());
132

    
133
                // Set the two sets equal, so all elements in the first set are
134
                // contained in the second one
135
                sizeable1.setSize(15l);
136
                sizeable2.setSize(15l);
137
                calculator.setMaxPageSize(4);
138

    
139
                calculator.setCurrentPage(0);
140
                assertEquals(-1, calculator.getSecondSetInitialIndex());
141

    
142
                calculator.setCurrentPage(1);
143
                assertEquals(-1, calculator.getSecondSetInitialIndex());
144

    
145
                calculator.setCurrentPage(2);
146
                assertEquals(-1, calculator.getSecondSetInitialIndex());
147

    
148
                calculator.setCurrentPage(3);
149
                assertEquals(-1, calculator.getSecondSetInitialIndex());
150
        }
151

    
152
        /**
153
         * Test method for
154
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getFirstSetHowMany()}
155
         * .
156
         */
157
        public void testGetFirstSetHowMany() {
158
                calculator.setCurrentPage(0);
159
                assertEquals(MAX_PAGE_SIZE, calculator.getFirstSetHowMany());
160

    
161
                calculator.setCurrentPage(1);
162
                assertEquals(2, calculator.getFirstSetHowMany());
163

    
164
                calculator.setCurrentPage(2);
165
                assertEquals(0, calculator.getFirstSetHowMany());
166

    
167
                calculator.setCurrentPage(3);
168
                assertEquals(0, calculator.getFirstSetHowMany());
169

    
170
                calculator.setCurrentPage(calculator.getNumPages() - 1);
171
                assertEquals(0, calculator.getFirstSetHowMany());
172

    
173
                // Change values so all data fits into a single page
174
                sizeable1.setSize(1l);
175
                sizeable2.setSize(15l);
176
                calculator.setMaxPageSize(20);
177

    
178
                calculator.setCurrentPage(0);
179
                assertEquals(1, calculator.getFirstSetHowMany());
180

    
181
                // Change values so all data is available into the first set
182
                sizeable1.setSize(25l);
183
                sizeable2.setSize(25l);
184
                calculator.setMaxPageSize(20);
185

    
186
                calculator.setCurrentPage(0);
187
                assertEquals(20, calculator.getFirstSetHowMany());
188

    
189
                calculator.setCurrentPage(1);
190
                assertEquals(5, calculator.getFirstSetHowMany());
191
        }
192

    
193
        /**
194
         * Test method for
195
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#getSecondSetHowMany()}
196
         * .
197
         */
198
        public void testGetSecondSetHowMany() {
199
                calculator.setCurrentPage(0);
200
                assertEquals(0l, calculator.getSecondSetHowMany());
201

    
202
                calculator.setCurrentPage(1);
203
                assertEquals(2l, calculator.getSecondSetHowMany());
204

    
205
                calculator.setCurrentPage(2);
206
                assertEquals(MAX_PAGE_SIZE, calculator.getSecondSetHowMany());
207

    
208
                calculator.setCurrentPage(3);
209
                assertEquals(MAX_PAGE_SIZE, calculator.getSecondSetHowMany());
210

    
211
                calculator.setCurrentPage(calculator.getNumPages() - 1);
212
                assertEquals(1l, calculator.getSecondSetHowMany());
213

    
214
                // Change values so all data fits into a single page
215
                sizeable1.setSize(1l);
216
                sizeable2.setSize(15l);
217
                calculator.setMaxPageSize(20);
218

    
219
                calculator.setCurrentPage(0);
220
                assertEquals(14l, calculator.getSecondSetHowMany());
221

    
222
                // Set the two sets equal, so all elements in the first set are
223
                // contained in the second one
224
                sizeable1.setSize(15l);
225
                sizeable2.setSize(15l);
226
                calculator.setMaxPageSize(4);
227

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

    
231
                calculator.setCurrentPage(1);
232
                assertEquals(0l, calculator.getSecondSetHowMany());
233

    
234
                calculator.setCurrentPage(2);
235
                assertEquals(0l, calculator.getSecondSetHowMany());
236

    
237
                calculator.setCurrentPage(3);
238
                assertEquals(0l, calculator.getSecondSetHowMany());
239
        }
240

    
241
        /**
242
         * Test method for
243
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAllValuesInFirstSet()}
244
         * .
245
         */
246
        public void testHasCurrentPageAllValuesInFirstSet() {
247
                calculator.setCurrentPage(0);
248
                assertTrue(calculator.hasCurrentPageAllValuesInFirstSet());
249

    
250
                calculator.setCurrentPage(1);
251
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
252

    
253
                calculator.setCurrentPage(2);
254
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
255

    
256
                calculator.setCurrentPage(3);
257
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
258

    
259
                calculator.setCurrentPage(calculator.getNumPages() - 1);
260
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
261

    
262
                // Change values so all data fits into a single page
263
                sizeable1.setSize(1l);
264
                sizeable2.setSize(15l);
265
                calculator.setMaxPageSize(20);
266

    
267
                calculator.setCurrentPage(0);
268
                assertFalse(calculator.hasCurrentPageAllValuesInFirstSet());
269
        }
270

    
271
        /**
272
         * Test method for
273
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAnyValuesInFirstSet()}
274
         * .
275
         */
276
        public void testHasCurrentPageAnyValuesInFirstSet() {
277
                calculator.setCurrentPage(0);
278
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
279

    
280
                calculator.setCurrentPage(1);
281
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
282

    
283
                calculator.setCurrentPage(2);
284
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
285

    
286
                calculator.setCurrentPage(3);
287
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
288

    
289
                calculator.setCurrentPage(calculator.getNumPages() - 1);
290
                assertFalse(calculator.hasCurrentPageAnyValuesInFirstSet());
291

    
292
                // Change values so all data fits into a single page
293
                sizeable1.setSize(1l);
294
                sizeable2.setSize(15l);
295
                calculator.setMaxPageSize(20);
296

    
297
                calculator.setCurrentPage(0);
298
                assertTrue(calculator.hasCurrentPageAnyValuesInFirstSet());
299
        }
300

    
301
        /**
302
         * Test method for
303
         * {@link org.gvsig.fmap.dal.feature.paging.impl.OneSubsetOneSetPagingCalculator#hasCurrentPageAnyValuesInSecondSet()}
304
         * .
305
         */
306
        public void testHasCurrentPageAnyValuesInSecondSet() {
307
                calculator.setCurrentPage(0);
308
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
309

    
310
                calculator.setCurrentPage(1);
311
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
312

    
313
                calculator.setCurrentPage(2);
314
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
315

    
316
                calculator.setCurrentPage(3);
317
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
318

    
319
                calculator.setCurrentPage(calculator.getNumPages() - 1);
320
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
321

    
322
                // Change values so all data fits into a single page
323
                sizeable1.setSize(1l);
324
                sizeable2.setSize(15l);
325
                calculator.setMaxPageSize(20);
326

    
327
                calculator.setCurrentPage(0);
328
                assertTrue(calculator.hasCurrentPageAnyValuesInSecondSet());
329

    
330
                // Set the two sets equal, so all elements in the first set are
331
                // contained in the second one
332
                sizeable1.setSize(15l);
333
                sizeable2.setSize(15l);
334
                calculator.setMaxPageSize(4);
335

    
336
                calculator.setCurrentPage(0);
337
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
338

    
339
                calculator.setCurrentPage(1);
340
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
341

    
342
                calculator.setCurrentPage(2);
343
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
344

    
345
                calculator.setCurrentPage(3);
346
                assertFalse(calculator.hasCurrentPageAnyValuesInSecondSet());
347
        }
348

    
349
    private class TestSizeable implements Sizeable {
350

    
351
                private long size;
352

    
353
                public TestSizeable(long size) {
354
                        this.size = size;
355
                }
356

    
357
                public long getSize() {
358
                        return size;
359
                }
360

    
361
                public void setSize(long size) {
362
                        this.size = size;
363
                }
364
        }
365
}