diff --git a/src/Bridges/Constraint/bridges/ScalarSlackBridge.jl b/src/Bridges/Constraint/bridges/ScalarSlackBridge.jl index fd7d46ae17..da0a3fdb3e 100644 --- a/src/Bridges/Constraint/bridges/ScalarSlackBridge.jl +++ b/src/Bridges/Constraint/bridges/ScalarSlackBridge.jl @@ -301,24 +301,24 @@ MOI.get(b::ScalarSlackBridge, ::MOI.ListOfVariableIndices) = [b.slack] function MOI.get( model::MOI.ModelLike, - ::MOI.ConstraintBasisStatus, + attr::MOI.ConstraintBasisStatus, bridge::ScalarSlackBridge{T,F,S}, ) where {T,F,S<:MOI.Interval} return MOI.get( model, - MOI.VariableBasisStatus(), + MOI.VariableBasisStatus(attr.result_index), MOI.VariableIndex(bridge.slack_in_set.value), ) end function MOI.get( model::MOI.ModelLike, - ::MOI.ConstraintBasisStatus, + attr::MOI.ConstraintBasisStatus, bridge::ScalarSlackBridge, ) status = MOI.get( model, - MOI.VariableBasisStatus(), + MOI.VariableBasisStatus(attr.result_index), MOI.VariableIndex(bridge.slack_in_set.value), ) if status == MOI.NONBASIC_AT_LOWER || status == MOI.NONBASIC_AT_UPPER diff --git a/test/Bridges/Constraint/test_ScalarSlackBridge.jl b/test/Bridges/Constraint/test_ScalarSlackBridge.jl index eb5a932fb1..2f81061963 100644 --- a/test/Bridges/Constraint/test_ScalarSlackBridge.jl +++ b/test/Bridges/Constraint/test_ScalarSlackBridge.jl @@ -419,12 +419,20 @@ function test_basis_status() x = MOI.add_variable(model) c = MOI.add_constraint(model, 1.0 * x, MOI.GreaterThan(1.0)) y = MOI.get(inner, MOI.ListOfVariableIndices()) - MOI.set.(inner, MOI.VariableBasisStatus(), y, MOI.BASIC) - @test MOI.get(model, MOI.ConstraintBasisStatus(), c) == MOI.BASIC d = MOI.add_constraint(model, 1.0 * x, MOI.Interval(1.0, 2.0)) z = last(MOI.get(inner, MOI.ListOfVariableIndices())) + MOI.set(inner, MOI.TerminationStatus(), MOI.OPTIMAL) + MOI.set(inner, MOI.ResultCount(), 2) + MOI.set(inner, MOI.PrimalStatus(1), MOI.FEASIBLE_POINT) + MOI.set(inner, MOI.PrimalStatus(2), MOI.FEASIBLE_POINT) + MOI.set.(inner, MOI.VariableBasisStatus(), y, MOI.BASIC) MOI.set(inner, MOI.VariableBasisStatus(), z, MOI.SUPER_BASIC) + MOI.set.(inner, MOI.VariableBasisStatus(2), y, MOI.SUPER_BASIC) + MOI.set(inner, MOI.VariableBasisStatus(2), z, MOI.BASIC) + @test MOI.get(model, MOI.ConstraintBasisStatus(), c) == MOI.BASIC @test MOI.get(model, MOI.ConstraintBasisStatus(), d) == MOI.SUPER_BASIC + @test MOI.get(model, MOI.ConstraintBasisStatus(2), c) == MOI.SUPER_BASIC + @test MOI.get(model, MOI.ConstraintBasisStatus(2), d) == MOI.BASIC return end