/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.math.impl.minimization;
import static org.testng.AssertJUnit.assertEquals;
import java.util.function.Function;
import org.testng.Assert;
/**
* Abstract test.
*/
public abstract class Minimizer1DTestCase {
private static final double EPS = 1e-5;
private static final Function<Double, Double> QUADRATIC = new Function<Double, Double>() {
@Override
public Double apply(final Double x) {
return x * x + 7 * x + 12;
}
};
private static final Function<Double, Double> QUINTIC = new Function<Double, Double>() {
@Override
public Double apply(final Double x) {
return 1 + x * (-3 + x * (-9 + x * (-1 + x * (4 + x))));
}
};
public void assertInputs(final ScalarMinimizer minimizer) {
try {
minimizer.minimize(null, 0.0, 2., 3.);
Assert.fail();
} catch (final IllegalArgumentException e) {
// Expected
}
}
public void assertMinimizer(final ScalarMinimizer minimizer) {
double result = minimizer.minimize(QUADRATIC, 0.0, -10., 10.);
assertEquals(-3.5, result, EPS);
result = minimizer.minimize(QUINTIC, 0.0, 0.5, 2.);
assertEquals(1.06154, result, EPS);
}
}