Skip to content

Commit 95a9333

Browse files
committed
Update
1 parent 91b653f commit 95a9333

File tree

1 file changed

+58
-9
lines changed

1 file changed

+58
-9
lines changed

test/Bridges/bridge_optimizer.jl

Lines changed: 58 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,7 @@ function test_double_deletion_scalar()
595595
@test !MOI.Bridges.is_bridged(model, b2.constraint)
596596
MOI.delete(model, x)
597597
@test !MOI.is_valid(model, x)
598+
@test MOI.is_empty(model)
598599
return
599600
end
600601

@@ -614,6 +615,7 @@ function test_double_deletion_vector()
614615
@test !MOI.Bridges.is_bridged(model, b2.constraint)
615616
MOI.delete(model, x)
616617
@test all(vi -> !MOI.is_valid(model, vi), x)
618+
@test MOI.is_empty(model)
617619
return
618620
end
619621

@@ -1464,7 +1466,7 @@ function test_BridgeRequiresFiniteDomainError()
14641466
end
14651467

14661468
MOI.Utilities.@model(
1467-
Model2817,
1469+
Model2817a,
14681470
(),
14691471
(),
14701472
(MOI.Nonnegatives,),
@@ -1476,19 +1478,26 @@ MOI.Utilities.@model(
14761478
);
14771479

14781480
function MOI.supports_constraint(
1479-
::Model2817,
1481+
::Model2817a,
14801482
::Type{MOI.VariableIndex},
14811483
::Type{S},
14821484
) where {S<:MOI.AbstractScalarSet}
14831485
return false
14841486
end
14851487

1486-
function test_issue_2817()
1487-
model = MOI.Bridges.full_bridge_optimizer(Model2817{Float64}(), Float64);
1488-
x, _ = MOI.add_constrained_variable(model, MOI.Interval(0.0, 1.0));
1488+
function test_issue_2817a()
1489+
inner = Model2817a{Float64}()
1490+
model = MOI.Bridges.full_bridge_optimizer(inner, Float64);
1491+
x, c = MOI.add_constrained_variable(model, MOI.Interval(0.0, 1.0));
1492+
@test isa(
1493+
model.constraint_map[c],
1494+
MOI.Bridges.Constraint.IntervalToHyperRectangleBridge,
1495+
)
14891496
MOI.delete(model, x)
14901497
@test !MOI.is_valid(model, x)
14911498
@test MOI.is_empty(model)
1499+
@test MOI.is_empty(inner)
1500+
@test isempty(model.constraint_map)
14921501
return
14931502
end
14941503

@@ -1513,11 +1522,51 @@ function MOI.supports_constraint(
15131522
end
15141523

15151524
function test_issue_2817b()
1516-
model = MOI.instantiate(Model2817b{Float64}; with_bridge_type = Float64)
1517-
y, _ = MOI.add_constrained_variables(model, MOI.Nonpositives(1))
1518-
MOI.delete(model, y)
1519-
@test !MOI.is_valid(model, y[1])
1525+
inner = Model2817b{Float64}()
1526+
model = MOI.Bridges.full_bridge_optimizer(inner, Float64);
1527+
x, c = MOI.add_constrained_variables(model, MOI.Nonpositives(1))
1528+
@test isa(model.constraint_map[c], MOI.Bridges.Constraint.ScalarizeBridge)
1529+
MOI.delete(model, x)
1530+
@test !MOI.is_valid(model, x[1])
1531+
@test MOI.is_empty(model)
1532+
@test MOI.is_empty(inner)
1533+
@test isempty(model.constraint_map)
1534+
return
1535+
end
1536+
1537+
MOI.Utilities.@model(
1538+
Model2817c,
1539+
(),
1540+
(MOI.GreaterThan, MOI.LessThan,),
1541+
(),
1542+
(),
1543+
(),
1544+
(MOI.ScalarAffineFunction,),
1545+
(),
1546+
()
1547+
);
1548+
1549+
function MOI.supports_constraint(
1550+
::Model2817c,
1551+
::Type{MOI.VariableIndex},
1552+
::Type{S},
1553+
) where {S<:Union{MOI.ZeroOne,MOI.Semiinteger,MOI.Semicontinuous}}
1554+
return false
1555+
end
1556+
1557+
function test_issue_2817c()
1558+
inner = Model2817c{Float64}()
1559+
model = MOI.Bridges.full_bridge_optimizer(inner, Float64);
1560+
x, c = MOI.add_constrained_variable(model, MOI.Semiinteger(2.0, 3.0))
1561+
@test isa(
1562+
model.constraint_map[c],
1563+
MOI.Bridges.Constraint.SemiToBinaryBridge,
1564+
)
1565+
MOI.delete(model, x)
1566+
@test !MOI.is_valid(model, x)
15201567
@test MOI.is_empty(model)
1568+
@test MOI.is_empty(inner)
1569+
@test isempty(model.constraint_map)
15211570
return
15221571
end
15231572

0 commit comments

Comments
 (0)