Statistics
| Revision:

svn-gvsig-desktop / trunk / libraries / libRaster / src-test / org / gvsig / raster / buffer / cache / TestRasterCache.java @ 21615

History | View | Annotate | Download (3.18 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.dataset.IBuffer;
8
import org.gvsig.raster.dataset.InvalidSetViewException;
9
import org.gvsig.raster.dataset.NotSupportedExtensionException;
10
import org.gvsig.raster.dataset.RasterDataset;
11
import org.gvsig.raster.dataset.io.RasterDriverException;
12
/**
13
 * Test de comparativa de datos cacheados con datos sin cachear. 
14
 * Leemos un raster 1..n veces cacheandolo por p?ginas. Una vez cacheado recorreremos
15
 * la cache recuperando los datos y comparandolos con los originales para comprobar que no
16
 * ha habido perdida y que lo que se obtiene es igual a lo inicial.
17
 * 
18
 * @author Nacho Brodin (nachobrodin@gmail.com)
19
 */
20
public class TestRasterCache extends TestCase{
21
        private String        baseDir = "./test-images/";
22
        private String        path    = baseDir + "03AUG23153350-M2AS-000000122423_01_P001-BROWSE.jpg";
23
        private RasterDataset f       = null;
24

    
25
        static {
26
                RasterLibrary.wakeUp();
27
        }
28

    
29
        public void start() {
30
                this.setUp();
31
                this.testStack();
32
        }
33

    
34
        public void setUp() {
35
                System.err.println("TestRasterCache running...");
36
                try {
37
                        f = RasterDataset.open(null, path);
38
                } catch (NotSupportedExtensionException e) {
39
                        e.printStackTrace();
40
                } catch (RasterDriverException e) {
41
                        e.printStackTrace();
42
                }
43
        }
44
        
45
        public void testStack() {
46
                int[] drawableBands = { 0, 1, 2 };
47
                //N?mero de veces que cacheamos la imagen. Esto hace que el n?mero de l?neas totales se multiplique por este n?mero
48
                int nTimes = 1;
49
                BufferFactory ds = new BufferFactory(f);
50
                ds.setDrawableBands(drawableBands);
51
                try {
52
                        ds.setAreaOfInterest(0, 0, f.getWidth(), f.getHeight());
53
                } catch (InvalidSetViewException e) {
54
                        e.printStackTrace();
55
                } catch (InterruptedException e) {
56
                        e.printStackTrace();
57
                } catch (RasterDriverException e) {
58
                        e.printStackTrace();
59
                }
60

    
61
                // Salvamos los PageBuffer
62
                IBuffer buf = ds.getRasterBuf();
63
                
64
                //Reducimos el tama?o de la cach? para poder trabajar con un volumen de datos reducido
65
                long cacheSize = RasterLibrary.cacheSize;
66
                double pageSize = RasterLibrary.pageSize;
67
                RasterLibrary.cacheSize = 1;
68
                RasterLibrary.pageSize = 0.2;
69

    
70
                RasterCache rc = new RasterCache(f.getDataType()[0], f.getWidth(), f.getHeight() * nTimes, 3);
71
//                rc.getCache().getCacheStruct().show();
72

    
73
                // Cargamos la cach?
74
                byte[] data = new byte[3];
75
                for (int i = 0; i < nTimes; i++) {
76
                        for (int line = 0; line < f.getHeight(); line++) {
77
                                for (int col = 0; col < f.getWidth(); col++) {
78
                                        buf.getElemByte(line, col, data);
79
                                        rc.setElemByte(line + (f.getHeight() * i), col, data);
80
                                }
81
                        }
82
                }
83

    
84
                // Obtenemos los datos y comparamos
85
                byte[] dataA = new byte[3];
86
                byte[] dataB = new byte[3];
87
                for (int i = 0; i < nTimes; i++) {
88
                        for (int line = 0; line < f.getHeight(); line++) {
89
                                for (int col = 0; col < f.getWidth(); col++) {
90
                                        buf.getElemByte(line, col, dataA);
91
                                        rc.getElemByte(line + (f.getHeight() * i), col, dataB);
92
                                        assertEquals(dataA[0], dataB[0]);
93
                                        assertEquals(dataA[1], dataB[1]);
94
                                        assertEquals(dataA[2], dataB[2]);
95
                                }
96
                        }
97
                }
98
                RasterLibrary.cacheSize = cacheSize;
99
                RasterLibrary.pageSize = pageSize;
100
        }
101
}