Statistics
| Revision:

root / trunk / libraries / libRaster / src-test / org / gvsig / raster / buffer / cache / TestRasterCache.java @ 11074

History | View | Annotate | Download (2.85 KB)

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

    
3
import junit.framework.TestCase;
4

    
5
import org.gvsig.raster.RasterLibrary;
6
import org.gvsig.raster.buffer.BufferFactory;
7
import org.gvsig.raster.buffer.cache.RasterCache;
8
import org.gvsig.raster.dataset.IBuffer;
9
import org.gvsig.raster.dataset.NotSupportedExtensionException;
10
import org.gvsig.raster.dataset.RasterDataset;
11
import org.gvsig.raster.dataset.RasterDriverException;
12

    
13

    
14
/**
15
 * Test de comparativa de datos cacheados con datos sin cachear. 
16
 * Leemos un raster 1..n veces cacheandolo por p?ginas. Una vez cacheado recorreremos
17
 * la cache recuperando los datos y comparandolos con los originales para comprobar que no
18
 * ha habido perdida y que lo que se obtiene es igual a lo inicial.
19
 * 
20
 * @author Nacho Brodin (nachobrodin@gmail.com)
21
 */
22
public class TestRasterCache extends TestCase{
23
        private String baseDir = "./test-images/";
24
        private String path = baseDir + "03AUG23153350-M2AS-000000122423_01_P001-BROWSE.jpg";
25
        private RasterDataset f = null;
26
        private BufferFactory ds = null;
27
        private int pages = 10;
28
                
29
        static{
30
                RasterLibrary.wakeUp();
31
        }
32
        
33
        public void start(){
34
                this.setUp();
35
                this.testStack();
36
        }
37
        
38
        public void setUp() {
39
                System.err.println("TestRasterCache running...");
40
                try {
41
                        f = RasterDataset.open(null, path);
42
                } catch (NotSupportedExtensionException e) {
43
                        e.printStackTrace();
44
                } catch (RasterDriverException e) {
45
                        e.printStackTrace();
46
                }
47
        }
48
        
49
        public void testStack() {
50
                int[] drawableBands = {0, 1, 2};
51
                //N?mero de veces que cacheamos la imagen. Esto hace que el n?mero de l?neas totales se multiplique por este n?mero
52
                int nTimes = 1;
53
                
54
                ds = new BufferFactory(f);
55
                ds.addDrawableBands(drawableBands);
56
                ds.setAreaOfInterest(0, 0, f.getWidth(), f.getHeight());
57
                                        
58
                //Salvamos los PageBuffer
59
                IBuffer buf = ds.getRasterBuf();
60
                
61
                //Reducimos el tama?o de la cach? para poder trabajar con un volumen de datos reducido
62
                RasterLibrary.cacheSize = 1;
63
                RasterLibrary.pageSize = 0.2;
64
                
65
                RasterCache rc = new RasterCache(f.getDataType(), f.getWidth(), f.getHeight() * nTimes, 3);
66
                //rc.getCache().getCacheStruct().show();
67
                
68
                //Cargamos la cach?
69
                byte[] data = new byte[3];
70
                for(int i = 0; i < nTimes; i++){
71
                        for(int line = 0; line < f.getHeight(); line ++){
72
                                for (int col = 0; col < f.getWidth(); col++) {
73
                                        buf.getElemByte(line, col, data);
74
                                        rc.setElemByte(line + (f.getHeight() * i), col, data);
75
                                }
76
                        }
77
                }
78
                
79
                //Obtenemos los datos y comparamos
80
                byte[] dataA = new byte[3];
81
                byte[] dataB = new byte[3];
82
                for(int i = 0; i < nTimes; i++){
83
                        for(int line = 0; line < f.getHeight(); line ++){
84
                                for (int col = 0; col < f.getWidth(); col++) {
85
                                        buf.getElemByte(line, col, dataA);
86
                                        rc.getElemByte(line + (f.getHeight() * i), col, dataB);
87
                                        assertEquals(dataA[0], dataB[0]);
88
                                        assertEquals(dataA[1], dataB[1]);
89
                                        assertEquals(dataA[2], dataB[2]);
90
                                }
91
                        }
92
                }
93
                
94
                
95
        }
96
}