Skip to content

Commit f275c7a

Browse files
committed
Create test_truefalse.jl
1 parent a829aef commit f275c7a

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

src/Test/test_truefalse.jl

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
function test_true(
2+
model::MOI.ModelLike,
3+
config::MOIT.Config{T},
4+
) where {T <: Real}
5+
@MOIT.requires MOI.supports_constraint(model, MOI.VariableIndex, MOI.Integer) # x1
6+
@MOIT.requires MOI.supports_constraint(model, MOI.VectorOfVariables, CP.IfThenElse{CP.True, MOI.EqualTo{T}, MOI.EqualTo{T}}) # c1
7+
8+
x1, _ = MOI.add_constrained_variable(model, MOI.Integer())
9+
10+
c1 = MOI.add_constraint(
11+
model,
12+
MOI.VectorOfVariables([x1, x1]),
13+
CP.IfThenElse(CP.True(), MOI.EqualTo(1), MOI.EqualTo(0)),
14+
)
15+
16+
@test MOI.is_valid(model, x1)
17+
@test MOI.is_valid(model, c1)
18+
19+
if MOIT._supports(config, MOI.optimize!)
20+
MOI.optimize!(model)
21+
@test MOI.get(model, MOI.TerminationStatus()) == MOI.OPTIMAL
22+
@test MOI.get(model, MOI.PrimalStatus()) == MOI.FEASIBLE_POINT
23+
24+
@test MOI.get(model, MOI.ResultCount()) >= 1
25+
@test MOI.get(model, MOI.VariablePrimal(), x1) == 1
26+
end
27+
end
28+
29+
function MOIT.setup_test(
30+
::typeof(test_true),
31+
mock::MOIU.MockOptimizer,
32+
::Config{T},
33+
) where {T <: Real}
34+
MOIU.set_mock_optimize!(
35+
mock,
36+
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, T[1]),
37+
)
38+
return
39+
end
40+
41+
function test_false(
42+
model::MOI.ModelLike,
43+
config::MOIT.Config{T},
44+
) where {T <: Real}
45+
@MOIT.requires MOI.supports_constraint(model, MOI.VariableIndex, MOI.Integer) # x1
46+
@MOIT.requires MOI.supports_constraint(model, MOI.VectorOfVariables, CP.IfThenElse{CP.False, MOI.EqualTo{T}, MOI.EqualTo{T}}) # c1
47+
48+
x1, _ = MOI.add_constrained_variable(model, MOI.Integer())
49+
50+
c1 = MOI.add_constraint(
51+
model,
52+
MOI.VectorOfVariables([x1, x1]),
53+
CP.IfThenElse(CP.False(), MOI.EqualTo(1), MOI.EqualTo(0)),
54+
)
55+
56+
@test MOI.is_valid(model, x1)
57+
@test MOI.is_valid(model, c1)
58+
59+
if MOIT._supports(config, MOI.optimize!)
60+
MOI.optimize!(model)
61+
@test MOI.get(model, MOI.TerminationStatus()) == MOI.OPTIMAL
62+
@test MOI.get(model, MOI.PrimalStatus()) == MOI.FEASIBLE_POINT
63+
64+
@test MOI.get(model, MOI.ResultCount()) >= 1
65+
@test MOI.get(model, MOI.VariablePrimal(), x1) == 0
66+
end
67+
end
68+
69+
function MOIT.setup_test(
70+
::typeof(test_false),
71+
mock::MOIU.MockOptimizer,
72+
::Config{T},
73+
) where {T <: Real}
74+
MOIU.set_mock_optimize!(
75+
mock,
76+
(mock::MOIU.MockOptimizer) -> MOIU.mock_optimize!(mock, T[0]),
77+
)
78+
return
79+
end

0 commit comments

Comments
 (0)