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
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
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 3
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
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
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
}