@@ -242,65 +242,25 @@ function test_SemiToBinary()
242
242
end
243
243
244
244
"""
245
- Test an error is thrown if a bound is added _after_ the semi-xxx constraint.
245
+ test_lower_bound_already_set()
246
246
247
- Note that this means the error is thrown from `Bridges.final_touch`.
247
+ The second call to `add_constraint` is broken because it should throw:
248
+ ```julia
249
+ MOI.LowerBoundAlreadySet{
250
+ MOI.Semicontinuous{Float64},
251
+ MOI.GreaterThan{Float64},
252
+ }
253
+ ```
254
+ See MathOptInterface issue #1431.
248
255
"""
249
- function test_bounds_already_set_final_touch ()
250
- for set in [MOI. GreaterThan (0.0 ), MOI. EqualTo (1.4 ), MOI. Interval (0.0 , 2.0 )]
251
- model = MOI. Utilities. Model {Float64} ()
252
- bridged = MOI. Bridges. Constraint. SemiToBinary {Float64} (model)
253
- x = MOI. add_variable (bridged)
254
- semi_set = MOI. Semicontinuous (1.0 , 2.0 )
255
- MOI. add_constraint (bridged, x, semi_set)
256
- MOI. add_constraint (bridged, x, set)
257
- @test_throws (
258
- MOI. LowerBoundAlreadySet {typeof(semi_set),typeof(set)} (x),
259
- MOI. Bridges. final_touch (bridged),
260
- )
261
- end
262
- for set in [MOI. LessThan (2.0 )]
263
- model = MOI. Utilities. Model {Float64} ()
264
- bridged = MOI. Bridges. Constraint. SemiToBinary {Float64} (model)
265
- x = MOI. add_variable (bridged)
266
- semi_set = MOI. Semicontinuous (1.0 , 2.0 )
267
- MOI. add_constraint (bridged, x, semi_set)
268
- MOI. add_constraint (bridged, x, set)
269
- @test_throws (
270
- MOI. UpperBoundAlreadySet {typeof(semi_set),typeof(set)} (x),
271
- MOI. Bridges. final_touch (bridged),
272
- )
273
- end
274
- return
275
- end
276
-
277
- """
278
- Test an error is thrown if a bound exists prior to adding the semi-xxx
279
- constraint.
280
- """
281
- function test_bounds_already_set ()
282
- for set in [MOI. GreaterThan (0.0 ), MOI. EqualTo (1.4 ), MOI. Interval (0.0 , 2.0 )]
283
- model = MOI. Utilities. Model {Float64} ()
284
- bridged = MOI. Bridges. Constraint. SemiToBinary {Float64} (model)
285
- x = MOI. add_variable (bridged)
286
- semi_set = MOI. Semicontinuous (1.0 , 2.0 )
287
- MOI. add_constraint (bridged, x, set)
288
- @test_throws (
289
- MOI. LowerBoundAlreadySet {typeof(set),typeof(semi_set)} (x),
290
- MOI. add_constraint (bridged, x, semi_set),
291
- )
292
- end
293
- for set in [MOI. LessThan (2.0 )]
294
- model = MOI. Utilities. Model {Float64} ()
295
- bridged = MOI. Bridges. Constraint. SemiToBinary {Float64} (model)
296
- x = MOI. add_variable (bridged)
297
- semi_set = MOI. Semicontinuous (1.0 , 2.0 )
298
- MOI. add_constraint (bridged, x, set)
299
- @test_throws (
300
- MOI. UpperBoundAlreadySet {typeof(set),typeof(semi_set)} (x),
301
- MOI. add_constraint (bridged, x, semi_set)
302
- )
303
- end
256
+ function test_lower_bound_already_set ()
257
+ model = MOI. Utilities. Model {Float64} ()
258
+ bridged = MOI. Bridges. Constraint. SemiToBinary {Float64} (model)
259
+ x = MOI. add_variable (bridged)
260
+ MOI. add_constraint (bridged, x, MOI. Semicontinuous (1.0 , 2.0 ))
261
+ @test_broken (
262
+ MOI. add_constraint (bridged, x, MOI. GreaterThan (0.0 )) === nothing ,
263
+ )
304
264
return
305
265
end
306
266
0 commit comments