Statistics
| Revision:

gvsig-raster / org.gvsig.raster.cache / trunk / org.gvsig.raster.cache / org.gvsig.raster.cache.lib.impl / src / test / java / org / gvsig / raster / cache / buffer / impl / rocache / TestSwapTwoBands.java @ 999

History | View | Annotate | Download (2.26 KB)

1
package org.gvsig.raster.cache.buffer.impl.rocache;
2

    
3
import java.io.IOException;
4

    
5
import junit.framework.TestCase;
6

    
7
import org.gvsig.raster.cache.buffer.Band;
8
import org.gvsig.raster.cache.buffer.Buffer;
9
import org.gvsig.raster.cache.buffer.BufferDataSource;
10
import org.gvsig.raster.cache.buffer.exception.WrongParameterException;
11
import org.gvsig.raster.cache.buffer.impl.BufferCacheManagerImpl;
12
import org.gvsig.raster.cache.buffer.impl.io.BufferDataSourceImpl;
13

    
14
/**
15
 * This test swap two bands of a raster and save the result in other file.
16
 * Finally it compares the output bands with the input bands.
17
 * 
18
 * @author Nacho Brodin (nachobrodin@gmail.com)
19
 */
20
public class TestSwapTwoBands extends TestCase {
21
        private String rasterIn = "./src/test/resources/image/001m09_1_0.tif";
22
        
23
        public void start() {
24
                this.setUp();
25
                this.testStack();
26
        }
27

    
28
        public void setUp() {
29
                System.err.println("ROCache TestSwapTwoBands running...");
30
        }
31
        
32
        public void testStack() {
33
                long t1 = System.currentTimeMillis();
34
                try {
35
                        //Reducimos el tama?o de la cache para una prueba con menos datos
36
                        BufferCacheManagerImpl.cacheSize = 2;
37
                        BufferCacheManagerImpl.pageSize = 0.2;
38
                        
39
                        BufferDataSource ds = null;
40
                        try {
41
                                ds = new BufferDataSourceImpl(rasterIn);
42
                        } catch (IOException e) {
43
                                e.printStackTrace();
44
                        }
45
                                                
46
                        //Create Buffer
47
                        Buffer buf1 = new RasterReadOnlyBuffer(ds);
48

    
49
                        Buffer buf2 = new RasterReadOnlyBuffer(ds);
50

    
51
                        try {
52
                                buf2.swapBands(0, 2);
53
                        } catch (WrongParameterException e) {
54
                                e.printStackTrace();
55
                        }
56
                        
57
                        Band band1 = buf1.getBand(0);
58
                        Band band2 = buf2.getBand(2);
59
                        compareBands(band1, band2);
60
                        
61
                        band1 = buf1.getBand(2);
62
                        band2 = buf2.getBand(0);
63
                        compareBands(band1, band2);
64
                        
65
                        band1 = buf1.getBand(1);
66
                        band2 = buf2.getBand(1);
67
                        compareBands(band1, band2);
68
                        
69
                        buf1.free();
70
                        buf2.free();
71
                } catch (IOException e) {
72
                        e.printStackTrace();
73
                }
74
                long t2 = System.currentTimeMillis();
75
                System.out.println("Tiempo ROCache TestSwapTwoBands: " + (t2 - t1) + " milisegundos");
76
        }
77
        
78
        public void compareBands(Band band1, Band band2) {
79
                for (int i = 0; i < band1.getHeight(); i++) {
80
                        for (int j = 0; j < band1.getWidth(); j++) {
81
                                byte b1 = band1.getElemByte(i, j);
82
                                byte b2 = band2.getElemByte(i, j);
83
                                assertEquals(b1, b2);
84
                        }
85
                }
86
        }
87
                
88
}