Skip to content

Commit f1856f5

Browse files
authored
[Bridges] fix UnsupportedAttribute in function_conversion.jl (#1764)
1 parent 1a6d75f commit f1856f5

2 files changed

Lines changed: 25 additions & 11 deletions

File tree

src/Bridges/Constraint/function_conversion.jl

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ function MOI.get(
1616
return MOI.get(model, attr, bridge.constraint)
1717
else
1818
throw(
19-
ArgumentError(
20-
"Bridge of type `$(typeof(bridge))` does not support accessing the attribute `$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.",
19+
MOI.UnsupportedAttribute(
20+
attr,
21+
"Bridge of type `$(typeof(bridge))` does not support getting the attribute `$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.",
2122
),
2223
)
2324
end
@@ -40,7 +41,8 @@ function MOI.set(
4041
)
4142
if !invariant_under_function_conversion(attr)
4243
throw(
43-
ArgumentError(
44+
MOI.UnsupportedAttribute(
45+
attr,
4446
"Bridge of type `$(typeof(bridge))` does not support setting the attribute `$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.",
4547
),
4648
)

test/Bridges/Constraint/functionize.jl

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,21 @@ function test_scalar_functionize_linear2()
9999
Float64,
100100
MOI.GreaterThan{Float64},
101101
}
102-
err = ArgumentError(
103-
"Bridge of type `$(BT)` does not support setting the attribute " *
104-
"`$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.",
102+
function _unsupported_attribute(attr, f)
103+
return MOI.UnsupportedAttribute(
104+
attr,
105+
"Bridge of type `$(BT)` does not support $(f)ting the attribute " *
106+
"`$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.",
107+
)
108+
end
109+
@test_throws(
110+
_unsupported_attribute(attr, "set"),
111+
MOI.set(bridged_mock, attr, ci, 1.0),
105112
)
106-
@test_throws err MOI.set(bridged_mock, attr, ci, 1.0)
107-
err = ArgumentError(
108-
"Bridge of type `$(BT)` does not support accessing the attribute " *
109-
"`$attr` because `MOIB.Constraint.invariant_under_function_conversion($attr)` returns `false`.",
113+
@test_throws(
114+
_unsupported_attribute(attr, "get"),
115+
MOI.get(bridged_mock, attr, ci),
110116
)
111-
@test_throws err MOI.get(bridged_mock, attr, ci)
112117
for (i, ci) in enumerate(cis)
113118
_test_delete_bridge(
114119
bridged_mock,
@@ -206,6 +211,13 @@ function test_vector_functionize_lin1v()
206211
return
207212
end
208213

214+
function test_unsupported_attribute_issue_1758()
215+
inner = MOI.Utilities.Model{Float64}()
216+
model = MOI.Bridges.Constraint.ScalarFunctionize{Float64}(inner)
217+
MOI.Test.test_model_copy_to_UnsupportedAttribute(model, MOI.Test.Config())
218+
return
219+
end
220+
209221
end # module
210222

211223
TestConstraintFunctionize.runtests()

0 commit comments

Comments
 (0)