Skip to content

Commit 899fd5a

Browse files
authored
[Test] improve code coverage (#2648)
1 parent 06350f0 commit 899fd5a

File tree

3 files changed

+43
-44
lines changed

3 files changed

+43
-44
lines changed

src/Test/test_model.jl

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -802,17 +802,16 @@ function test_model_LowerBoundAlreadySet(
802802
sets = [MOI.EqualTo(lb), MOI.Interval(lb, lb)]
803803
set2 = MOI.GreaterThan(lb)
804804
for set1 in sets
805-
if !MOI.supports_constraint(model, MOI.VariableIndex, typeof(set1))
806-
continue
805+
if MOI.supports_constraint(model, MOI.VariableIndex, typeof(set1))
806+
ci = MOI.add_constraint(model, x, set1)
807+
err = MOI.LowerBoundAlreadySet{typeof(set1),typeof(set2)}(x)
808+
@test_throws err MOI.add_constraint(model, x, set2)
809+
MOI.delete(model, ci)
810+
ci = MOI.add_constraint(model, x, set2)
811+
err = MOI.LowerBoundAlreadySet{typeof(set2),typeof(set1)}(x)
812+
@test_throws err MOI.add_constraint(model, x, set1)
813+
MOI.delete(model, ci)
807814
end
808-
ci = MOI.add_constraint(model, x, set1)
809-
err = MOI.LowerBoundAlreadySet{typeof(set1),typeof(set2)}(x)
810-
@test_throws err MOI.add_constraint(model, x, set2)
811-
MOI.delete(model, ci)
812-
ci = MOI.add_constraint(model, x, set2)
813-
err = MOI.LowerBoundAlreadySet{typeof(set2),typeof(set1)}(x)
814-
@test_throws err MOI.add_constraint(model, x, set1)
815-
MOI.delete(model, ci)
816815
end
817816
return
818817
end
@@ -836,17 +835,16 @@ function test_model_UpperBoundAlreadySet(
836835
sets = [MOI.EqualTo(ub), MOI.Interval(ub, ub)]
837836
set2 = MOI.LessThan(ub)
838837
for set1 in sets
839-
if !MOI.supports_constraint(model, MOI.VariableIndex, typeof(set1))
840-
continue
838+
if MOI.supports_constraint(model, MOI.VariableIndex, typeof(set1))
839+
ci = MOI.add_constraint(model, x, set1)
840+
err = MOI.UpperBoundAlreadySet{typeof(set1),typeof(set2)}(x)
841+
@test_throws err MOI.add_constraint(model, x, set2)
842+
MOI.delete(model, ci)
843+
ci = MOI.add_constraint(model, x, set2)
844+
err = MOI.UpperBoundAlreadySet{typeof(set2),typeof(set1)}(x)
845+
@test_throws err MOI.add_constraint(model, x, set1)
846+
MOI.delete(model, ci)
841847
end
842-
ci = MOI.add_constraint(model, x, set1)
843-
err = MOI.UpperBoundAlreadySet{typeof(set1),typeof(set2)}(x)
844-
@test_throws err MOI.add_constraint(model, x, set2)
845-
MOI.delete(model, ci)
846-
ci = MOI.add_constraint(model, x, set2)
847-
err = MOI.UpperBoundAlreadySet{typeof(set2),typeof(set1)}(x)
848-
@test_throws err MOI.add_constraint(model, x, set1)
849-
MOI.delete(model, ci)
850848
end
851849
return
852850
end

src/Test/test_solve.jl

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -437,9 +437,7 @@ function test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_EqualTo_upper(
437437
)
438438
MOI.optimize!(model)
439439
@test MOI.get(model, MOI.TerminationStatus()) == config.infeasible_status
440-
if MOI.get(model, MOI.DualStatus()) != MOI.INFEASIBILITY_CERTIFICATE
441-
return
442-
end
440+
@requires MOI.get(model, MOI.DualStatus()) == MOI.INFEASIBILITY_CERTIFICATE
443441
clb_dual = MOI.get.(model, MOI.ConstraintDual(), clb)
444442
c_dual = MOI.get(model, MOI.ConstraintDual(), c)
445443
@test clb_dual[1] > config.atol
@@ -491,9 +489,7 @@ function test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_EqualTo_lower(
491489
)
492490
MOI.optimize!(model)
493491
@test MOI.get(model, MOI.TerminationStatus()) == config.infeasible_status
494-
if MOI.get(model, MOI.DualStatus()) != MOI.INFEASIBILITY_CERTIFICATE
495-
return
496-
end
492+
@requires MOI.get(model, MOI.DualStatus()) == MOI.INFEASIBILITY_CERTIFICATE
497493
clb_dual = MOI.get.(model, MOI.ConstraintDual(), clb)
498494
c_dual = MOI.get(model, MOI.ConstraintDual(), c)
499495
@test clb_dual[1] > config.atol
@@ -544,9 +540,7 @@ function test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_LessThan(
544540
)
545541
MOI.optimize!(model)
546542
@test MOI.get(model, MOI.TerminationStatus()) == config.infeasible_status
547-
if MOI.get(model, MOI.DualStatus()) != MOI.INFEASIBILITY_CERTIFICATE
548-
return
549-
end
543+
@requires MOI.get(model, MOI.DualStatus()) == MOI.INFEASIBILITY_CERTIFICATE
550544
clb_dual = MOI.get.(model, MOI.ConstraintDual(), clb)
551545
c_dual = MOI.get(model, MOI.ConstraintDual(), c)
552546
@test clb_dual[1] > config.atol
@@ -598,9 +592,7 @@ function test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_GreaterThan(
598592
)
599593
MOI.optimize!(model)
600594
@test MOI.get(model, MOI.TerminationStatus()) == config.infeasible_status
601-
if MOI.get(model, MOI.DualStatus()) != MOI.INFEASIBILITY_CERTIFICATE
602-
return
603-
end
595+
@requires MOI.get(model, MOI.DualStatus()) == MOI.INFEASIBILITY_CERTIFICATE
604596
clb_dual = MOI.get.(model, MOI.ConstraintDual(), clb)
605597
c_dual = MOI.get(model, MOI.ConstraintDual(), c)
606598
@test clb_dual[1] > config.atol
@@ -652,9 +644,7 @@ function test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_Interval_upper(
652644
)
653645
MOI.optimize!(model)
654646
@test MOI.get(model, MOI.TerminationStatus()) == config.infeasible_status
655-
if MOI.get(model, MOI.DualStatus()) != MOI.INFEASIBILITY_CERTIFICATE
656-
return
657-
end
647+
@requires MOI.get(model, MOI.DualStatus()) == MOI.INFEASIBILITY_CERTIFICATE
658648
clb_dual = MOI.get.(model, MOI.ConstraintDual(), clb)
659649
c_dual = MOI.get(model, MOI.ConstraintDual(), c)
660650
@test clb_dual[1] > config.atol
@@ -706,9 +696,7 @@ function test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_Interval_lower(
706696
)
707697
MOI.optimize!(model)
708698
@test MOI.get(model, MOI.TerminationStatus()) == config.infeasible_status
709-
if MOI.get(model, MOI.DualStatus()) != MOI.INFEASIBILITY_CERTIFICATE
710-
return
711-
end
699+
@requires MOI.get(model, MOI.DualStatus()) == MOI.INFEASIBILITY_CERTIFICATE
712700
clb_dual = MOI.get.(model, MOI.ConstraintDual(), clb)
713701
c_dual = MOI.get(model, MOI.ConstraintDual(), c)
714702
@test clb_dual[1] > config.atol
@@ -760,9 +748,7 @@ function test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_VariableIndex_LessThan(
760748
)
761749
MOI.optimize!(model)
762750
@test MOI.get(model, MOI.TerminationStatus()) == config.infeasible_status
763-
if MOI.get(model, MOI.DualStatus()) != MOI.INFEASIBILITY_CERTIFICATE
764-
return
765-
end
751+
@requires MOI.get(model, MOI.DualStatus()) == MOI.INFEASIBILITY_CERTIFICATE
766752
clb_dual = MOI.get.(model, MOI.ConstraintDual(), clb)
767753
c_dual = MOI.get(model, MOI.ConstraintDual(), c)
768754
@test clb_dual[1] < -config.atol
@@ -818,9 +804,7 @@ function test_solve_DualStatus_INFEASIBILITY_CERTIFICATE_VariableIndex_LessThan_
818804
MOI.set(model, MOI.ObjectiveFunction{MOI.VariableIndex}(), x[1])
819805
MOI.optimize!(model)
820806
@test MOI.get(model, MOI.TerminationStatus()) == config.infeasible_status
821-
if MOI.get(model, MOI.DualStatus()) != MOI.INFEASIBILITY_CERTIFICATE
822-
return
823-
end
807+
@requires MOI.get(model, MOI.DualStatus()) == MOI.INFEASIBILITY_CERTIFICATE
824808
clb_dual = MOI.get.(model, MOI.ConstraintDual(), clb)
825809
c_dual = MOI.get(model, MOI.ConstraintDual(), c)
826810
@test clb_dual[1] < -config.atol

test/Utilities/mockoptimizer.jl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,23 @@ function test_delete_allowed_false()
241241
return
242242
end
243243

244+
function test_modify_not_allowed()
245+
model = MOI.Utilities.MockOptimizer(MOI.Utilities.Model{Float64}())
246+
config = MOI.Test.Config(
247+
exclude = Any[MOI.ScalarCoefficientChange, MOI.VectorConstantChange],
248+
)
249+
MOI.Test.runtests(
250+
model,
251+
config,
252+
include = [
253+
r"$test_linear_integration^",
254+
r"$test_linear_integration_modification^",
255+
r"$test_linear_VectorAffineFunction^",
256+
],
257+
)
258+
return
259+
end
260+
244261
end # module
245262

246263
TestMockOptimizer.runtests()

0 commit comments

Comments
 (0)