From a63747b8ee0d50aaf606be641732114ab9e1fcbb Mon Sep 17 00:00:00 2001 From: Shadi Akiki Date: Fri, 6 Nov 2020 18:34:08 +0200 Subject: [PATCH] tests: add unit test for add_constraint with input nan, for lower-bound already set, and for upper-bound already set --- src/Test/UnitTests/constraints.jl | 30 ++++++++++++++++++++++++++++++ test/Test/unit.jl | 5 +++++ 2 files changed, 35 insertions(+) diff --git a/src/Test/UnitTests/constraints.jl b/src/Test/UnitTests/constraints.jl index 74ac63813e..83991d4287 100644 --- a/src/Test/UnitTests/constraints.jl +++ b/src/Test/UnitTests/constraints.jl @@ -361,3 +361,33 @@ function solve_zero_one_with_bounds_3(model::MOI.ModelLike, config::TestConfig) end end unittests["solve_zero_one_with_bounds_3"] = solve_zero_one_with_bounds_3 + +# Taken from https://github.com/jump-dev/Ipopt.jl/pull/230/files# +""" + add_constraint_nan(model::MOI.ModelLike, config::TestConfig) + +Add a NaN constraint. This should throw a proper error message. +""" +function add_constraint_checks(model::MOI.ModelLike, config::TestConfig) + @testset "first isnan check" begin + MOI.empty!(model) + x = MOI.add_variable(model) + @test_throws ErrorException MOI.add_constraint(model, x, MOI.EqualTo(NaN)) + end + + @testset "first has_lower_bound check" begin + MOI.empty!(model) + x = MOI.add_variable(model) + MOI.add_constraint(model, x, MOI.GreaterThan(5.0)) + @test_throws MOI.LowerBoundAlreadySet MOI.add_constraint(model, x, MOI.EqualTo(5.0)) + end + + @testset "first has_upper_bound check" begin + MOI.empty!(model) + x = MOI.add_variable(model) + MOI.add_constraint(model, x, MOI.LessThan(5.0)) + @test_throws MOI.UpperBoundAlreadySet MOI.add_constraint(model, x, MOI.EqualTo(5.0)) + end +end +unittests["add_constraint_checks"] = add_constraint_checks + diff --git a/test/Test/unit.jl b/test/Test/unit.jl index 210286e130..24df99f48f 100644 --- a/test/Test/unit.jl +++ b/test/Test/unit.jl @@ -45,6 +45,7 @@ end "solve_zero_one_with_bounds_1", "solve_zero_one_with_bounds_2", "solve_zero_one_with_bounds_3", + "add_constraint_checks", "solve_unbounded_model", "solve_single_variable_dual_min", "solve_single_variable_dual_max", @@ -337,6 +338,10 @@ end MOIT.solve_zero_one_with_bounds_3(mock, config) end + @testset "add_constraint_checks" begin + MOIT.add_constraint_checks(mock, config) + end + @testset "solve_unbounded_model" begin MOIU.set_mock_optimize!(mock, (mock::MOIU.MockOptimizer) -> begin