@@ -32,7 +32,8 @@ MOI.is_set_by_optimize(::UnknownConstraintAttribute) = true
3232# Test deletion of bridge
3333function test_delete_bridge (m:: MOIB.AbstractBridgeOptimizer ,
3434 ci:: MOI.ConstraintIndex{F, S} , nvars:: Int ,
35- nocs:: Tuple ) where {F, S}
35+ nocs:: Tuple ; used_bridges = 1 ) where {F, S}
36+ num_bridges = length (m. bridges)
3637 @test MOI. get (m, MOI. NumberOfVariables ()) == nvars
3738 test_noc (m, F, S, 1 )
3839 for noc in nocs
@@ -47,7 +48,7 @@ function test_delete_bridge(m::MOIB.AbstractBridgeOptimizer,
4748 @test err. index == ci
4849 end
4950 @test ! MOI. is_valid (m, ci)
50- @test isempty (m. bridges)
51+ @test length (m. bridges) == num_bridges - used_bridges
5152 test_noc (m, F, S, 0 )
5253 # As the bridge has been removed, if the constraints it has created where not removed, it wouldn't be there to decrease this counter anymore
5354 @test MOI. get (m, MOI. NumberOfVariables ()) == nvars
346347 ci = first (MOI. get (full_bridged_mock, MOI. ListOfConstraintIndices {MOI.VectorAffineFunction{Float64}, MOI.RootDetConeTriangle} ()))
347348 test_delete_bridge (full_bridged_mock, ci, 4 , ((MOI. VectorAffineFunction{Float64}, MOI. RotatedSecondOrderCone, 0 ),
348349 (MOI. VectorAffineFunction{Float64}, MOI. GeometricMeanCone, 0 ),
349- (MOI. VectorAffineFunction{Float64}, MOI. PositiveSemidefiniteConeTriangle, 0 )))
350-
350+ (MOI. VectorAffineFunction{Float64}, MOI. PositiveSemidefiniteConeTriangle, 0 )),
351+ used_bridges = 3 )
351352 end
352353
353354 @testset " Continuous Linear" begin
466467 MOI. Nonnegatives, 0 ),))
467468 end
468469
470+ @testset " Scalarize" begin
471+ bridged_mock = MOIB. Scalarize {Float64} (mock)
472+ # VectorOfVariables-in-Nonnegatives
473+ # VectorAffineFunction-in-Zeros
474+ mock. optimize! = (mock:: MOIU.MockOptimizer ) -> MOIU. mock_optimize! (mock, [1.0 , 0.0 , 2.0 ],
475+ (MOI. ScalarAffineFunction{Float64}, MOI. EqualTo{Float64}) => [- 3 , - 1 ])
476+ MOIT. lin1vtest (bridged_mock, config)
477+ ci = first (MOI. get (bridged_mock, MOI. ListOfConstraintIndices {MOI.VectorAffineFunction{Float64}, MOI.Zeros} ()))
478+ test_delete_bridge (bridged_mock, ci, 3 ,
479+ ((MOI. ScalarAffineFunction{Float64}, MOI. EqualTo{Float64}, 0 ),
480+ (MOI. SingleVariable, MOI. GreaterThan{Float64}, 0 )))
481+ ci = first (MOI. get (bridged_mock, MOI. ListOfConstraintIndices {MOI.VectorOfVariables, MOI.Nonnegatives} ()))
482+ test_delete_bridge (bridged_mock, ci, 3 ,
483+ ((MOI. ScalarAffineFunction{Float64}, MOI. EqualTo{Float64}, 0 ),
484+ (MOI. SingleVariable, MOI. GreaterThan{Float64}, 0 )))
485+ # VectorAffineFunction-in-Nonnegatives
486+ # VectorAffineFunction-in-Zeros
487+ mock. optimize! = (mock:: MOIU.MockOptimizer ) -> MOIU. mock_optimize! (mock, [1.0 , 0.0 , 2.0 ],
488+ (MOI. ScalarAffineFunction{Float64}, MOI. GreaterThan{Float64}) => [0 , 2 , 0 ],
489+ (MOI. ScalarAffineFunction{Float64}, MOI. EqualTo{Float64}) => [- 3 , - 1 ])
490+ MOIT. lin1ftest (bridged_mock, config)
491+ ci = first (MOI. get (bridged_mock, MOI. ListOfConstraintIndices {MOI.VectorAffineFunction{Float64}, MOI.Zeros} ()))
492+ test_delete_bridge (bridged_mock, ci, 3 ,
493+ ((MOI. ScalarAffineFunction{Float64}, MOI. EqualTo{Float64}, 0 ),
494+ (MOI. ScalarAffineFunction{Float64}, MOI. GreaterThan{Float64}, 0 )))
495+ ci = first (MOI. get (bridged_mock, MOI. ListOfConstraintIndices {MOI.VectorAffineFunction{Float64}, MOI.Nonnegatives} ()))
496+ test_delete_bridge (bridged_mock, ci, 3 ,
497+ ((MOI. ScalarAffineFunction{Float64}, MOI. EqualTo{Float64}, 0 ),
498+ (MOI. ScalarAffineFunction{Float64}, MOI. GreaterThan{Float64}, 0 )))
499+ # VectorOfVariables-in-Nonnegatives
500+ # VectorOfVariables-in-Nonpositives
501+ # VectorOfVariables-in-Zeros
502+ # VectorAffineFunction-in-Zeros
503+ mock. optimize! = (mock:: MOIU.MockOptimizer ) -> MOIU. mock_optimize! (mock, [- 4 , - 3 , 16 , 0 ],
504+ (MOI. ScalarAffineFunction{Float64}, MOI. EqualTo{Float64}) => [7 , 2 , - 4 ])
505+ MOIT. lin2vtest (bridged_mock, config)
506+ # VectorAffineFunction-in-Nonnegatives
507+ # VectorAffineFunction-in-Nonpositives
508+ # VectorAffineFunction-in-Zeros
509+ mock. optimize! = (mock:: MOIU.MockOptimizer ) -> MOIU. mock_optimize! (mock, [- 4 , - 3 , 16 , 0 ],
510+ (MOI. ScalarAffineFunction{Float64}, MOI. GreaterThan{Float64}) => [0 ],
511+ (MOI. ScalarAffineFunction{Float64}, MOI. LessThan{Float64}) => [0 ],
512+ (MOI. ScalarAffineFunction{Float64}, MOI. EqualTo{Float64}) => [7 , 2 , - 4 , 7 ])
513+ MOIT. lin2ftest (bridged_mock, config)
514+ end
515+
469516 @testset " Vectorize" begin
470517 bridged_mock = MOIB. Vectorize {Float64} (mock)
471518
0 commit comments