/**
* 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 org.testng.annotations.Test;
import com.opengamma.analytics.math.function.Function;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.tuple.Triple;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class FunctionalDoublesCubeTest {
private static final String NAME1 = "P";
private static final String NAME2 = "O";
private static final Function<Double, Double> F1 = new Function<Double, Double>() {
@Override
public Double evaluate(final Double... xyz) {
return xyz[0] + xyz[1] + xyz[2];
}
};
private static final Function<Double, Double> F2 = new Function<Double, Double>() {
@Override
public Double evaluate(final Double... xyz) {
return xyz[0] + xyz[1] * xyz[2];
}
};
private static final FunctionalDoublesCube CUBE = new FunctionalDoublesCube(F1, NAME1);
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullFunction1() {
new FunctionalDoublesCube(null);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullFunction2() {
new FunctionalDoublesCube(null, NAME1);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetXData() {
CUBE.getXData();
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetYData() {
CUBE.getYData();
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetZData() {
CUBE.getZData();
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetData() {
CUBE.getValues();
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetSize() {
CUBE.size();
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullX() {
CUBE.getValue(null, 2., 3.);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullY() {
CUBE.getValue(1., null, 4.);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullZ() {
CUBE.getValue(1., 1., null);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullTriple() {
CUBE.getValue(null);
}
@Test
public void testEqualsAndHashCode() {
FunctionalDoublesCube other = new FunctionalDoublesCube(F1, NAME1);
assertEquals(CUBE, other);
assertEquals(CUBE.hashCode(), other.hashCode());
other = new FunctionalDoublesCube(F2, NAME1);
assertFalse(CUBE.equals(other));
other = new FunctionalDoublesCube(F1, NAME2);
assertFalse(CUBE.equals(other));
other = new FunctionalDoublesCube(F1);
assertFalse(CUBE.equals(other));
}
@Test
public void testGetters() {
assertEquals(CUBE.getName(), NAME1);
assertEquals(CUBE.getFunction(), F1);
assertEquals(CUBE.getValue(1., 2., 3.), F1.evaluate(1., 2., 3.), 0);
assertEquals(CUBE.getValue(new Triple<>(1., 2., 3.)), F1.evaluate(1., 2., 3.), 0);
}
@Test
public void testStaticConstruction() {
FunctionalDoublesCube cube = new FunctionalDoublesCube(F1);
FunctionalDoublesCube other = FunctionalDoublesCube.from(F1);
assertEquals(cube.getFunction(), other.getFunction());
assertFalse(cube.equals(other));
cube = new FunctionalDoublesCube(F1, NAME1);
other = FunctionalDoublesCube.from(F1, NAME1);
assertEquals(cube, other);
}
}