diff --git a/src/MOI_wrapper.jl b/src/MOI_wrapper.jl index 7517887..6058b87 100644 --- a/src/MOI_wrapper.jl +++ b/src/MOI_wrapper.jl @@ -467,20 +467,11 @@ function _dual_status(term::MOI.TerminationStatusCode) return term end -function MOI.get(optimizer::DualOptimizer, ::MOI.ObjectiveValue) - return MOI.get(optimizer.dual_problem.dual_model, MOI.DualObjectiveValue()) -end - -function MOI.get(optimizer::DualOptimizer, ::MOI.DualObjectiveValue) - return MOI.get(optimizer.dual_problem.dual_model, MOI.ObjectiveValue()) -end - -function MOI.get(optimizer::DualOptimizer, ::MOI.PrimalStatus) - return MOI.get(optimizer.dual_problem.dual_model, MOI.DualStatus()) -end - -function MOI.get(optimizer::DualOptimizer, ::MOI.DualStatus) - return MOI.get(optimizer.dual_problem.dual_model, MOI.PrimalStatus()) +function MOI.supports( + optimizer::DualOptimizer, + attr::MOI.AbstractOptimizerAttribute, +) + return MOI.supports(optimizer.dual_problem.dual_model, attr) end function MOI.set( @@ -491,9 +482,14 @@ function MOI.set( return MOI.set(optimizer.dual_problem.dual_model, attr, value) end -function MOI.get( - optimizer::DualOptimizer, - attr::Union{MOI.AbstractModelAttribute,MOI.AbstractOptimizerAttribute}, -) +function MOI.get(optimizer::DualOptimizer, attr::MOI.AbstractOptimizerAttribute) + return MOI.get(optimizer.dual_problem.dual_model, attr) +end + +# For now we don't support setting arbitrary AbstractModelAttribute because +# we don't know if they need to be modified via the dualization. One example +# would be `MOI.set(model, MOI.ObjectiveFunction{F}(), f)`. We currently +# don't support the incremental interface. +function MOI.get(optimizer::DualOptimizer, attr::MOI.AbstractModelAttribute) return MOI.get(optimizer.dual_problem.dual_model, attr) end diff --git a/test/Tests/test_MOI_wrapper.jl b/test/Tests/test_MOI_wrapper.jl index d1831a7..32a9161 100644 --- a/test/Tests/test_MOI_wrapper.jl +++ b/test/Tests/test_MOI_wrapper.jl @@ -78,6 +78,7 @@ @testset "attributes" begin for optimizer in [dual_conic_optimizer; dual_linear_optimizer] + @test MOI.supports(optimizer, MOI.Silent()) before = MOI.get(optimizer, MOI.Silent()) MOI.set(optimizer, MOI.Silent(), !before) @test MOI.get(optimizer, MOI.Silent()) == !before