/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.math.impl.interpolation;
import static org.testng.AssertJUnit.assertEquals;
import org.testng.annotations.Test;
import org.testng.internal.junit.ArrayAsserts;
/**
*
*/
@Test
public class BasisFunctionKnotsTest {
private static final double[] KNOTS;
private static final double[] WRONG_ORDER_KNOTS;
static {
final int n = 10;
KNOTS = new double[n + 1];
for (int i = 0; i < n + 1; i++) {
KNOTS[i] = 0 + i * 1.0;
}
WRONG_ORDER_KNOTS = KNOTS.clone();
double a = WRONG_ORDER_KNOTS[6];
WRONG_ORDER_KNOTS[6] = WRONG_ORDER_KNOTS[4];
WRONG_ORDER_KNOTS[4] = a;
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullKnots() {
BasisFunctionKnots.fromKnots(null, 2);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNullInternalKnots() {
BasisFunctionKnots.fromInternalKnots(null, 2);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNegDegree() {
BasisFunctionKnots.fromKnots(KNOTS, -1);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNegDegree2() {
BasisFunctionKnots.fromInternalKnots(KNOTS, -1);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongOrderUniform() {
BasisFunctionKnots.fromUniform(2.0, 1.0, 10, 3);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongOrderKnots() {
BasisFunctionKnots.fromKnots(WRONG_ORDER_KNOTS, 3);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testWrongOrderInternalKnots() {
BasisFunctionKnots.fromInternalKnots(WRONG_ORDER_KNOTS, 3);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testDegreeToHigh1() {
BasisFunctionKnots.fromUniform(0.0, 10.0, 11, 11);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testDegreeToHigh2() {
BasisFunctionKnots.fromInternalKnots(KNOTS, 11);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testDegreeToHigh3() {
BasisFunctionKnots.fromKnots(KNOTS, 11);
}
@Test
public void testUniform() {
BasisFunctionKnots knots = BasisFunctionKnots.fromUniform(1.0, 2.0, 10, 3);
assertEquals(3, knots.getDegree());
assertEquals(16, knots.getNumKnots());
assertEquals(12, knots.getNumSplines());
}
@Test
public void testInternalKnots() {
BasisFunctionKnots knots = BasisFunctionKnots.fromInternalKnots(KNOTS, 2);
assertEquals(2, knots.getDegree());
assertEquals(15, knots.getNumKnots());
assertEquals(12, knots.getNumSplines());
}
@Test
public void testKnots() {
BasisFunctionKnots knots = BasisFunctionKnots.fromKnots(KNOTS, 3);
assertEquals(3, knots.getDegree());
assertEquals(11, knots.getNumKnots());
assertEquals(7, knots.getNumSplines());
ArrayAsserts.assertArrayEquals(KNOTS, knots.getKnots(), 1e-15);
}
}