Statistics
| Revision:

gvsig-raster / org.gvsig.raster / branches / org.gvsig.raster.2.4 / org.gvsig.raster / org.gvsig.raster.lib / org.gvsig.raster.lib.buffer / org.gvsig.raster.lib.buffer.impl / src / test / java / org / gvsig / raster / lib / buffer / impl / DefaultBufferTest.java @ 5518

History | View | Annotate | Download (10.4 KB)

1
package org.gvsig.raster.lib.buffer.impl;
2

    
3
import java.util.Arrays;
4
import java.util.Iterator;
5

    
6
import org.gvsig.raster.lib.buffer.api.Band;
7
import org.gvsig.raster.lib.buffer.api.Band.BandByte;
8
import org.gvsig.raster.lib.buffer.api.Band.BandDouble;
9
import org.gvsig.raster.lib.buffer.api.Band.BandFloat;
10
import org.gvsig.raster.lib.buffer.api.Band.BandInt;
11
import org.gvsig.raster.lib.buffer.api.Band.BandShort;
12
import org.gvsig.raster.lib.buffer.api.Buffer;
13
import org.gvsig.raster.lib.buffer.api.BufferLocator;
14
import org.gvsig.raster.lib.buffer.api.BufferManager;
15
import org.gvsig.raster.lib.buffer.api.NoData;
16
import org.gvsig.raster.lib.buffer.api.exceptions.BandException;
17
import org.gvsig.raster.lib.buffer.api.statistics.Statistics;
18
import org.gvsig.tools.ToolsLocator;
19
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
20
import org.gvsig.tools.locator.LocatorException;
21
import org.gvsig.tools.task.SimpleTaskStatus;
22

    
23
/**
24
 * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
25
 *
26
 */
27
public class DefaultBufferTest extends AbstractLibraryAutoInitTestCase {
28

    
29
    private final int BUFFER_ROWS = 10;
30
    private final int BUFFER_COLUMNS = 10;
31

    
32
    private final Number defaultNoDataValue = 10;
33
    private final Number noDataValue = 20;
34
    private Buffer testBuffer = null;
35

    
36
    @Override
37
    protected void doSetUp() throws Exception {
38

    
39
        int[] bandDataTypes =
40
            new int[] { BufferManager.TYPE_BYTE, BufferManager.TYPE_SHORT,
41
                BufferManager.TYPE_USHORT, BufferManager.TYPE_INT, BufferManager.TYPE_FLOAT,
42
                BufferManager.TYPE_DOUBLE };
43

    
44
        NoData[] bandNodata = new NoData[6];
45
        Arrays.fill(bandNodata,
46
            BufferLocator.getBufferManager().createNoData(noDataValue, defaultNoDataValue));
47

    
48
        testBuffer =
49
            BufferLocator.getBufferManager().createBuffer(BUFFER_ROWS, BUFFER_COLUMNS,
50
                bandDataTypes, bandNodata, null, null);
51
    }
52

    
53
    /**
54
     * Test get histogram
55
     */
56
//    public void testGetHistogram() {
57
//
58
//        SimpleTaskStatus simpleTaskStatus =
59
//            ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("test histogram");
60
//        Histogram histogram = testBuffer.getHistogram(simpleTaskStatus);
61
//        assertNotNull(histogram);
62
//
63
//    }
64

    
65
    /**
66
     * Test get statistics
67
     */
68
    public void testGetStatistics() {
69

    
70
        SimpleTaskStatus simpleTaskStatus =
71
            ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("test statistics");
72
        Statistics statistics = testBuffer.getStatistics(simpleTaskStatus);
73
        assertNotNull(statistics);
74
    }
75

    
76
    /**
77
     * Test iterator method
78
     */
79
    public void testIterator() {
80

    
81
        Iterator<Band> iterator = testBuffer.iterator();
82
        assertNotNull(iterator);
83

    
84
        int cont = 0;
85
        while (iterator.hasNext()) {
86
            assertNotNull(iterator.next());
87
            cont++;
88
        }
89
        assertEquals(6, cont);
90
    }
91

    
92
    /**
93
     * Test get band count
94
     */
95
    public void testGetBandCount() {
96
        assertEquals(6, testBuffer.getBandCount());
97
    }
98

    
99
    /**
100
     * Test get bands
101
     */
102
    public void testGetBands() {
103
        Band[] bands = testBuffer.getBands();
104
        assertEquals(testBuffer.getBandCount(), bands.length);
105
    }
106

    
107
    /**
108
     * Test get column method
109
     */
110
    public void testGetColumns() {
111
        assertEquals(BUFFER_COLUMNS, testBuffer.getColumns());
112
    }
113

    
114
    /**
115
     * Test get row method
116
     */
117
    public void testGetRows() {
118
        assertEquals(BUFFER_ROWS, testBuffer.getRows());
119
    }
120

    
121
    /**
122
     * Test is inside method
123
     */
124
    public void testIsInsideIntInt() {
125
        assertTrue(testBuffer.isInside(5, 5));
126
        assertFalse(testBuffer.isInside(10, 10));
127
        assertFalse(testBuffer.isInside(-5, -10));
128
    }
129

    
130
    /**
131
     * Test add band method
132
     */
133
    public void testAddBand() {
134

    
135
        Band band = null;
136
        Band wrongBand = null;
137

    
138
        try {
139
            band =
140
                BufferLocator.getBufferManager().createBand(BufferManager.TYPE_FLOAT, BUFFER_ROWS,
141
                    BUFFER_COLUMNS, null, null);
142
            wrongBand =
143
                BufferLocator.getBufferManager().createBand(BufferManager.TYPE_FLOAT,
144
                    BUFFER_ROWS * 2, BUFFER_COLUMNS * 2, null, null);
145
        } catch (LocatorException | BandException e) {
146
            fail("Can not create bands to test add band method");
147
        }
148

    
149
        testBuffer.addBand(band);
150

    
151
        Exception e = null;
152
        try {
153
            testBuffer.addBand(wrongBand);
154
        } catch (RuntimeException runtimeException) {
155
            // Expected exception
156
            e = runtimeException;
157
        }
158
        assertNotNull(e);
159
    }
160

    
161
    /**
162
     * Test set band method
163
     */
164
    public void testSetBand() {
165

    
166
        Band newBandByte = null;
167
        Band newBandDouble = null;
168
        try {
169
            newBandByte =
170
                BufferLocator.getBufferManager().createBand(BufferManager.TYPE_BYTE, BUFFER_ROWS,
171
                    BUFFER_COLUMNS, null, null);
172
            newBandDouble =
173
                BufferLocator.getBufferManager().createBand(BufferManager.TYPE_DOUBLE, BUFFER_ROWS,
174
                    BUFFER_COLUMNS, null, null);
175
        } catch (LocatorException | BandException e) {
176
            fail("Can not create band to set band to buffer");
177
        }
178

    
179
        try {
180
            testBuffer.setBand(0, newBandByte);
181
        } catch (BandException e) {
182
            fail("Cant not set new band to buffer");
183
        }
184

    
185
        assertEquals(6, testBuffer.getBandCount());
186

    
187
        Band band = testBuffer.getBand(0);
188
        for (int i = 0; i < band.getRows(); i++) {
189
            for (int j = 0; j < band.getColumns(); j++) {
190
                assertEquals(band.get(i, j), newBandByte.get(i, j));
191
            }
192
        }
193

    
194
        Exception e = null;
195
        try {
196
            testBuffer.setBand(0, newBandDouble);
197
        } catch (BandException exception) {
198
            // Expected exception
199
            e = exception;
200
        }
201
        assertNotNull(e);
202
    }
203

    
204
    /**
205
     * Test remove band method
206
     */
207
    public void testRemoveBand() {
208

    
209
        testBuffer.removeBand(0);
210
        assertEquals(5, testBuffer.getBandCount());
211
        testBuffer.removeBand(1);
212
        assertEquals(4, testBuffer.getBandCount());
213
    }
214

    
215
    /**
216
     * Test get band method
217
     */
218
    public void testGetBand() {
219
        Band band = testBuffer.getBand(0);
220
        assertNotNull(band);
221
        assertEquals(BufferManager.TYPE_BYTE, band.getDataType());
222

    
223
        band = testBuffer.getBand(5);
224
        assertEquals(BufferManager.TYPE_DOUBLE, band.getDataType());
225
    }
226

    
227
    /**
228
     * Test get band byte method
229
     */
230
    public void testGetBandByte() {
231

    
232
        BandByte bandByte = testBuffer.getBandByte(0);
233
        assertNotNull(bandByte);
234
        assertEquals(BufferManager.TYPE_BYTE, bandByte.getDataType());
235

    
236
        Exception e = null;
237
        try {
238
            testBuffer.getBandDouble(1);
239
        } catch (RuntimeException runtimeException) {
240
            // Expected exception
241
            e = runtimeException;
242
        }
243
        assertNotNull(e);
244
    }
245

    
246
    /**
247
     * Test get band short
248
     */
249
    public void testGetBandShort() {
250
        BandShort bandShort = testBuffer.getBandShort(1);
251
        assertNotNull(bandShort);
252
        assertEquals(BufferManager.TYPE_SHORT, bandShort.getDataType());
253

    
254
        bandShort = testBuffer.getBandShort(2);
255
        assertNotNull(bandShort);
256
        assertEquals(BufferManager.TYPE_SHORT, bandShort.getDataType());
257

    
258
        Exception e = null;
259
        try {
260
            testBuffer.getBandDouble(0);
261
        } catch (RuntimeException runtimeException) {
262
            // Expected exception
263
            e = runtimeException;
264
        }
265
        assertNotNull(e);
266
    }
267

    
268
    /**
269
     * Test get band int
270
     */
271
    public void testGetBandInt() {
272
        BandInt bandInt = testBuffer.getBandInt(3);
273
        assertNotNull(bandInt);
274
        assertEquals(BufferManager.TYPE_INT, bandInt.getDataType());
275

    
276
        Exception e = null;
277
        try {
278
            testBuffer.getBandDouble(1);
279
        } catch (RuntimeException runtimeException) {
280
            // Expected exception
281
            e = runtimeException;
282
        }
283
        assertNotNull(e);
284
    }
285

    
286
    /**
287
     * Test get band float
288
     */
289
    public void testGetBandFloat() {
290
        BandFloat bandFloat = testBuffer.getBandFloat(4);
291
        assertNotNull(bandFloat);
292
        assertEquals(BufferManager.TYPE_FLOAT, bandFloat.getDataType());
293

    
294
        Exception e = null;
295
        try {
296
            testBuffer.getBandDouble(3);
297
        } catch (RuntimeException runtimeException) {
298
            // Expected exception
299
            e = runtimeException;
300
        }
301
        assertNotNull(e);
302
    }
303

    
304
    /**
305
     * Test get band double
306
     */
307
    public void testGetBandDouble() {
308
        BandDouble bandByte = testBuffer.getBandDouble(5);
309
        assertNotNull(bandByte);
310
        assertEquals(BufferManager.TYPE_DOUBLE, bandByte.getDataType());
311

    
312
        Exception e = null;
313
        try {
314
            testBuffer.getBandDouble(1);
315
        } catch (RuntimeException runtimeException) {
316
            // Expected exception
317
            e = runtimeException;
318
        }
319
        assertNotNull(e);
320
    }
321

    
322
    /**
323
     *
324
     */
325
    public void testSwitchBandsIntArray() {
326

    
327
        int[] positions = new int[] { 4, 5, 2, 1, 3, 0 };
328
        testBuffer.switchBands(positions);
329

    
330
        assertEquals(testBuffer.getBand(0).getDataType(), BufferManager.TYPE_FLOAT);
331
        assertEquals(testBuffer.getBand(1).getDataType(), BufferManager.TYPE_DOUBLE);
332
//        assertEquals(testBuffer.getBand(2).getDataType(), BufferManager.TYPE_USHORT); //FIXME : type unshort?
333
        assertEquals(testBuffer.getBand(3).getDataType(), BufferManager.TYPE_SHORT);
334
        assertEquals(testBuffer.getBand(4).getDataType(), BufferManager.TYPE_INT);
335
        assertEquals(testBuffer.getBand(5).getDataType(), BufferManager.TYPE_BYTE);
336
    }
337

    
338
    /**
339
     * Test swing band method
340
     */
341
    public void testSwitchBandsIntInt() {
342

    
343
        Band oldBand = testBuffer.getBand(0);
344
        testBuffer.switchBands(0, 1);
345
        Band newBand = testBuffer.getBand(1);
346

    
347
        for (int i = 0; i < oldBand.getRows(); i++) {
348
            for (int j = 0; j < oldBand.getColumns(); j++) {
349
                assertEquals(oldBand.get(i, j), newBand.get(i, j));
350
            }
351
        }
352

    
353
        assertEquals(testBuffer.getBand(0).getDataType(), BufferManager.TYPE_SHORT);
354
        assertEquals(testBuffer.getBand(1).getDataType(), BufferManager.TYPE_BYTE);
355
    }
356
}