/**
* 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 com.opengamma.analytics.math.interpolation.CombinedInterpolatorExtrapolatorFactory.getInterpolator;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNull;
import org.testng.annotations.Test;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class CombinedInterpolatorExtrapolatorFactoryTest {
@Test(expectedExceptions = IllegalArgumentException.class)
public void testBadInterpolatorName1() {
getInterpolator("Wrong name");
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testBadInterpolatorName2() {
getInterpolator("Wrong name", Interpolator1DFactory.FLAT_EXTRAPOLATOR);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testBadInterpolatorName3() {
getInterpolator("Wrong name", Interpolator1DFactory.FLAT_EXTRAPOLATOR, Interpolator1DFactory.LINEAR_EXTRAPOLATOR);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testBadExtrapolatorName1() {
getInterpolator(Interpolator1DFactory.LINEAR, "Wrong name");
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testBadExtrapolatorName2() {
getInterpolator(Interpolator1DFactory.LINEAR, "Wrong name", Interpolator1DFactory.FLAT_EXTRAPOLATOR);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testBadExtrapolatorName3() {
getInterpolator(Interpolator1DFactory.LINEAR, Interpolator1DFactory.FLAT_EXTRAPOLATOR, "Wrong name");
}
@Test
public void testNullExtrapolatorName() {
final CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, null);
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertNull(combined.getLeftExtrapolator());
assertNull(combined.getRightExtrapolator());
}
@Test
public void testEmptyExtrapolatorName() {
final CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, "");
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertNull(combined.getLeftExtrapolator());
assertNull(combined.getRightExtrapolator());
}
@Test
public void testNullLeftExtrapolatorName() {
final CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, null, Interpolator1DFactory.FLAT_EXTRAPOLATOR);
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertEquals(combined.getLeftExtrapolator().getClass(), FlatExtrapolator1D.class);
assertEquals(combined.getRightExtrapolator().getClass(), FlatExtrapolator1D.class);
}
@Test
public void testEmptyLeftExtrapolatorName() {
final CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, "", Interpolator1DFactory.FLAT_EXTRAPOLATOR);
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertEquals(combined.getLeftExtrapolator().getClass(), FlatExtrapolator1D.class);
assertEquals(combined.getRightExtrapolator().getClass(), FlatExtrapolator1D.class);
}
@Test
public void testNullRightExtrapolatorName() {
final CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, Interpolator1DFactory.FLAT_EXTRAPOLATOR, null);
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertEquals(combined.getLeftExtrapolator().getClass(), FlatExtrapolator1D.class);
assertEquals(combined.getRightExtrapolator().getClass(), FlatExtrapolator1D.class);
}
@Test
public void testEmptyRightExtrapolatorName() {
final CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, Interpolator1DFactory.FLAT_EXTRAPOLATOR, "");
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertEquals(combined.getLeftExtrapolator().getClass(), FlatExtrapolator1D.class);
assertEquals(combined.getRightExtrapolator().getClass(), FlatExtrapolator1D.class);
}
@Test
public void testNullLeftAndRightExtrapolatorName() {
final CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, null, null);
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertNull(combined.getLeftExtrapolator());
assertNull(combined.getRightExtrapolator());
}
@Test
public void testEmptyLeftAndRightExtrapolatorName() {
final CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, "", "");
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertNull(combined.getLeftExtrapolator());
assertNull(combined.getRightExtrapolator());
}
@Test
public void testNoExtrapolator() {
CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR);
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertNull(combined.getLeftExtrapolator());
assertNull(combined.getRightExtrapolator());
combined = getInterpolator(Interpolator1DFactory.NATURAL_CUBIC_SPLINE);
assertEquals(combined.getInterpolator().getClass(), NaturalCubicSplineInterpolator1D.class);
}
@Test
public void testOneExtrapolator() {
CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, Interpolator1DFactory.FLAT_EXTRAPOLATOR);
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertEquals(combined.getLeftExtrapolator().getClass(), FlatExtrapolator1D.class);
assertEquals(combined.getRightExtrapolator().getClass(), FlatExtrapolator1D.class);
combined = getInterpolator(Interpolator1DFactory.NATURAL_CUBIC_SPLINE, Interpolator1DFactory.FLAT_EXTRAPOLATOR);
assertEquals(combined.getInterpolator().getClass(), NaturalCubicSplineInterpolator1D.class);
assertEquals(combined.getLeftExtrapolator().getClass(), FlatExtrapolator1D.class);
assertEquals(combined.getRightExtrapolator().getClass(), FlatExtrapolator1D.class);
}
@Test
public void testTwoExtrapolators1() {
CombinedInterpolatorExtrapolator combined = getInterpolator(Interpolator1DFactory.LINEAR, Interpolator1DFactory.FLAT_EXTRAPOLATOR,
Interpolator1DFactory.LINEAR_EXTRAPOLATOR);
assertEquals(combined.getInterpolator().getClass(), LinearInterpolator1D.class);
assertEquals(combined.getLeftExtrapolator().getClass(), FlatExtrapolator1D.class);
assertEquals(combined.getRightExtrapolator().getClass(), LinearExtrapolator1D.class);
combined = getInterpolator(Interpolator1DFactory.NATURAL_CUBIC_SPLINE, Interpolator1DFactory.FLAT_EXTRAPOLATOR, Interpolator1DFactory.LINEAR_EXTRAPOLATOR);
assertEquals(combined.getInterpolator().getClass(), NaturalCubicSplineInterpolator1D.class);
assertEquals(combined.getLeftExtrapolator().getClass(), FlatExtrapolator1D.class);
assertEquals(combined.getRightExtrapolator().getClass(), LinearExtrapolator1D.class);
}
@Test
public void testTwoExtrapolators2() {
Interpolator1D interp = new ProductPiecewisePolynomialInterpolator1D(new NaturalSplineInterpolator());
CombinedInterpolatorExtrapolator combined = new CombinedInterpolatorExtrapolator(interp,
new FlatExtrapolator1D(), new ReciprocalExtrapolator1D(interp));
assertEquals(ProductPiecewisePolynomialInterpolator1D.class, combined.getInterpolator().getClass());
assertEquals(FlatExtrapolator1D.class, combined.getLeftExtrapolator().getClass());
assertEquals(ReciprocalExtrapolator1D.class, combined.getRightExtrapolator().getClass());
combined = CombinedInterpolatorExtrapolatorFactory.getInterpolator(
Interpolator1DFactory.PRODUCT_NATURAL_CUBIC, Interpolator1DFactory.FLAT_EXTRAPOLATOR,
Interpolator1DFactory.RECIPROCAL_EXTRAPOLATOR);
assertEquals(ProductPiecewisePolynomialInterpolator1D.class, combined.getInterpolator().getClass());
assertEquals(FlatExtrapolator1D.class, combined.getLeftExtrapolator().getClass());
assertEquals(ReciprocalExtrapolator1D.class, combined.getRightExtrapolator().getClass());
}
}