/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.analytics.ircurve; import static org.testng.AssertJUnit.assertTrue; import java.util.ArrayList; import org.testng.AssertJUnit; import org.testng.annotations.Test; import com.google.common.collect.Lists; import com.opengamma.analytics.math.curve.InterpolatedDoublesCurve; import com.opengamma.analytics.math.curve.NodalDoublesCurve; import com.opengamma.analytics.math.interpolation.DoubleQuadraticInterpolator1D; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class YieldCurveInterpolatingFunctionTest { @Test public void simpleTest() { ArrayList<Double> xs = Lists.newArrayList(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0); ArrayList<Double> ys = Lists.newArrayList(1.0, 2.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0); DoubleQuadraticInterpolator1D interpolator = new DoubleQuadraticInterpolator1D(); InterpolatedDoublesCurve inputCurve = InterpolatedDoublesCurve.from(xs, ys, interpolator); NodalDoublesCurve interpolatedCurve = YieldCurveInterpolatingFunction.interpolateCurve(inputCurve); AssertJUnit.assertNotSame(0, interpolatedCurve.getXData().length); AssertJUnit.assertNotSame(0, interpolatedCurve.getYData().length); AssertJUnit.assertEquals(xs.get(0), interpolatedCurve.getXData()[0]); AssertJUnit.assertEquals(xs.get(xs.size() - 1), interpolatedCurve.getXData()[interpolatedCurve.getXData().length - 1]); for (int i = 0; i < interpolatedCurve.getXData().length; i++) { double x = interpolatedCurve.getXData()[i]; double y = interpolatedCurve.getYData()[i]; AssertJUnit.assertEquals(inputCurve.getYValue(x), y); } for (int i = 1; i < interpolatedCurve.getXData().length; i++) { double x = interpolatedCurve.getXData()[i]; double prevX = interpolatedCurve.getXData()[i-1]; assertTrue(prevX < x); } } }