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

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
/*
25
 * AUTHORS (In addition to CIT):
26
 * 2010 {}  {{Task}}
27
 */
28
package org.gvsig.fmap.dal.feature.paging.impl;
29

    
30
import junit.framework.TestCase;
31

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

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

    
42
        private static final int MAX_PAGE_SIZE = 4;
43

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

    
47
        private OneSubsetOneSetPagingCalculator calculator;
48

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
350
    private class TestSizeable implements Sizeable {
351

    
352
                private long size;
353

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

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

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