/**
* 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 com.opengamma.analytics.math.surface.SurfaceShiftFunctionFactory.getFunction;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals;
import org.apache.commons.lang.ArrayUtils;
import org.testng.annotations.Test;
import com.opengamma.analytics.math.curve.Curve;
import com.opengamma.analytics.math.curve.InterpolatedDoublesCurve;
import com.opengamma.analytics.math.function.Function;
import com.opengamma.analytics.math.interpolation.GridInterpolator2D;
import com.opengamma.analytics.math.interpolation.LinearInterpolator1D;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.tuple.Pair;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class SurfaceShiftFunctionFactoryTest {
private static final Function<Double, Double> F = new Function<Double, Double>() {
@Override
public Double evaluate(final Double... xy) {
return xy[0];
}
};
private static final Surface<Double, Double, Double> DUMMY = new Surface<Double, Double, Double>() {
@Override
public Double[] getXData() {
return ArrayUtils.EMPTY_DOUBLE_OBJECT_ARRAY;
}
@Override
public Double[] getYData() {
return ArrayUtils.EMPTY_DOUBLE_OBJECT_ARRAY;
}
@Override
public Double[] getZData() {
return ArrayUtils.EMPTY_DOUBLE_OBJECT_ARRAY;
}
@Override
public int size() {
return 0;
}
@Override
public Double getZValue(final Double x, final Double y) {
return 0.;
}
@Override
public Double getZValue(final Pair<Double, Double> xy) {
return 0.;
}
};
private static final ConstantDoublesSurface CONSTANT = ConstantDoublesSurface.from(3.4);
private static final FunctionalDoublesSurface FUNCTIONAL = FunctionalDoublesSurface.from(F);
private static final LinearInterpolator1D LINEAR = new LinearInterpolator1D();
private static final InterpolatedDoublesSurface INTERPOLATED = InterpolatedDoublesSurface.from(new double[] {1, 2, 1, 2}, new double[] {1, 2, 3, 4}, new double[] {1.2, 3.4, 5.6, 7.8},
new GridInterpolator2D(LINEAR, LINEAR));
@SuppressWarnings("unchecked")
private static final InterpolatedFromCurvesDoublesSurface INTERPOLATED_FROM_CURVES = InterpolatedFromCurvesDoublesSurface.from(true, new double[] {1},
new Curve[] {InterpolatedDoublesCurve.from(new double[] {1, 2}, new double[] {3, 4}, LINEAR)}, LINEAR);
private static final NodalDoublesSurface NODAL = NodalDoublesSurface.from(new double[] {1, 2}, new double[] {1, 2}, new double[] {1.2, 3.4});
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongClass() {
SurfaceShiftFunctionFactory.getFunction(Double.class);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongCurveType1() {
SurfaceShiftFunctionFactory.getShiftedSurface(DUMMY, .2, false);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongCurveType2() {
SurfaceShiftFunctionFactory.getShiftedSurface(DUMMY, 1, 2, 3, false);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongCurveType3() {
SurfaceShiftFunctionFactory.getShiftedSurface(DUMMY, new double[] {1}, new double[] {2}, new double[] {3}, false);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongCurveType4() {
SurfaceShiftFunctionFactory.getShiftedSurface(DUMMY, .2, "N", false);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongCurveType5() {
SurfaceShiftFunctionFactory.getShiftedSurface(DUMMY, 1, 2, 3, "N", false);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongCurveType6() {
SurfaceShiftFunctionFactory.getShiftedSurface(DUMMY, new double[] {1}, new double[] {2}, new double[] {3}, "N", false);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testGetMultiplicativeInterpolatedDoublesFromCurveSurface() {
SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED_FROM_CURVES, 1, 1, 2, "M", false);
}
@Test
public void testGetFunction() {
assertEquals(ConstantSurfaceAdditiveShiftFunction.class, getFunction(ConstantSurfaceAdditiveShiftFunction.class).getClass());
assertEquals(FunctionalSurfaceAdditiveShiftFunction.class, getFunction(FunctionalSurfaceAdditiveShiftFunction.class).getClass());
assertEquals(InterpolatedSurfaceAdditiveShiftFunction.class, getFunction(InterpolatedSurfaceAdditiveShiftFunction.class).getClass());
assertEquals(InterpolatedFromCurvesSurfaceAdditiveShiftFunction.class, getFunction(InterpolatedFromCurvesSurfaceAdditiveShiftFunction.class).getClass());
assertEquals(NodalSurfaceAdditiveShiftFunction.class, getFunction(NodalSurfaceAdditiveShiftFunction.class).getClass());
assertEquals(ConstantSurfaceMultiplicativeShiftFunction.class, getFunction(ConstantSurfaceMultiplicativeShiftFunction.class).getClass());
assertEquals(FunctionalSurfaceMultiplicativeShiftFunction.class, getFunction(FunctionalSurfaceMultiplicativeShiftFunction.class).getClass());
assertEquals(InterpolatedSurfaceMultiplicativeShiftFunction.class, getFunction(InterpolatedSurfaceMultiplicativeShiftFunction.class).getClass());
assertEquals(NodalSurfaceMultiplicativeShiftFunction.class, getFunction(NodalSurfaceMultiplicativeShiftFunction.class).getClass());
}
@Test
public void testGetAdditiveShiftedSurface1() {
final double shift = 2;
Surface<Double, Double, Double> shifted = SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, shift, true);
Surface<Double, Double, Double> expected = new ConstantSurfaceAdditiveShiftFunction().evaluate(CONSTANT, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertEquals(shifted.getZValue(1., 2.), expected.getZValue(1., 2.), 0);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, shift, true);
expected = new InterpolatedSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
assertEquals(((InterpolatedDoublesSurface) shifted).getInterpolator(), ((InterpolatedDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED_FROM_CURVES, shift, true);
expected = new InterpolatedFromCurvesSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED_FROM_CURVES, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(((InterpolatedFromCurvesDoublesSurface) shifted).getCurves(), ((InterpolatedFromCurvesDoublesSurface) expected).getCurves());
assertEquals(((InterpolatedFromCurvesDoublesSurface) shifted).getInterpolator(), ((InterpolatedFromCurvesDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, shift, true);
expected = new NodalSurfaceAdditiveShiftFunction().evaluate(NODAL, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, shift, true);
expected = new FunctionalSurfaceAdditiveShiftFunction().evaluate(FUNCTIONAL, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertEquals(shifted.getZValue(1., 2.), expected.getZValue(1., 2.));
final String newName = "F";
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, shift, newName, true);
expected = new ConstantSurfaceAdditiveShiftFunction().evaluate(CONSTANT, shift, newName);
assertEquals(expected, shifted);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, shift, newName, true);
expected = new InterpolatedSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED, shift, newName);
assertEquals(expected, shifted);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED_FROM_CURVES, shift, newName, true);
expected = new InterpolatedFromCurvesSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED_FROM_CURVES, shift, newName);
assertEquals(expected, shifted);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, shift, newName, true);
expected = new NodalSurfaceAdditiveShiftFunction().evaluate(NODAL, shift, newName);
assertEquals(expected, shifted);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, shift, newName, true);
expected = new FunctionalSurfaceAdditiveShiftFunction().evaluate(FUNCTIONAL, shift, newName);
assertEquals(shifted.getClass(), expected.getClass());
assertEquals(shifted.getZValue(1., 2.), expected.getZValue(1., 2.));
assertEquals(shifted.getName(), expected.getName());
}
@Test
public void testGetMultiplicativeShiftedSurface1() {
final double shift = 2;
Surface<Double, Double, Double> shifted = SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, shift, false);
Surface<Double, Double, Double> expected = new ConstantSurfaceMultiplicativeShiftFunction().evaluate(CONSTANT, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertEquals(shifted.getZValue(1., 2.), expected.getZValue(1., 2.), 0);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, shift, false);
expected = new InterpolatedSurfaceMultiplicativeShiftFunction().evaluate(INTERPOLATED, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
assertEquals(((InterpolatedDoublesSurface) shifted).getInterpolator(), ((InterpolatedDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, shift, false);
expected = new NodalSurfaceMultiplicativeShiftFunction().evaluate(NODAL, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, shift, false);
expected = new FunctionalSurfaceMultiplicativeShiftFunction().evaluate(FUNCTIONAL, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertEquals(shifted.getZValue(1., 2.), expected.getZValue(1., 2.));
final String newName = "F";
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, shift, newName, false);
expected = new ConstantSurfaceMultiplicativeShiftFunction().evaluate(CONSTANT, shift, newName);
assertEquals(expected, shifted);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, shift, newName, false);
expected = new InterpolatedSurfaceMultiplicativeShiftFunction().evaluate(INTERPOLATED, shift, newName);
assertEquals(expected, shifted);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, shift, newName, false);
expected = new NodalSurfaceMultiplicativeShiftFunction().evaluate(NODAL, shift, newName);
assertEquals(expected, shifted);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, shift, newName, false);
expected = new FunctionalSurfaceMultiplicativeShiftFunction().evaluate(FUNCTIONAL, shift, newName);
assertEquals(shifted.getClass(), expected.getClass());
assertEquals(shifted.getZValue(1., 2.), expected.getZValue(1., 2.));
assertEquals(shifted.getName(), expected.getName());
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported1() {
SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, 1, 1, 2, true);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported2() {
SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, 1, 1, 2, "M", true);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported3() {
SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, 1, 1, 2, true);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported4() {
SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, 1, 1, 2, "M", true);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported5() {
SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, 1, 1, 2, false);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported6() {
SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, 1, 1, 2, "M", false);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported7() {
SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, 1, 1, 2, false);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported8() {
SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, 1, 1, 2, "M", false);
}
@Test
public void testGetAdditiveShiftedSurface2() {
final double x = 1;
final double y = 1;
final double shift = 2;
Surface<Double, Double, Double> shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, x, y, shift, true);
Surface<Double, Double, Double> expected = new InterpolatedSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
assertEquals(((InterpolatedDoublesSurface) shifted).getInterpolator(), ((InterpolatedDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED_FROM_CURVES, x, y, shift, true);
expected = new InterpolatedFromCurvesSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED_FROM_CURVES, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(((InterpolatedFromCurvesDoublesSurface) shifted).getCurves(), ((InterpolatedFromCurvesDoublesSurface) expected).getCurves());
assertEquals(((InterpolatedFromCurvesDoublesSurface) shifted).getInterpolator(), ((InterpolatedFromCurvesDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, x, y, shift, true);
expected = new NodalSurfaceAdditiveShiftFunction().evaluate(NODAL, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
final String newName = "H";
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, x, y, shift, newName, true);
expected = new InterpolatedSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED, x, y, shift, newName);
assertEquals(shifted, expected);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED_FROM_CURVES, x, y, shift, newName, true);
expected = new InterpolatedFromCurvesSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED_FROM_CURVES, x, y, shift, newName);
assertEquals(shifted, expected);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, x, y, shift, newName, true);
expected = new NodalSurfaceAdditiveShiftFunction().evaluate(NODAL, x, y, shift, newName);
assertEquals(shifted, expected);
}
@Test
public void testGetMultiplicativeShiftedSurface2() {
final double x = 1;
final double y = 1;
final double shift = 2;
Surface<Double, Double, Double> shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, x, y, shift, false);
Surface<Double, Double, Double> expected = new InterpolatedSurfaceMultiplicativeShiftFunction().evaluate(INTERPOLATED, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
assertEquals(((InterpolatedDoublesSurface) shifted).getInterpolator(), ((InterpolatedDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, x, y, shift, false);
expected = new NodalSurfaceMultiplicativeShiftFunction().evaluate(NODAL, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
final String newName = "H";
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, x, y, shift, newName, false);
expected = new InterpolatedSurfaceMultiplicativeShiftFunction().evaluate(INTERPOLATED, x, y, shift, newName);
assertEquals(shifted, expected);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, x, y, shift, newName, false);
expected = new NodalSurfaceMultiplicativeShiftFunction().evaluate(NODAL, x, y, shift, newName);
assertEquals(shifted, expected);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported9() {
SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, new double[] {1}, new double[] {1}, new double[] {2}, true);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported10() {
SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, new double[] {1}, new double[] {1}, new double[] {2}, "M", true);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported11() {
SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, new double[] {1}, new double[] {1}, new double[] {2}, true);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported12() {
SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, new double[] {1}, new double[] {1}, new double[] {2}, "M", true);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported13() {
SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, new double[] {1}, new double[] {1}, new double[] {2}, false);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported14() {
SurfaceShiftFunctionFactory.getShiftedSurface(CONSTANT, new double[] {1}, new double[] {1}, new double[] {2}, "M", false);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported15() {
SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, new double[] {1}, new double[] {1}, new double[] {2}, false);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testGetShiftedSurfaceUnsupported16() {
SurfaceShiftFunctionFactory.getShiftedSurface(FUNCTIONAL, new double[] {1}, new double[] {1}, new double[] {2}, "M", false);
}
@Test
public void testGetAdditiveShiftedSurface3() {
final double[] x = new double[] {1};
final double[] y = new double[] {1};
final double[] shift = new double[] {2};
Surface<Double, Double, Double> shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, x, y, shift, true);
Surface<Double, Double, Double> expected = new InterpolatedSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
assertEquals(((InterpolatedDoublesSurface) shifted).getInterpolator(), ((InterpolatedDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED_FROM_CURVES, x, y, shift, true);
expected = new InterpolatedFromCurvesSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED_FROM_CURVES, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(((InterpolatedFromCurvesDoublesSurface) shifted).getCurves(), ((InterpolatedFromCurvesDoublesSurface) expected).getCurves());
assertEquals(((InterpolatedFromCurvesDoublesSurface) shifted).getInterpolator(), ((InterpolatedFromCurvesDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, x, y, shift, true);
expected = new NodalSurfaceAdditiveShiftFunction().evaluate(NODAL, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
final String newName = "H";
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, x, y, shift, newName, true);
expected = new InterpolatedSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED, x, y, shift, newName);
assertEquals(shifted, expected);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED_FROM_CURVES, x, y, shift, newName, true);
expected = new InterpolatedFromCurvesSurfaceAdditiveShiftFunction().evaluate(INTERPOLATED_FROM_CURVES, x, y, shift, newName);
assertEquals(shifted, expected);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, x, y, shift, newName, true);
expected = new NodalSurfaceAdditiveShiftFunction().evaluate(NODAL, x, y, shift, newName);
assertEquals(shifted, expected);
}
@Test
public void testGetMultiplicativeShiftedSurface3() {
final double[] x = new double[] {1};
final double[] y = new double[] {1};
final double[] shift = new double[] {2};
Surface<Double, Double, Double> shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, x, y, shift, false);
Surface<Double, Double, Double> expected = new InterpolatedSurfaceMultiplicativeShiftFunction().evaluate(INTERPOLATED, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
assertEquals(((InterpolatedDoublesSurface) shifted).getInterpolator(), ((InterpolatedDoublesSurface) expected).getInterpolator());
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, x, y, shift, false);
expected = new NodalSurfaceMultiplicativeShiftFunction().evaluate(NODAL, x, y, shift);
assertEquals(shifted.getClass(), expected.getClass());
assertArrayEquals(shifted.getXData(), expected.getXData());
assertArrayEquals(shifted.getYData(), expected.getYData());
final String newName = "H";
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(INTERPOLATED, x, y, shift, newName, false);
expected = new InterpolatedSurfaceMultiplicativeShiftFunction().evaluate(INTERPOLATED, x, y, shift, newName);
assertEquals(shifted, expected);
shifted = SurfaceShiftFunctionFactory.getShiftedSurface(NODAL, x, y, shift, newName, false);
expected = new NodalSurfaceMultiplicativeShiftFunction().evaluate(NODAL, x, y, shift, newName);
assertEquals(shifted, expected);
}
}