Skip to content

Commit ea68933

Browse files
authored
Implement supports_add_constrained_variable for MockOptimizer (#1164)
1 parent 584659d commit ea68933

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

src/Utilities/mockoptimizer.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,11 @@ end
535535
# TODO: transform
536536

537537
MOI.supports_constraint(mock::MockOptimizer, F::Type{<:MOI.AbstractFunction}, S::Type{<:MOI.AbstractSet}) = MOI.supports_constraint(mock.inner_model, F, S)
538+
MOI.supports_add_constrained_variable(mock::MockOptimizer, S::Type{<:MOI.AbstractScalarSet}) = MOI.supports_add_constrained_variable(mock.inner_model, S)
539+
MOI.supports_add_constrained_variables(mock::MockOptimizer, S::Type{<:MOI.AbstractVectorSet}) = MOI.supports_add_constrained_variables(mock.inner_model, S)
540+
# Add this method to avoid ambiguity
541+
MOI.supports_add_constrained_variables(mock::MockOptimizer, ::Type{MOI.Reals}) = MOI.supports_add_constrained_variables(mock.inner_model, MOI.Reals)
542+
538543
function MOI.copy_to(mock::MockOptimizer, src::MOI.ModelLike; kws...)
539544
automatic_copy_to(mock, src; kws...)
540545
end

test/Utilities/mockoptimizer.jl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,22 @@ end
1919
MOIT.nametest(MOIU.MockOptimizer(MOIU.Model{Float64}()))
2020
end
2121

22+
struct NoFreeModel <: MOI.ModelLike end
23+
MOI.supports_add_constrained_variables(::NoFreeModel, ::Type{MOI.Reals}) = false
24+
25+
@testset "supports_add_constrained_variable" begin
26+
optimizer = MOIU.MockOptimizer(MOIU.Model{Float64}())
27+
@test MOI.supports_add_constrained_variable(optimizer, MOI.GreaterThan{Float64})
28+
@test !MOI.supports_add_constrained_variable(optimizer, MOIT.UnknownScalarSet{Float64})
29+
@test MOI.supports_add_constrained_variables(optimizer, MOI.Nonnegatives)
30+
@test !MOI.supports_add_constrained_variables(optimizer, MOIT.UnknownVectorSet)
31+
32+
nofree_optimizer = MOIU.MockOptimizer(NoFreeModel())
33+
@test !MOI.supports_add_constrained_variable(nofree_optimizer, MOI.GreaterThan{Float64})
34+
@test !MOI.supports_add_constrained_variables(nofree_optimizer, MOI.Nonnegatives)
35+
@test !MOI.supports_add_constrained_variables(nofree_optimizer, MOI.Reals)
36+
end
37+
2238
@testset "Optimizer attributes" begin
2339
optimizer = MOIU.MockOptimizer(MOIU.Model{Float64}())
2440
@test MOI.supports(optimizer, MOIU.MockModelAttribute())

0 commit comments

Comments
 (0)