/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.model.finitedifference;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import java.util.Arrays;
import org.testng.annotations.Test;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class MeshingTest {
protected void testMesh(final MeshingFunction mesh, final double[] fixedPoints) {
testMesh(mesh, fixedPoints, 0.0, 1.0);
}
protected void testMesh(final MeshingFunction mesh, final double[] fixedPoints, final double l, final double r) {
final int n = mesh.getNumberOfPoints();
final double[] y = new double[n];
for (int ii = 0; ii < n; ii++) {
y[ii] = mesh.evaluate(ii);
}
assertEquals(l, y[0], 1e-18);
assertEquals(r, y[n - 1], 1e-18);
for (int ii = 1; ii < n; ii++) {
assertTrue("points are not assending", y[ii] > y[ii - 1]);
}
if (fixedPoints != null) {
final int m = fixedPoints.length;
for (int ii = 0; ii < m; ii++) {
int index = Arrays.binarySearch(y, fixedPoints[ii]);
assertTrue("fixed point not found", index > 0 && index < n - 1);
}
}
}
}