/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.math.surface; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertFalse; import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals; import org.testng.annotations.Test; import com.opengamma.util.test.TestGroup; import com.opengamma.util.tuple.DoublesPair; /** * Test. */ @Test(groups = TestGroup.UNIT) public class NodalDoublesSurfaceTest extends DoublesSurfaceTestCase { private static final NodalDoublesSurface SURFACE = new NodalDoublesSurface(XYZ_LIST); @Test public void testEqualsAndHashCode() { final NodalDoublesSurface surface = new NodalDoublesSurface(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, NAME); NodalDoublesSurface other = new NodalDoublesSurface(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, NAME); assertEquals(surface, other); assertEquals(surface.hashCode(), other.hashCode()); other = new NodalDoublesSurface(Y_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, NAME); assertFalse(other.equals(surface)); other = new NodalDoublesSurface(X_PRIMITIVE, X_PRIMITIVE, Z_PRIMITIVE, NAME); assertFalse(other.equals(surface)); other = new NodalDoublesSurface(X_PRIMITIVE, Y_PRIMITIVE, Y_PRIMITIVE, NAME); assertFalse(other.equals(surface)); other = new NodalDoublesSurface(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, "P"); assertFalse(other.equals(surface)); other = new NodalDoublesSurface(X_OBJECT, Y_OBJECT, Z_OBJECT, NAME); assertEquals(surface, other); other = new NodalDoublesSurface(X_LIST, Y_LIST, Z_LIST, NAME); assertEquals(surface, other); other = new NodalDoublesSurface(XY_PAIR, Z_PRIMITIVE, NAME); assertEquals(surface, other); other = new NodalDoublesSurface(XY_PAIR, Z_OBJECT, NAME); assertEquals(surface, other); other = new NodalDoublesSurface(XY_PAIR_LIST, Z_LIST, NAME); assertEquals(surface, other); other = new NodalDoublesSurface(XYZ_MAP, NAME); assertEquals(surface, other); other = new NodalDoublesSurface(XYZ_LIST, NAME); assertEquals(surface, other); other = new NodalDoublesSurface(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); other = new NodalDoublesSurface(X_OBJECT, Y_OBJECT, Z_OBJECT); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); other = new NodalDoublesSurface(X_LIST, Y_LIST, Z_LIST); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); other = new NodalDoublesSurface(XY_PAIR, Z_PRIMITIVE); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); other = new NodalDoublesSurface(XY_PAIR, Z_OBJECT); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); other = new NodalDoublesSurface(XY_PAIR_LIST, Z_LIST); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); other = new NodalDoublesSurface(XYZ_MAP); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); other = new NodalDoublesSurface(XYZ_LIST); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); } @Test public void testStaticConstruction() { NodalDoublesSurface surface = new NodalDoublesSurface(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, NAME); NodalDoublesSurface other = NodalDoublesSurface.from(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE, NAME); assertEquals(surface, other); surface = new NodalDoublesSurface(X_OBJECT, Y_OBJECT, Z_OBJECT, NAME); other = NodalDoublesSurface.from(X_OBJECT, Y_OBJECT, Z_OBJECT, NAME); assertEquals(surface, other); surface = new NodalDoublesSurface(X_LIST, Y_LIST, Z_LIST, NAME); other = NodalDoublesSurface.from(X_LIST, Y_LIST, Z_LIST, NAME); assertEquals(surface, other); surface = new NodalDoublesSurface(XY_PAIR, Z_PRIMITIVE, NAME); other = NodalDoublesSurface.from(XY_PAIR, Z_PRIMITIVE, NAME); assertEquals(surface, other); surface = new NodalDoublesSurface(XY_PAIR, Z_OBJECT, NAME); other = NodalDoublesSurface.from(XY_PAIR, Z_OBJECT, NAME); assertEquals(surface, other); surface = new NodalDoublesSurface(XY_PAIR_LIST, Z_LIST, NAME); other = NodalDoublesSurface.from(XY_PAIR_LIST, Z_LIST, NAME); assertEquals(surface, other); surface = new NodalDoublesSurface(XYZ_MAP, NAME); other = NodalDoublesSurface.from(XYZ_MAP, NAME); assertEquals(surface, other); surface = new NodalDoublesSurface(XYZ_LIST, NAME); other = NodalDoublesSurface.from(XYZ_LIST, NAME); assertEquals(surface, other); surface = new NodalDoublesSurface(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE); other = NodalDoublesSurface.from(X_PRIMITIVE, Y_PRIMITIVE, Z_PRIMITIVE); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); surface = new NodalDoublesSurface(X_OBJECT, Y_OBJECT, Z_OBJECT); other = NodalDoublesSurface.from(X_OBJECT, Y_OBJECT, Z_OBJECT); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); surface = new NodalDoublesSurface(X_LIST, Y_LIST, Z_LIST); other = NodalDoublesSurface.from(X_LIST, Y_LIST, Z_LIST); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); surface = new NodalDoublesSurface(XY_PAIR, Z_PRIMITIVE); other = NodalDoublesSurface.from(XY_PAIR, Z_PRIMITIVE); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); surface = new NodalDoublesSurface(XY_PAIR, Z_OBJECT); other = NodalDoublesSurface.from(XY_PAIR, Z_OBJECT); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); surface = new NodalDoublesSurface(XY_PAIR_LIST, Z_LIST); other = NodalDoublesSurface.from(XY_PAIR_LIST, Z_LIST); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); surface = new NodalDoublesSurface(XYZ_MAP); other = NodalDoublesSurface.from(XYZ_MAP); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); surface = new NodalDoublesSurface(XYZ_LIST); other = NodalDoublesSurface.from(XYZ_LIST); assertFalse(other.equals(surface)); assertArrayEquals(surface.getXDataAsPrimitive(), other.getXDataAsPrimitive(), 0); assertArrayEquals(surface.getYDataAsPrimitive(), other.getYDataAsPrimitive(), 0); assertArrayEquals(surface.getZDataAsPrimitive(), other.getZDataAsPrimitive(), 0); } @Test public void testGetters() { final NodalDoublesSurface surface = NodalDoublesSurface.from(XYZ_LIST, NAME); assertEquals(surface.getName(), NAME); assertArrayEquals(surface.getXData(), X_OBJECT); assertArrayEquals(surface.getXDataAsPrimitive(), X_PRIMITIVE, 0); assertArrayEquals(surface.getYData(), Y_OBJECT); assertArrayEquals(surface.getYDataAsPrimitive(), Y_PRIMITIVE, 0); assertArrayEquals(surface.getZData(), Z_OBJECT); assertArrayEquals(surface.getZDataAsPrimitive(), Z_PRIMITIVE, 0); assertEquals(surface.size(), Z_PRIMITIVE.length); } @Test public void testGetZValue() { final double eps = 1e-15; assertEquals(SURFACE.getZValue(0., 1.), 0., eps); assertEquals(SURFACE.getZValue(4., 0.), 16., eps); assertEquals(SURFACE.getZValue(1., 1.), 4., eps); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNullX1() { SURFACE.getZValue(null, 2.); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNullY1() { SURFACE.getZValue(1., null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNull() { SURFACE.getZValue(null); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNonNodalX1() { SURFACE.getZValue(1.1, 2.); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNonNodalY1() { SURFACE.getZValue(1., 3.); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNonNodalX2() { SURFACE.getZValue(DoublesPair.of(1.1, 2.)); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNonNodalY2() { SURFACE.getZValue(DoublesPair.of(1., 3.4)); } }