Skip to content
This repository was archived by the owner on Jun 14, 2020. It is now read-only.

Commit 1d814e3

Browse files
committed
Improve test coverage
1 parent aad7154 commit 1d814e3

File tree

2 files changed

+34
-17
lines changed

2 files changed

+34
-17
lines changed

src/mockoptimizer.jl

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ const SUPPORTED_CONSTRAINTS = [
137137
(LQOI.SinVar, LQOI.IV),
138138
(LQOI.SinVar, MOI.ZeroOne),
139139
(LQOI.SinVar, MOI.Integer),
140+
(LQOI.SinVar, MOI.Semiinteger{Float64}),
141+
(LQOI.SinVar, MOI.Semicontinuous{Float64}),
140142
(LQOI.VecVar, LQOI.SOS1),
141143
(LQOI.VecVar, LQOI.SOS2),
142144
(LQOI.VecVar, MOI.Nonnegatives),
@@ -542,19 +544,9 @@ function LQOI.delete_quadratic_constraints!(instance::MockLinQuadOptimizer, rowb
542544
end
543545
end
544546

545-
# TODO fix types
546-
function variabletype(::MockLinQuadOptimizer, typeval)
547-
if typeval == 'B'
548-
return 'B'
549-
elseif typeval == 'I'
550-
return 'I'
551-
else
552-
return 'C'
553-
end
554-
end
555547
function LQOI.change_variable_types!(instance::MockLinQuadOptimizer, colvec, typevec)
556548
for i in eachindex(colvec)
557-
instance.inner.vartype[colvec[i]] = variabletype(instance, typevec[i])
549+
instance.inner.vartype[colvec[i]] = typevec[i]
558550
end
559551
end
560552

test/runtests.jl

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,13 @@ end
144144

145145
MOIU.@model(ModelComplete,
146146
(MOI.ZeroOne, MOI.Integer),
147-
(MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval,
147+
(MOI.EqualTo, MOI.GreaterThan, MOI.LessThan, MOI.Interval,
148148
MOI.Semicontinuous, MOI.Semiinteger),
149-
(MOI.Reals, MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives,
150-
MOI.SecondOrderCone, MOI.RotatedSecondOrderCone, MOI.GeometricMeanCone,
151-
MOI.ExponentialCone, MOI.DualExponentialCone,
152-
MOI.PositiveSemidefiniteConeTriangle, MOI.PositiveSemidefiniteConeSquare,
153-
MOI.RootDetConeTriangle, MOI.RootDetConeSquare, MOI.LogDetConeTriangle,
149+
(MOI.Reals, MOI.Zeros, MOI.Nonnegatives, MOI.Nonpositives,
150+
MOI.SecondOrderCone, MOI.RotatedSecondOrderCone, MOI.GeometricMeanCone,
151+
MOI.ExponentialCone, MOI.DualExponentialCone,
152+
MOI.PositiveSemidefiniteConeTriangle, MOI.PositiveSemidefiniteConeSquare,
153+
MOI.RootDetConeTriangle, MOI.RootDetConeSquare, MOI.LogDetConeTriangle,
154154
MOI.LogDetConeSquare),
155155
(MOI.PowerCone, MOI.DualPowerCone, MOI.SOS1, MOI.SOS2),
156156
(MOI.SingleVariable,),
@@ -377,3 +377,28 @@ end
377377
objective_type_test(convert(MOI.ScalarAffineFunction{Float64}, f))
378378
objective_type_test(convert(MOI.ScalarQuadraticFunction{Float64}, f))
379379
end
380+
381+
@testset "SemiXXX variables" begin
382+
@testset "Semiinteger" begin
383+
model = LQOI.MockLinQuadOptimizer()
384+
x = MOI.add_variable(model)
385+
c = MOI.add_constraint(
386+
model, MOI.SingleVariable(x), MOI.Semiinteger(1.0, 4.5))
387+
@test model.inner.vartype[1] == Cchar('N')
388+
@test MOI.get(model, MOI.ConstraintSet(), c) == MOI.Semiinteger(1.0, 4.5)
389+
@test MOI.get(model, MOI.ConstraintFunction(), c) == MOI.SingleVariable(x)
390+
MOI.delete(model, c)
391+
@test model.inner.vartype[1] == Cchar('C')
392+
end
393+
@testset "Semicontinuous" begin
394+
model = LQOI.MockLinQuadOptimizer()
395+
x = MOI.add_variable(model)
396+
c = MOI.add_constraint(
397+
model, MOI.SingleVariable(x), MOI.Semicontinuous(1.0, 4.0))
398+
@test model.inner.vartype[1] == Cchar('S')
399+
@test MOI.get(model, MOI.ConstraintSet(), c) == MOI.Semicontinuous(1.0, 4.0)
400+
@test MOI.get(model, MOI.ConstraintFunction(), c) == MOI.SingleVariable(x)
401+
MOI.delete(model, c)
402+
@test model.inner.vartype[1] == Cchar('C')
403+
end
404+
end

0 commit comments

Comments
 (0)