/*- * Copyright (c) 2012 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.dataset.function; import static org.junit.Assert.assertEquals; import java.util.List; import org.eclipse.january.dataset.CompoundDataset; import org.eclipse.january.dataset.CompoundDoubleDataset; import org.eclipse.january.dataset.Dataset; import org.eclipse.january.dataset.DatasetFactory; import org.junit.Test; /** * */ public class Integrate2DTest { private void check1DArray(final Dataset a, final double[] d) { assertEquals(1, a.getRank()); final int size = a.getSize(); final int is = a.getElementsPerItem(); assertEquals(d.length, is*size); if (is == 1) { for (int i = 0; i < size; i++) { assertEquals(d[i], a.getDouble(i), 1e-8); } } else { int n = 0; double[] ad = new double[is]; for (int i = 0; i < size; i++) { ((CompoundDataset) a).getDoubleArray(ad, i); for (int j = 0; j < is; j++) { assertEquals(d[n++], ad[j], 1e-8); } } } } /** * */ @Test public void testSimple() { double[] dd = {0., 1., 2., 3., 4., 5.}; Dataset d = DatasetFactory.createFromObject(dd, 2, 3); Integrate2D int2d = new Integrate2D(); List<? extends Dataset> dsets = int2d.value(d); check1DArray(dsets.get(0), new double[] {3., 12.}); check1DArray(d.sum(1), new double[] {3., 12.}); check1DArray(dsets.get(1), new double[] {3., 5., 7.}); check1DArray(d.sum(0), new double[] {3., 5., 7.}); } /** * */ @Test public void testCompound() { double[] dd = {0., 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.}; Dataset d = DatasetFactory.createFromObject(2, CompoundDoubleDataset.class, dd, 2, 3); Integrate2D int2d = new Integrate2D(); List<? extends Dataset> dsets = int2d.value(d); check1DArray(dsets.get(0), new double[] {6., 9., 24., 27.}); check1DArray(d.sum(1), new double[] {6., 9., 24., 27.}); check1DArray(dsets.get(1), new double[] {6., 8., 10., 12., 14., 16.}); check1DArray(d.sum(0), new double[] {6., 8., 10., 12., 14., 16.}); } }