Package com.opengamma.analytics.math.cube

Source Code of com.opengamma.analytics.math.cube.InterpolatedDoublesCubeTest$MyInterpolator

/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.math.cube;

import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertFalse;
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;

import java.util.List;

import org.testng.annotations.Test;

import com.opengamma.analytics.math.interpolation.InterpolatorND;
import com.opengamma.analytics.math.interpolation.data.InterpolatorNDDataBundle;
import com.opengamma.util.tuple.Pair;
import com.opengamma.util.tuple.Triple;

/**
*
*/
public class InterpolatedDoublesCubeTest extends DoublesCubeTest {
  @SuppressWarnings("synthetic-access")
  private static final MyInterpolator INTERPOLATOR = new MyInterpolator();
  private static final InterpolatedDoublesCube CUBE = InterpolatedDoublesCube.from(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);

  @Test
  public void testEqualsAndHashCode() {
    final InterpolatedDoublesCube cube = new InterpolatedDoublesCube(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);
    InterpolatedDoublesCube other = new InterpolatedDoublesCube(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);
    assertEquals(cube, other);
    assertEquals(cube.hashCode(), other.hashCode());
    other = new InterpolatedDoublesCube(Y_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);
    assertFalse(other.equals(cube));
    other = new InterpolatedDoublesCube(X_PRIMITIVE, X_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);
    assertFalse(other.equals(cube));
    other = new InterpolatedDoublesCube(X_PRIMITIVE, Y_PRIMITIVE, Y_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);
    assertFalse(other.equals(cube));
    assertFalse(other.equals(cube));
    other = new InterpolatedDoublesCube(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, "P");
    assertFalse(other.equals(cube));
    other = new InterpolatedDoublesCube(X_OBJECT, Y_OBJECT, Z_OBJECT, DATA_OBJECT, INTERPOLATOR, NAME);
    assertEquals(cube, other);
    other = new InterpolatedDoublesCube(X_LIST, Y_LIST, Z_LIST, DATA_LIST, INTERPOLATOR, NAME);
    assertEquals(cube, other);
    other = new InterpolatedDoublesCube(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR);
    assertFalse(other.equals(cube));
    assertArrayEquals(cube.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0);
    assertArrayEquals(cube.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0);
    assertArrayEquals(cube.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0);
    other = new InterpolatedDoublesCube(X_OBJECT, Y_OBJECT, Z_OBJECT, DATA_OBJECT, INTERPOLATOR);
    assertFalse(other.equals(cube));
    assertArrayEquals(cube.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0);
    assertArrayEquals(cube.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0);
    assertArrayEquals(cube.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0);
    other = new InterpolatedDoublesCube(X_LIST, Y_LIST, Z_LIST, DATA_LIST, INTERPOLATOR);
    assertFalse(other.equals(cube));
    assertArrayEquals(cube.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0);
    assertArrayEquals(cube.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0);
    assertArrayEquals(cube.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0);
  }

  @Test
  public void testStaticConstruction() {
    InterpolatedDoublesCube cube = new InterpolatedDoublesCube(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);
    InterpolatedDoublesCube other = InterpolatedDoublesCube.from(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);
    assertEquals(cube, other);
    cube = new InterpolatedDoublesCube(X_OBJECT, Y_OBJECT, Z_OBJECT, DATA_OBJECT, INTERPOLATOR, NAME);
    other = InterpolatedDoublesCube.from(X_OBJECT, Y_OBJECT, Z_OBJECT, DATA_OBJECT, INTERPOLATOR, NAME);
    assertEquals(cube, other);
    cube = new InterpolatedDoublesCube(X_LIST, Y_LIST, Z_LIST, DATA_LIST, INTERPOLATOR, NAME);
    other = InterpolatedDoublesCube.from(X_LIST, Y_LIST, Z_LIST, DATA_LIST, INTERPOLATOR, NAME);
    assertEquals(cube, other);
    cube = new InterpolatedDoublesCube(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR);
    other = InterpolatedDoublesCube.from(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR);
    assertFalse(other.equals(cube));
    assertArrayEquals(cube.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0);
    assertArrayEquals(cube.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0);
    assertArrayEquals(cube.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0);
    cube = new InterpolatedDoublesCube(X_OBJECT, Y_OBJECT, Z_OBJECT, DATA_OBJECT, INTERPOLATOR);
    other = InterpolatedDoublesCube.from(X_OBJECT, Y_OBJECT, Z_OBJECT, DATA_OBJECT, INTERPOLATOR);
    assertFalse(other.equals(cube));
    assertArrayEquals(cube.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0);
    assertArrayEquals(cube.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0);
    assertArrayEquals(cube.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0);
    cube = new InterpolatedDoublesCube(X_LIST, Y_LIST, Z_LIST, DATA_LIST, INTERPOLATOR);
    other = InterpolatedDoublesCube.from(X_LIST, Y_LIST, Z_LIST, DATA_LIST, INTERPOLATOR);
    assertFalse(other.equals(cube));
    assertArrayEquals(cube.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0);
    assertArrayEquals(cube.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0);
    assertArrayEquals(cube.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0);
  }

  @Test
  public void testGetters() {
    final InterpolatedDoublesCube cube = InterpolatedDoublesCube.from(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, DATA_PRIMITIVE, INTERPOLATOR, NAME);
    assertEquals(cube.getInterpolator(), INTERPOLATOR);
    assertEquals(cube.getName(), NAME);
    assertArrayEquals(cube.getXData(), X_OBJECT);
    assertArrayEquals(cube.getXDataAsPrimitive(), X_PRIMITIVE, 0);
    assertArrayEquals(cube.getYData(), Y_OBJECT);
    assertArrayEquals(cube.getYDataAsPrimitive(), Y_PRIMITIVE, 0);
    assertArrayEquals(cube.getZData(), Z_OBJECT);
    assertArrayEquals(cube.getZDataAsPrimitive(), Z_PRIMITIVE, 0);
    assertArrayEquals(cube.getValuesAsPrimitive(), DATA_PRIMITIVE, 0);
    assertEquals(cube.size(), DATA_PRIMITIVE.length);
  }

  @Test
  public void testGetZValue() {
    final double eps = 1e-15;
    assertEquals(CUBE.getValue(0., 1., 2.6), 2.6, eps);
    assertEquals(CUBE.getValue(3., 0., 0.01), 0.01, eps);
    assertEquals(CUBE.getValue(new Triple<>(0., 1., 2.6)), 2.6, eps);
    assertEquals(CUBE.getValue(new Triple<>(3., 0., 0.01)), 0.01, eps);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullX1() {
    CUBE.getValue(null, 2., 5.);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullY1() {
    CUBE.getValue(1., null, 1.);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullZ1() {
    CUBE.getValue(1., 1., null);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullXYZ() {
    CUBE.getValue(null);
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullX2() {
    CUBE.getValue(new Triple<Double, Double, Double>(null, 2., 5.));
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullY2() {
    CUBE.getValue(new Triple<Double, Double, Double>(1., null, 1.));
  }

  @Test(expectedExceptions = IllegalArgumentException.class)
  public void testNullZ2() {
    CUBE.getValue(new Triple<Double, Double, Double>(1., 1., null));
  }

  private static class MyInterpolator extends InterpolatorND {

    @Override
    public Double interpolate(final InterpolatorNDDataBundle data, final double[] x) {
      return x[2];
    }

    @Override
    public InterpolatorNDDataBundle getDataBundle(final double[] x, final double[] y, final double[] z, final double[] values) {
      return new InterpolatorNDDataBundle(transformData(x, y, z, values));
    }

    @Override
    public InterpolatorNDDataBundle getDataBundle(final List<Pair<double[], Double>> data) {
      return new InterpolatorNDDataBundle(data);
    }

  }
}
TOP

Related Classes of com.opengamma.analytics.math.cube.InterpolatedDoublesCubeTest$MyInterpolator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.