From b56932b6e1572f92b2113087d0cc5c5fed2242cf Mon Sep 17 00:00:00 2001 From: odow Date: Mon, 28 Feb 2022 15:18:41 +1300 Subject: [PATCH 1/3] [Bridges] fix UnsupportedAttribute in function_conversion.jl --- src/Bridges/Constraint/function_conversion.jl | 6 ++++-- test/Bridges/Constraint/functionize.jl | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Bridges/Constraint/function_conversion.jl b/src/Bridges/Constraint/function_conversion.jl index 184c9bccc7..5c4ec05cc3 100644 --- a/src/Bridges/Constraint/function_conversion.jl +++ b/src/Bridges/Constraint/function_conversion.jl @@ -16,7 +16,8 @@ function MOI.get( return MOI.get(model, attr, bridge.constraint) else throw( - ArgumentError( + MOI.UnsupportedAttribute( + attr, "Bridge of type `$(typeof(bridge))` does not support accessing the attribute `$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.", ), ) @@ -40,7 +41,8 @@ function MOI.set( ) if !invariant_under_function_conversion(attr) throw( - ArgumentError( + MOI.UnsupportedAttribute( + attr, "Bridge of type `$(typeof(bridge))` does not support setting the attribute `$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.", ), ) diff --git a/test/Bridges/Constraint/functionize.jl b/test/Bridges/Constraint/functionize.jl index 158b3651fa..c0a5a06ffb 100644 --- a/test/Bridges/Constraint/functionize.jl +++ b/test/Bridges/Constraint/functionize.jl @@ -206,6 +206,13 @@ function test_vector_functionize_lin1v() return end +function test_unsupported_attribute_issue_1758() + inner = MOI.Utilities.Model{Float64}() + model = MOI.Bridges.Constraint.ScalarFunctionize{Float64}(inner) + MOI.Test.test_model_copy_to_UnsupportedAttribute(model, MOI.Test.Config()) + return +end + end # module TestConstraintFunctionize.runtests() From 4e50ef6f8c2189f89e5cfed95f362b2c6f1e00d6 Mon Sep 17 00:00:00 2001 From: odow Date: Mon, 28 Feb 2022 15:36:17 +1300 Subject: [PATCH 2/3] Fix test --- test/Bridges/Constraint/functionize.jl | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/test/Bridges/Constraint/functionize.jl b/test/Bridges/Constraint/functionize.jl index c0a5a06ffb..b0684ab315 100644 --- a/test/Bridges/Constraint/functionize.jl +++ b/test/Bridges/Constraint/functionize.jl @@ -99,16 +99,21 @@ function test_scalar_functionize_linear2() Float64, MOI.GreaterThan{Float64}, } - err = ArgumentError( - "Bridge of type `$(BT)` does not support setting the attribute " * - "`$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.", + function _unsupported_attribute(attr, f) + return MOI.UnsupportedAttribute( + attr, + "Bridge of type `$(BT)` does not support $(f)ting the attribute " * + "`$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.", + ) + end + @test_throws( + _unsupported_attribute(attr, "set"), + MOI.set(bridged_mock, attr, ci, 1.0), ) - @test_throws err MOI.set(bridged_mock, attr, ci, 1.0) - err = ArgumentError( - "Bridge of type `$(BT)` does not support accessing the attribute " * - "`$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.", + @test_throws( + _unsupported_attribute(attr, "get"), + MOI.get(bridged_mock, attr, ci), ) - @test_throws err MOI.get(bridged_mock, attr, ci) for (i, ci) in enumerate(cis) _test_delete_bridge( bridged_mock, From 6c6afea88f549a7c7bd9f307b88c1ef0536f0634 Mon Sep 17 00:00:00 2001 From: Oscar Dowson Date: Mon, 28 Feb 2022 16:13:57 +1300 Subject: [PATCH 3/3] Update src/Bridges/Constraint/function_conversion.jl --- src/Bridges/Constraint/function_conversion.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Bridges/Constraint/function_conversion.jl b/src/Bridges/Constraint/function_conversion.jl index 5c4ec05cc3..8e6dceb08a 100644 --- a/src/Bridges/Constraint/function_conversion.jl +++ b/src/Bridges/Constraint/function_conversion.jl @@ -18,7 +18,7 @@ function MOI.get( throw( MOI.UnsupportedAttribute( attr, - "Bridge of type `$(typeof(bridge))` does not support accessing the attribute `$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.", + "Bridge of type `$(typeof(bridge))` does not support getting the attribute `$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.", ), ) end