/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.math.interpolation; import static org.testng.AssertJUnit.assertEquals; import org.testng.annotations.Test; import com.opengamma.analytics.math.function.Function1D; import com.opengamma.analytics.math.interpolation.data.Interpolator1DDataBundle; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class LinearInterpolator1DNodeSensitivityCalculatorTest { private static final double EPS = 1e-15; private static final LinearInterpolator1D INTERPOLATOR = new LinearInterpolator1D(); private static final Function1D<Double, Double> FUNCTION = new Function1D<Double, Double>() { @Override public Double evaluate(final Double x) { return 2 * x - 7; } }; private static final Interpolator1DDataBundle DATA; static { final int n = 10; final double[] x = new double[n]; final double[] y = new double[n]; for (int i = 0; i < n; i++) { x[i] = Double.valueOf(i); y[i] = FUNCTION.evaluate(x[i]); } DATA = INTERPOLATOR.getDataBundleFromSortedArrays(x, y); } @Test(expectedExceptions = IllegalArgumentException.class) public void testNullData() { INTERPOLATOR.getNodeSensitivitiesForValue(null, 1.); } @Test public void test() { double[] result = INTERPOLATOR.getNodeSensitivitiesForValue(DATA, 3.4); for (int i = 0; i < 3; i++) { assertEquals(0, result[i], 0); } assertEquals(0.6, result[3], EPS); assertEquals(0.4, result[4], EPS); for (int i = 5; i < 10; i++) { assertEquals(result[i], 0, 0); } result = INTERPOLATOR.getNodeSensitivitiesForValue(DATA, 7.); for (int i = 0; i < 7; i++) { assertEquals(0, result[i], 0); } assertEquals(1, result[7], EPS); for (int i = 8; i < 10; i++) { assertEquals(0, result[i], 0); } } }