diff --git a/src/Utilities/mockoptimizer.jl b/src/Utilities/mockoptimizer.jl index 5f73ba77fe..b3069707bb 100644 --- a/src/Utilities/mockoptimizer.jl +++ b/src/Utilities/mockoptimizer.jl @@ -535,6 +535,11 @@ end # TODO: transform MOI.supports_constraint(mock::MockOptimizer, F::Type{<:MOI.AbstractFunction}, S::Type{<:MOI.AbstractSet}) = MOI.supports_constraint(mock.inner_model, F, S) +MOI.supports_add_constrained_variable(mock::MockOptimizer, S::Type{<:MOI.AbstractScalarSet}) = MOI.supports_add_constrained_variable(mock.inner_model, S) +MOI.supports_add_constrained_variables(mock::MockOptimizer, S::Type{<:MOI.AbstractVectorSet}) = MOI.supports_add_constrained_variables(mock.inner_model, S) +# Add this method to avoid ambiguity +MOI.supports_add_constrained_variables(mock::MockOptimizer, ::Type{MOI.Reals}) = MOI.supports_add_constrained_variables(mock.inner_model, MOI.Reals) + function MOI.copy_to(mock::MockOptimizer, src::MOI.ModelLike; kws...) automatic_copy_to(mock, src; kws...) end diff --git a/test/Utilities/mockoptimizer.jl b/test/Utilities/mockoptimizer.jl index dd983cc5fd..9bf4371b4b 100644 --- a/test/Utilities/mockoptimizer.jl +++ b/test/Utilities/mockoptimizer.jl @@ -19,6 +19,22 @@ end MOIT.nametest(MOIU.MockOptimizer(MOIU.Model{Float64}())) end +struct NoFreeModel <: MOI.ModelLike end +MOI.supports_add_constrained_variables(::NoFreeModel, ::Type{MOI.Reals}) = false + +@testset "supports_add_constrained_variable" begin + optimizer = MOIU.MockOptimizer(MOIU.Model{Float64}()) + @test MOI.supports_add_constrained_variable(optimizer, MOI.GreaterThan{Float64}) + @test !MOI.supports_add_constrained_variable(optimizer, MOIT.UnknownScalarSet{Float64}) + @test MOI.supports_add_constrained_variables(optimizer, MOI.Nonnegatives) + @test !MOI.supports_add_constrained_variables(optimizer, MOIT.UnknownVectorSet) + + nofree_optimizer = MOIU.MockOptimizer(NoFreeModel()) + @test !MOI.supports_add_constrained_variable(nofree_optimizer, MOI.GreaterThan{Float64}) + @test !MOI.supports_add_constrained_variables(nofree_optimizer, MOI.Nonnegatives) + @test !MOI.supports_add_constrained_variables(nofree_optimizer, MOI.Reals) +end + @testset "Optimizer attributes" begin optimizer = MOIU.MockOptimizer(MOIU.Model{Float64}()) @test MOI.supports(optimizer, MOIU.MockModelAttribute())