Skip to content

Commit e1aecd6

Browse files
authored
[Utilities] test pass_nonvariable_constraints (#2663)
1 parent 0c9ba0f commit e1aecd6

File tree

5 files changed

+24
-10
lines changed

5 files changed

+24
-10
lines changed

src/Bridges/bridge_optimizer.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,12 +407,13 @@ function MOI.Utilities.pass_nonvariable_constraints(
407407
if Variable.has_bridges(Variable.bridges(dest))
408408
# The functions may contained bridged variables which needs to be
409409
# substituted so we use the fallback.
410-
return MOI.Utilities.pass_nonvariable_constraints_fallback(
410+
MOI.Utilities.pass_nonvariable_constraints_fallback(
411411
dest,
412412
src,
413413
idxmap,
414414
constraint_types,
415415
)
416+
return
416417
end
417418
not_bridged_types = eltype(constraint_types)[]
418419
bridged_types = eltype(constraint_types)[]

src/Utilities/cachingoptimizer.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,13 +264,16 @@ function pass_nonvariable_constraints(
264264
idxmap::IndexMap,
265265
constraint_types,
266266
)
267-
dest.state == ATTACHED_OPTIMIZER && reset_optimizer(dest)
268-
return pass_nonvariable_constraints(
267+
# This method gets called during default_copy_to, so the dest cannot be
268+
# attached at that point.
269+
@assert dest.state != ATTACHED_OPTIMIZER
270+
pass_nonvariable_constraints(
269271
dest.model_cache,
270272
src,
271273
idxmap,
272274
constraint_types,
273275
)
276+
return
274277
end
275278

276279
function final_touch(m::CachingOptimizer, index_map)

src/Utilities/model.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -608,12 +608,13 @@ function pass_nonvariable_constraints(
608608
idxmap::IndexMap,
609609
constraint_types,
610610
)
611-
return pass_nonvariable_constraints(
611+
pass_nonvariable_constraints(
612612
dest.constraints,
613613
src,
614614
idxmap,
615615
constraint_types,
616616
)
617+
return
617618
end
618619

619620
# Macro to generate Model

src/Utilities/universalfallback.jl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,8 @@ function pass_nonvariable_constraints(
9393
end
9494
end
9595
pass_nonvariable_constraints(dest.model, src, idxmap, supported_types)
96-
return pass_nonvariable_constraints_fallback(
97-
dest,
98-
src,
99-
idxmap,
100-
unsupported_types,
101-
)
96+
pass_nonvariable_constraints_fallback(dest, src, idxmap, unsupported_types)
97+
return
10298
end
10399

104100
function MOI.copy_to(dest::UniversalFallback, src::MOI.ModelLike)

test/Utilities/cachingoptimizer.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,6 +1390,19 @@ function test_delete_not_allowed()
13901390
return
13911391
end
13921392

1393+
function test_pass_nonvariable_constraints()
1394+
cache = MOI.Utilities.Model{Float64}()
1395+
optimizer = MOI.Utilities.MockOptimizer(MOI.Utilities.Model{Float64}())
1396+
dest = MOI.Utilities.CachingOptimizer(cache, optimizer)
1397+
MOI.Utilities.attach_optimizer(dest)
1398+
src = MOI.Utilities.Model{Float64}()
1399+
x = MOI.add_variable(src)
1400+
MOI.add_constraint(src, 1.0 * x, MOI.GreaterThan(1.0))
1401+
index_map = MOI.Utilities.default_copy_to(dest, src)
1402+
@test sprint(print, dest) == sprint(print, src)
1403+
return
1404+
end
1405+
13931406
end # module
13941407

13951408
TestCachingOptimizer.runtests()

0 commit comments

Comments
 (0)