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 |
} |