Skip to content

Commit

Permalink
test bound set changes
Browse files Browse the repository at this point in the history
  • Loading branch information
rschwarz committed Jan 8, 2019
1 parent 9465c88 commit 6ad4371
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions test/MOI_additional.jl
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ function var_bounds(o::SCIP.Optimizer, vi::VI)
return MOI.get(o, MOI.ConstraintSet(), CI{SVF,MOI.Interval{Float64}}(vi.value))
end

function chg_bounds(o::SCIP.Optimizer, vi::VI, set::S) where S
ci = CI{SVF,S}(vi.value)
MOI.set(o, MOI.ConstraintSet(), ci, set)
return nothing
end

@testset "Binary variables and explicit bounds" begin
optimizer = SCIP.Optimizer()

Expand Down Expand Up @@ -132,3 +138,48 @@ end
lb = MOI.add_constraint(optimizer, x, MOI.GreaterThan(2.0))
@test_throws ErrorException ub = MOI.add_constraint(optimizer, x, MOI.LessThan(3.0))
end

@testset "Changing bounds for variable." begin
optimizer = SCIP.Optimizer()
inf = SCIP.SCIPinfinity(SCIP.scip(optimizer))

# change interval bounds
MOI.empty!(optimizer)
x = MOI.add_variable(optimizer)
b = MOI.add_constraint(optimizer, x, MOI.Interval(2.0, 3.0))
@test var_bounds(optimizer, x) == MOI.Interval(2.0, 3.0)
chg_bounds(optimizer, x, MOI.Interval(4.0, 5.0))
@test var_bounds(optimizer, x) == MOI.Interval(4.0, 5.0)

# change lower bound
MOI.empty!(optimizer)
x = MOI.add_variable(optimizer)
b = MOI.add_constraint(optimizer, x, MOI.GreaterThan(2.0))
@test var_bounds(optimizer, x) == MOI.Interval(2.0, inf)
chg_bounds(optimizer, x, MOI.GreaterThan(4.0))
@test var_bounds(optimizer, x) == MOI.Interval(4.0, inf)

# change upper bound
MOI.empty!(optimizer)
x = MOI.add_variable(optimizer)
b = MOI.add_constraint(optimizer, x, MOI.LessThan(3.0))
@test var_bounds(optimizer, x) == MOI.Interval(-inf, 3.0)
chg_bounds(optimizer, x, MOI.LessThan(5.0))
@test var_bounds(optimizer, x) == MOI.Interval(-inf, 5.0)

# change fixed value
MOI.empty!(optimizer)
x = MOI.add_variable(optimizer)
b = MOI.add_constraint(optimizer, x, MOI.EqualTo(2.5))
@test var_bounds(optimizer, x) == MOI.Interval(2.5, 2.5)
chg_bounds(optimizer, x, MOI.EqualTo(4.5))
@test var_bounds(optimizer, x) == MOI.Interval(4.5, 4.5)

# change mixed
MOI.empty!(optimizer)
x = MOI.add_variable(optimizer)
b = MOI.add_constraint(optimizer, x, MOI.GreaterThan(2.0))
@test var_bounds(optimizer, x) == MOI.Interval(2.0, inf)
chg_bounds(optimizer, x, MOI.LessThan(4.0))
@test var_bounds(optimizer, x) == MOI.Interval(-inf, 4.0)
end

0 comments on commit 6ad4371

Please sign in to comment.