@@ -1106,6 +1106,160 @@ function test_show()
11061106 return
11071107end
11081108
1109+ function test_add_variable ()
1110+ for mode in (MOI. Utilities. AUTOMATIC, MOI. Utilities. MANUAL)
1111+ cache = MOI. Utilities. Model {Float64} ()
1112+ optimizer = MOI. Utilities. MockOptimizer (
1113+ MOI. Utilities. Model {Float64} (),
1114+ )
1115+ model = MOI. Utilities. CachingOptimizer (cache, mode)
1116+ MOI. Utilities. reset_optimizer (model, optimizer)
1117+ MOI. Utilities. attach_optimizer (model)
1118+ x = MOI. add_variable (model)
1119+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[x])
1120+ end
1121+ return
1122+ end
1123+
1124+ function test_add_variables ()
1125+ for mode in (MOI. Utilities. AUTOMATIC, MOI. Utilities. MANUAL)
1126+ cache = MOI. Utilities. Model {Float64} ()
1127+ optimizer = MOI. Utilities. MockOptimizer (
1128+ MOI. Utilities. Model {Float64} (),
1129+ )
1130+ model = MOI. Utilities. CachingOptimizer (cache, mode)
1131+ MOI. Utilities. reset_optimizer (model, optimizer)
1132+ MOI. Utilities. attach_optimizer (model)
1133+ x = MOI. add_variables (model, 2 )
1134+ for xi in x
1135+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[xi])
1136+ end
1137+ end
1138+ return
1139+ end
1140+
1141+ function test_add_constrained_variable ()
1142+ for mode in (MOI. Utilities. AUTOMATIC, MOI. Utilities. MANUAL)
1143+ cache = MOI. Utilities. Model {Float64} ()
1144+ optimizer = MOI. Utilities. MockOptimizer (
1145+ MOI. Utilities. Model {Float64} (),
1146+ )
1147+ model = MOI. Utilities. CachingOptimizer (cache, mode)
1148+ MOI. Utilities. reset_optimizer (model, optimizer)
1149+ MOI. Utilities. attach_optimizer (model)
1150+ x, c = MOI. add_constrained_variable (model, MOI. ZeroOne ())
1151+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[x])
1152+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[c])
1153+ end
1154+ return
1155+ end
1156+
1157+ function test_add_constrained_variables ()
1158+ for mode in (MOI. Utilities. AUTOMATIC, MOI. Utilities. MANUAL)
1159+ cache = MOI. Utilities. Model {Float64} ()
1160+ optimizer = MOI. Utilities. MockOptimizer (
1161+ MOI. Utilities. Model {Float64} (),
1162+ )
1163+ model = MOI. Utilities. CachingOptimizer (cache, mode)
1164+ MOI. Utilities. reset_optimizer (model, optimizer)
1165+ MOI. Utilities. attach_optimizer (model)
1166+ x, c = MOI. add_constrained_variables (model, MOI. Zeros (2 ))
1167+ for xi in x
1168+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[xi])
1169+ end
1170+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[c])
1171+ end
1172+ return
1173+ end
1174+
1175+ function test_modify_constraint ()
1176+ for mode in (MOI. Utilities. AUTOMATIC, MOI. Utilities. MANUAL)
1177+ cache = MOI. Utilities. Model {Float64} ()
1178+ optimizer = MOI. Utilities. MockOptimizer (
1179+ MOI. Utilities. Model {Float64} (),
1180+ )
1181+ model = MOI. Utilities. CachingOptimizer (cache, mode)
1182+ MOI. Utilities. reset_optimizer (model, optimizer)
1183+ MOI. Utilities. attach_optimizer (model)
1184+ x = MOI. add_variable (model)
1185+ c = MOI. add_constraint (model, 1.0 * x, MOI. EqualTo (1.0 ))
1186+ c_opt = model. model_to_optimizer_map[c]
1187+ f = MOI. get (optimizer, MOI. ConstraintFunction (), c_opt)
1188+ @test f ≈ 1.0 * model. model_to_optimizer_map[x]
1189+ MOI. modify (
1190+ model,
1191+ c,
1192+ MOI. ScalarCoefficientChange (x, 2.0 ),
1193+ )
1194+ c_opt = model. model_to_optimizer_map[c]
1195+ f = MOI. get (optimizer, MOI. ConstraintFunction (), c_opt)
1196+ @test f ≈ 2.0 * model. model_to_optimizer_map[x]
1197+ end
1198+ return
1199+ end
1200+
1201+ function test_modify_constraint ()
1202+ for mode in (MOI. Utilities. AUTOMATIC, MOI. Utilities. MANUAL)
1203+ cache = MOI. Utilities. Model {Float64} ()
1204+ optimizer = MOI. Utilities. MockOptimizer (
1205+ MOI. Utilities. Model {Float64} (),
1206+ )
1207+ model = MOI. Utilities. CachingOptimizer (cache, mode)
1208+ MOI. Utilities. reset_optimizer (model, optimizer)
1209+ MOI. Utilities. attach_optimizer (model)
1210+ x = MOI. add_variable (model)
1211+ f = 1.0 * x
1212+ attr = MOI. ObjectiveFunction {typeof(f)} ()
1213+ MOI. set (model, attr, f)
1214+ @test MOI. get (optimizer, attr) ≈ 1.0 * model. model_to_optimizer_map[x]
1215+ MOI. modify (
1216+ model,
1217+ attr,
1218+ MOI. ScalarCoefficientChange (x, 2.0 ),
1219+ )
1220+ @test MOI. get (optimizer, attr) ≈ 2.0 * model. model_to_optimizer_map[x]
1221+ end
1222+ return
1223+ end
1224+
1225+ function test_delete_invalid_index ()
1226+ for mode in (MOI. Utilities. AUTOMATIC, MOI. Utilities. MANUAL)
1227+ cache = MOI. Utilities. Model {Float64} ()
1228+ optimizer = MOI. Utilities. MockOptimizer (
1229+ MOI. Utilities. Model {Float64} (),
1230+ )
1231+ model = MOI. Utilities. CachingOptimizer (cache, mode)
1232+ MOI. Utilities. reset_optimizer (model, optimizer)
1233+ MOI. Utilities. attach_optimizer (model)
1234+ x = MOI. add_variable (model)
1235+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[x])
1236+ MOI. delete (model, x)
1237+ @test ! MOI. is_valid (optimizer, model. model_to_optimizer_map[x])
1238+ @test_throws (MOI. InvalidIndex, MOI. delete (model, x))
1239+ end
1240+ return
1241+ end
1242+
1243+ function test_delete_variables ()
1244+ for mode in (MOI. Utilities. AUTOMATIC, MOI. Utilities. MANUAL)
1245+ cache = MOI. Utilities. Model {Float64} ()
1246+ optimizer = MOI. Utilities. MockOptimizer (
1247+ MOI. Utilities. Model {Float64} (),
1248+ )
1249+ model = MOI. Utilities. CachingOptimizer (cache, mode)
1250+ MOI. Utilities. reset_optimizer (model, optimizer)
1251+ MOI. Utilities. attach_optimizer (model)
1252+ x, y = MOI. add_variables (model, 2 )
1253+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[x])
1254+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[y])
1255+ MOI. delete (model, [x])
1256+ @test_throws KeyError model. model_to_optimizer_map[x]
1257+ @test MOI. is_valid (optimizer, model. model_to_optimizer_map[y])
1258+ @test_throws (MOI. InvalidIndex, MOI. delete (model, x))
1259+ end
1260+ return
1261+ end
1262+
11091263end # module
11101264
11111265TestCachingOptimizer. runtests ()
0 commit comments