/*
* Copyright (c) 2016 Diamond Light Source Ltd.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package uk.ac.diamond.scisoft.analysis.io;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.SerializationUtils;
import org.eclipse.dawnsci.analysis.api.io.IDataHolder;
import org.eclipse.january.dataset.Dataset;
import org.eclipse.january.dataset.IDataset;
import org.eclipse.january.dataset.ILazyDataset;
import org.eclipse.january.dataset.LazyDataset;
import org.eclipse.january.dataset.Slice;
import org.eclipse.january.metadata.IMetadata;
import org.junit.Test;
public class UViewDatLoaderTest {
@Test
public void testMovie_22() throws Exception {
final String testfile = "testfiles/gda/analysis/io/UViewDatLoaderTest/movie_22_000001.dat";
final IDataHolder dh = new UViewDatLoader(testfile).loadFile();
// Test some of the data
if (dh.getDataset("image-01").getShape()[0]!=512) throw new Exception("The width value of the dataset should be 512!");
if (dh.getDataset("image-01").getShape()[1]!=512) throw new Exception("The height value of the dataset should be 512!");
if (dh.getDataset("image-01").getDouble(new int[] {0, 0})!=202.0d) throw new Exception("The first value of the dataset should be 202!");
if (dh.getDataset("image-01").getDouble(new int[] {511, 510})!=236.0d) throw new Exception("The one before the last value of the dataset should be 236!");
}
@Test
public void testMetadata() throws Exception {
final String testfile = "testfiles/gda/analysis/io/UViewDatLoaderTest/movie_22_000001.dat";
DataHolder loader = (DataHolder) new UViewDatLoader(testfile).loadFile();
Dataset data = loader.getDataset(0);
IMetadata metadata = data.getMetadata();
assertEquals(8, metadata.getMetaValue(UViewDatLoader.BinaryKey.VERSION.toString()));
assertEquals(1657, metadata.getMetaValue(UViewDatLoader.BinaryKey.TOTALHEADERSIZE.toString()));
assertEquals(true, metadata.getMetaValue(UViewDatLoader.BinaryKey.HASMARKUP.toString()));
}
@Test
public void testSerializability() throws Exception {
final String testfile = "testfiles/gda/analysis/io/UViewDatLoaderTest/movie_22_000001.dat";
DataHolder loader = (DataHolder) new UViewDatLoader(testfile).loadFile();
Dataset data = loader.getDataset(0);
SerializationUtils.serialize(data.getMetadata());
}
@Test
public void testLazyLoading() throws Exception {
List<String> paths = new ArrayList<String>(3);
for (int i = 0; i < 3; i++) {
paths.add(i, "testfiles/gda/analysis/io/UViewDatLoaderTest/movie_22_00000" + (i+1) + ".dat");
}
ImageStackLoader loader = new ImageStackLoader(paths, null);
ILazyDataset lazy = new LazyDataset("Image stack", loader.getDType(), loader.getShape(), loader);
assertArrayEquals("Shapes are the same", loader.getShape(), lazy.getShape());
IDataset slice = lazy.getSlice(new Slice(1)).squeeze();
if (slice.getShape()[0]!=512) throw new Exception("The width value of the dataset should be 512!");
if (slice.getShape()[1]!=512) throw new Exception("The height value of the dataset should be 512!");
if (slice.getDouble(new int[] {0, 0})!=202.0d) throw new Exception("The first value of the dataset should be 202!");
if (slice.getDouble(new int[] {511, 510})!=236.0d) throw new Exception("The one before the last value of the dataset should be 236!");
}
}