Skip to content

Commit 49180c6

Browse files
authored
Merge pull request #989 from henriquebecker91/hb/batch_delete_test
Tests for vector specialized version of MOI.delete
2 parents 2a86034 + 7f6d4cc commit 49180c6

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

src/Test/UnitTests/modifications.jl

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,4 +353,41 @@ function delete_variable_with_single_variable_obj(model::MOI.ModelLike,
353353
end
354354
modificationtests["delete_variable_with_single_variable_obj"] = delete_variable_with_single_variable_obj
355355

356+
"""
357+
delete_variables_in_a_batch(model::MOI.ModelLike, config::TestConfig)
358+
359+
Test deleting many variables in a batch (i.e. using the delete method which
360+
takes a vector of variable references). If `config.solve=true` confirm that it
361+
solves correctly.
362+
"""
363+
function delete_variables_in_a_batch(model::MOI.ModelLike,
364+
config::TestConfig)
365+
MOI.empty!(model)
366+
@test MOI.is_empty(model)
367+
MOIU.loadfromstring!(model,"""
368+
variables: x, y, z
369+
minobjective: 1.0 * x + 2.0 * y + 3.0 * z
370+
c1: x >= 1.0
371+
c2: y >= 1.0
372+
c3: z >= 1.0
373+
""")
374+
x, y, z = MOI.get(model, MOI.ListOfVariableIndices())
375+
@test MOI.is_valid(model, x)
376+
@test MOI.is_valid(model, y)
377+
@test MOI.is_valid(model, z)
378+
if config.solve
379+
MOI.optimize!(model)
380+
@test MOI.get(model, MOI.ObjectiveValue()) == 6.0
381+
end
382+
MOI.delete(model, [x, z])
383+
@test !MOI.is_valid(model, x)
384+
@test MOI.is_valid(model, y)
385+
@test !MOI.is_valid(model, z)
386+
if config.solve
387+
MOI.optimize!(model)
388+
@test MOI.get(model, MOI.ObjectiveValue()) == 2.0
389+
end
390+
end
391+
modificationtests["delete_variables_in_a_batch"] = delete_variables_in_a_batch
392+
356393
@moitestset modification

test/Test/unit.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,19 @@ end
398398
# `UniversalFallback` needed for `MOI.Silent`
399399
mock = MOIU.MockOptimizer(MOIU.UniversalFallback(MOIU.Model{Float64}()))
400400
config = MOIT.TestConfig()
401+
@testset "delete_variables_in_a_batch" begin
402+
MOIU.set_mock_optimize!(mock,
403+
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock,
404+
MOI.OPTIMAL, (MOI.FEASIBLE_POINT, [1.0, 1.0, 1.0]),
405+
MOI.FEASIBLE_POINT
406+
),
407+
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock,
408+
MOI.OPTIMAL, (MOI.FEASIBLE_POINT, [1.0]),
409+
MOI.FEASIBLE_POINT
410+
)
411+
)
412+
MOIT.delete_variables_in_a_batch(mock, config)
413+
end
401414
@testset "solve_set_singlevariable_lessthan" begin
402415
MOIU.set_mock_optimize!(mock,
403416
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock,

0 commit comments

Comments
 (0)