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