Revision 5511

View differences:

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
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.Histogram;
18
import org.gvsig.raster.lib.buffer.api.statistics.Statistics;
19
import org.gvsig.tools.ToolsLocator;
20
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
21
import org.gvsig.tools.locator.LocatorException;
22
import org.gvsig.tools.task.SimpleTaskStatus;
23

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

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

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

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

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

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

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

  
54
    /**
55
     * Test get histogram
56
     */
57
    public void testGetHistogram() {
58

  
59
        SimpleTaskStatus simpleTaskStatus =
60
            ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("test histogram");
61
        Histogram histogram = testBuffer.getHistogram(simpleTaskStatus);
62
        assertNotNull(histogram);
63

  
64
    }
65
    
66
    /**
67
     * Test get statistics
68
     */
69
    public void testGetStatistics() {
70
        
71
        SimpleTaskStatus simpleTaskStatus =
72
            ToolsLocator.getTaskStatusManager().createDefaultSimpleTaskStatus("test statistics");
73
        Statistics statistics = testBuffer.getStatistics(simpleTaskStatus);
74
        assertNotNull(statistics);
75
    }
76

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

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

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

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

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

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

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

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

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

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

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

  
150
        testBuffer.addBand(band);
151

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Also available in: Unified diff