public void ConstructorTest6()
{
var constraints = new[]
{
new NonlinearConstraint(2, x => 1.0 - x[0] * x[0] - x[1] * x[1]),
new NonlinearConstraint(2, x => 1.0 - x[0] * x[0] - x[1] * x[1] >= 0),
new NonlinearConstraint(2, x => -x[0] * x[0] - x[1] * x[1] >= -1.0),
new NonlinearConstraint(2, x => -(-x[0] * x[0] - x[1] * x[1]) <= 1.0),
};
Assert.AreEqual(ConstraintType.GreaterThanOrEqualTo, constraints[0].ShouldBe);
Assert.AreEqual(ConstraintType.GreaterThanOrEqualTo, constraints[1].ShouldBe);
Assert.AreEqual(ConstraintType.GreaterThanOrEqualTo, constraints[2].ShouldBe);
Assert.AreEqual(ConstraintType.LesserThanOrEqualTo, constraints[3].ShouldBe);
Assert.AreEqual(0.0, constraints[0].Value);
Assert.AreEqual(0.0, constraints[1].Value);
Assert.AreEqual(-1.0, constraints[2].Value);
Assert.AreEqual(1.0, constraints[3].Value);
foreach (var c1 in constraints)
{
double v1 = c1.GetViolation(new double[] { 4, 2 });
foreach (var c2 in constraints)
{
double v2 = c2.GetViolation(new double[] { 4, 2 });
Assert.AreEqual(v1, v2);
}
}
}