Skip to content

Commit 45c1676

Browse files
committed
Add tests
1 parent f764901 commit 45c1676

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

src/Utilities/cachingoptimizer.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1162,7 +1162,7 @@ function MOI.get(
11621162
MOI.get(
11631163
m.optimizer,
11641164
attr.attr,
1165-
getindex.(m.model_to_optimizer_map, idx),
1165+
map_indices_to_optimizer(m, idx),
11661166
)::Vector{<:MOI.attribute_value_type(attr.attr)},
11671167
)
11681168
end

test/Utilities/cachingoptimizer.jl

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1260,6 +1260,72 @@ function test_delete_variables()
12601260
return
12611261
end
12621262

1263+
function test_set_attribute()
1264+
for mode in (MOI.Utilities.AUTOMATIC, MOI.Utilities.MANUAL)
1265+
cache = MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}())
1266+
optimizer = MOI.Utilities.MockOptimizer(
1267+
MOI.Utilities.UniversalFallback(MOI.Utilities.Model{Float64}()),
1268+
)
1269+
model = MOI.Utilities.CachingOptimizer(cache, mode)
1270+
MOI.Utilities.reset_optimizer(model, optimizer)
1271+
MOI.Utilities.attach_optimizer(model)
1272+
x = MOI.add_variable(model)
1273+
@test MOI.is_valid(optimizer, model.model_to_optimizer_map[x])
1274+
attr = MOI.VariablePrimalStart()
1275+
MOI.set(model, attr, x, 1.23)
1276+
opt_attr = MOI.Utilities.AttributeFromOptimizer(attr)
1277+
cache_attr = MOI.Utilities.AttributeFromModelCache(attr)
1278+
@test MOI.get(model, opt_attr, x) == 1.23
1279+
@test MOI.get(model, cache_attr, x) == 1.23
1280+
end
1281+
return
1282+
end
1283+
1284+
function test_get_AttributeFromOptimizer()
1285+
cache = MOI.Utilities.Model{Float64}()
1286+
optimizer = MOI.Utilities.MockOptimizer(
1287+
MOI.Utilities.Model{Float64}(),
1288+
)
1289+
model = MOI.Utilities.CachingOptimizer(cache, optimizer)
1290+
x = MOI.add_variable(model)
1291+
MOI.Utilities.attach_optimizer(model)
1292+
attr = MOI.VariableName()
1293+
optimizer_attr = MOI.Utilities.AttributeFromOptimizer(attr)
1294+
@test MOI.supports(model, cache_attr, MOI.VariableIndex)
1295+
MOI.set(model, optimizer_attr, x, "x")
1296+
@test MOI.get(model, attr, x) == ""
1297+
@test MOI.get(model, optimizer_attr, x) == "x"
1298+
@test MOI.get(model, optimizer_attr, [x]) == ["x"]
1299+
return
1300+
end
1301+
1302+
function test_get_AttributeFromModelCache()
1303+
cache = MOI.Utilities.Model{Float64}()
1304+
optimizer = MOI.Utilities.MockOptimizer(
1305+
MOI.Utilities.Model{Float64}(),
1306+
)
1307+
model = MOI.Utilities.CachingOptimizer(cache, optimizer)
1308+
x = MOI.add_variable(model)
1309+
MOI.Utilities.attach_optimizer(model)
1310+
# VariableName
1311+
attr = MOI.VariableName()
1312+
cache_attr = MOI.Utilities.AttributeFromModelCache(attr)
1313+
MOI.set(model, cache_attr, x, "x")
1314+
@test MOI.supports(model, cache_attr, MOI.VariableIndex)
1315+
@test MOI.get(model, attr, x) == "x"
1316+
@test MOI.get(model, cache_attr, x) == "x"
1317+
@test MOI.get(model, MOI.Utilities.AttributeFromOptimizer(attr), x) == ""
1318+
# Name
1319+
attr = MOI.Name()
1320+
cache_attr = MOI.Utilities.AttributeFromModelCache(attr)
1321+
MOI.set(model, cache_attr, "m")
1322+
@test MOI.supports(model, cache_attr)
1323+
@test MOI.get(model, attr) == "m"
1324+
@test MOI.get(model, cache_attr) == "m"
1325+
@test MOI.get(model, MOI.Utilities.AttributeFromOptimizer(attr)) == ""
1326+
return
1327+
end
1328+
12631329
end # module
12641330

12651331
TestCachingOptimizer.runtests()

0 commit comments

Comments
 (0)