/*
* Copyright (C) 2010-2014 Andreas Maier, Kerstin Müller
* CONRAD is developed as an Open Source project under the GNU General Public License (GPL).
*/
package edu.stanford.rsl.conrad.io;
import ij.io.FileInfo;
import java.io.File;
import java.io.IOException;
import junit.framework.Assert;
import org.junit.Test;
import edu.stanford.rsl.conrad.data.numeric.Grid1D;
import edu.stanford.rsl.conrad.data.numeric.Grid2D;
import edu.stanford.rsl.conrad.data.numeric.Grid3D;
import edu.stanford.rsl.conrad.data.numeric.iterators.NumericPointwiseIteratorND;
import edu.stanford.rsl.conrad.utils.CONRAD;
public class TestGridRawDataIO {
@Test
public void testGrid1DIO(){
int length = 400;
Grid1D grid = new Grid1D(length);
for (int i=0;i<length;i++){
grid.setAtIndex(i, (float) Math.random());
}
try {
FileInfo fi = GridRawIOUtil.getDefaultFloat32LittleEndianFileInfo();
fi.width = length;
fi.height = 1;
fi.nImages = 1;
String sep = System.getProperty("file.separator");
String filename = CONRAD.getUserHome()+sep+"test.raw";
GridRawIOUtil.saveRawDataGrid(grid, fi, filename);
Grid2D load = (Grid2D) GridRawIOUtil.loadFromRawData(fi, filename);
NumericPointwiseIteratorND iter1 = new NumericPointwiseIteratorND(grid);
NumericPointwiseIteratorND iter2 = new NumericPointwiseIteratorND(load);
double sum = 0;
while (iter1.hasNext()){
sum += Math.abs(iter1.getNext()-iter2.getNext());
}
File file = new File(filename);
file.delete();
Assert.assertTrue(sum < CONRAD.FLOAT_EPSILON);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void testGrid2DIO(){
int length = 400;
Grid2D grid = new Grid2D(length,length*2);
NumericPointwiseIteratorND iter = new NumericPointwiseIteratorND(grid);
while(iter.hasNext()){
iter.setNext((float)Math.random());
}
try {
FileInfo fi = GridRawIOUtil.getDefaultFloat32LittleEndianFileInfo();
fi.width = length;
fi.height = length*2;
fi.nImages = 1;
String sep = System.getProperty("file.separator");
String filename = CONRAD.getUserHome()+sep+"test.raw";
GridRawIOUtil.saveRawDataGrid(grid, fi, filename);
Grid2D load = (Grid2D) GridRawIOUtil.loadFromRawData(fi, filename);
NumericPointwiseIteratorND iter1 = new NumericPointwiseIteratorND(grid);
NumericPointwiseIteratorND iter2 = new NumericPointwiseIteratorND(load);
double sum = 0;
while (iter1.hasNext()){
sum += Math.abs(iter1.getNext()-iter2.getNext());
}
File file = new File(filename);
file.delete();
Assert.assertTrue(sum < CONRAD.FLOAT_EPSILON);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void testGrid3DIO(){
int length = 40;
Grid3D grid = new Grid3D(length, length*2, length*3);
NumericPointwiseIteratorND iter = new NumericPointwiseIteratorND(grid);
while(iter.hasNext()){
iter.setNext((float)Math.random());
}
try {
FileInfo fi = GridRawIOUtil.getDefaultFloat32LittleEndianFileInfo();
fi.width = length;
fi.height = length*2;
fi.nImages = length*3;
String sep = System.getProperty("file.separator");
String filename = CONRAD.getUserHome()+sep+"test.raw";
GridRawIOUtil.saveRawDataGrid(grid, fi, filename);
Grid3D load = (Grid3D) GridRawIOUtil.loadFromRawData(fi, filename);
NumericPointwiseIteratorND iter1 = new NumericPointwiseIteratorND(grid);
NumericPointwiseIteratorND iter2 = new NumericPointwiseIteratorND(load);
double sum = 0;
while (iter1.hasNext()){
sum += Math.abs(iter1.getNext()-iter2.getNext());
}
File file = new File(filename);
file.delete();
Assert.assertTrue(sum < CONRAD.FLOAT_EPSILON);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}