Skip to content

Commit b0800ae

Browse files
committed
math_opt: backport from main
1 parent 35607bf commit b0800ae

29 files changed

+5379
-248
lines changed

ortools/math_opt/core/BUILD.bazel

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
# limitations under the License.
1313

1414
load("@rules_cc//cc:cc_library.bzl", "cc_library")
15+
load("@rules_cc//cc:cc_test.bzl", "cc_test")
1516

1617
package(default_visibility = ["//ortools/math_opt:__subpackages__"])
1718

@@ -41,6 +42,24 @@ cc_library(
4142
],
4243
)
4344

45+
cc_test(
46+
name = "math_opt_proto_utils_test",
47+
srcs = ["math_opt_proto_utils_test.cc"],
48+
deps = [
49+
":math_opt_proto_utils",
50+
":sparse_collection_matchers",
51+
"//ortools/base",
52+
"//ortools/base:gmock_main",
53+
"//ortools/math_opt:model_cc_proto",
54+
"//ortools/math_opt:model_parameters_cc_proto",
55+
"//ortools/math_opt:model_update_cc_proto",
56+
"//ortools/math_opt:result_cc_proto",
57+
"//ortools/math_opt:solution_cc_proto",
58+
"//ortools/math_opt:sparse_containers_cc_proto",
59+
"@abseil-cpp//absl/status",
60+
],
61+
)
62+
4463
cc_library(
4564
name = "sparse_vector_view",
4665
hdrs = ["sparse_vector_view.h"],
@@ -57,6 +76,24 @@ cc_library(
5776
],
5877
)
5978

79+
cc_test(
80+
name = "sparse_vector_view_test",
81+
srcs = ["sparse_vector_view_test.cc"],
82+
deps = [
83+
":sparse_vector",
84+
":sparse_vector_view",
85+
"//ortools/base:gmock_main",
86+
"//ortools/base:intops",
87+
"//ortools/base:logging",
88+
"//ortools/base:types",
89+
"//ortools/math_opt:model_cc_proto",
90+
"//ortools/math_opt:sparse_containers_cc_proto",
91+
"@abseil-cpp//absl/container:flat_hash_map",
92+
"@abseil-cpp//absl/strings",
93+
"@protobuf",
94+
],
95+
)
96+
6097
cc_library(
6198
name = "model_summary",
6299
srcs = ["model_summary.cc"],
@@ -76,6 +113,21 @@ cc_library(
76113
],
77114
)
78115

116+
cc_test(
117+
name = "model_summary_test",
118+
srcs = ["model_summary_test.cc"],
119+
deps = [
120+
":model_summary",
121+
"//ortools/base:gmock",
122+
"//ortools/base:gmock_main",
123+
"//ortools/base:parse_text_proto",
124+
"//ortools/math_opt:model_cc_proto",
125+
"//ortools/math_opt:model_update_cc_proto",
126+
"@abseil-cpp//absl/status",
127+
"@abseil-cpp//absl/types:span",
128+
],
129+
)
130+
79131
cc_library(
80132
name = "solver_interface",
81133
srcs = ["solver_interface.cc"],
@@ -94,7 +146,10 @@ cc_library(
94146
"//ortools/port:proto_utils",
95147
"//ortools/util:solve_interrupter",
96148
"@abseil-cpp//absl/base:core_headers",
149+
"@abseil-cpp//absl/base:nullability",
97150
"@abseil-cpp//absl/container:flat_hash_map",
151+
"@abseil-cpp//absl/container:flat_hash_set",
152+
"@abseil-cpp//absl/log",
98153
"@abseil-cpp//absl/log:check",
99154
"@abseil-cpp//absl/status:statusor",
100155
"@abseil-cpp//absl/strings",
@@ -137,13 +192,71 @@ cc_library(
137192
],
138193
)
139194

195+
cc_library(
196+
name = "solver_interface_mock",
197+
testonly = True,
198+
srcs = ["solver_interface_mock.cc"],
199+
hdrs = ["solver_interface_mock.h"],
200+
deps = [
201+
":solver_interface",
202+
":solver_interface_testing",
203+
"//ortools/base:gmock",
204+
"//ortools/math_opt:callback_cc_proto",
205+
"//ortools/math_opt:infeasible_subsystem_cc_proto",
206+
"//ortools/math_opt:model_cc_proto",
207+
"//ortools/math_opt:model_parameters_cc_proto",
208+
"//ortools/math_opt:model_update_cc_proto",
209+
"//ortools/math_opt:parameters_cc_proto",
210+
"//ortools/math_opt:result_cc_proto",
211+
"//ortools/util:solve_interrupter",
212+
"@abseil-cpp//absl/base:core_headers",
213+
"@abseil-cpp//absl/log",
214+
"@abseil-cpp//absl/log:check",
215+
"@abseil-cpp//absl/log:die_if_null",
216+
"@abseil-cpp//absl/random",
217+
"@abseil-cpp//absl/status:statusor",
218+
"@abseil-cpp//absl/synchronization",
219+
],
220+
)
221+
222+
cc_library(
223+
name = "sparse_collection_matchers",
224+
testonly = True,
225+
srcs = ["sparse_collection_matchers.cc"],
226+
hdrs = ["sparse_collection_matchers.h"],
227+
deps = [
228+
":sparse_vector_view",
229+
"//ortools/base:gmock",
230+
"//ortools/math_opt:sparse_containers_cc_proto",
231+
],
232+
)
233+
234+
cc_test(
235+
name = "sparse_collection_matchers_test",
236+
srcs = ["sparse_collection_matchers_test.cc"],
237+
deps = [
238+
":sparse_collection_matchers",
239+
"//ortools/base:gmock_main",
240+
"//ortools/math_opt:sparse_containers_cc_proto",
241+
],
242+
)
243+
140244
cc_library(
141245
name = "non_streamable_solver_init_arguments",
142246
srcs = ["non_streamable_solver_init_arguments.cc"],
143247
hdrs = ["non_streamable_solver_init_arguments.h"],
144248
deps = ["//ortools/math_opt:parameters_cc_proto"],
145249
)
146250

251+
cc_test(
252+
name = "non_streamable_solver_init_arguments_test",
253+
srcs = ["non_streamable_solver_init_arguments_test.cc"],
254+
deps = [
255+
":non_streamable_solver_init_arguments",
256+
"//ortools/base:gmock_main",
257+
],
258+
)
259+
147260
cc_library(
148261
name = "solver_debug",
149262
srcs = ["solver_debug.cc"],
@@ -175,6 +288,46 @@ cc_library(
175288
],
176289
)
177290

291+
cc_test(
292+
name = "sparse_submatrix_test",
293+
srcs = ["sparse_submatrix_test.cc"],
294+
deps = [
295+
":sparse_collection_matchers",
296+
":sparse_submatrix",
297+
":sparse_vector",
298+
":sparse_vector_view",
299+
"//ortools/base:gmock_main",
300+
"//ortools/math_opt:sparse_containers_cc_proto",
301+
"@abseil-cpp//absl/types:span",
302+
],
303+
)
304+
305+
cc_library(
306+
name = "solver_interface_testing",
307+
testonly = True,
308+
srcs = ["solver_interface_testing.cc"],
309+
hdrs = ["solver_interface_testing.h"],
310+
deps = [
311+
":solver_interface",
312+
"@abseil-cpp//absl/base:nullability",
313+
"@abseil-cpp//absl/container:flat_hash_map",
314+
"@abseil-cpp//absl/container:flat_hash_set",
315+
],
316+
)
317+
318+
cc_test(
319+
name = "solver_interface_testing_test",
320+
srcs = ["solver_interface_testing_test.cc"],
321+
deps = [
322+
":solver_interface",
323+
":solver_interface_testing",
324+
"//ortools/base:gmock",
325+
"@abseil-cpp//absl/base:nullability",
326+
"@abseil-cpp//absl/status",
327+
"@abseil-cpp//absl/status:statusor",
328+
],
329+
)
330+
178331
cc_library(
179332
name = "inverted_bounds",
180333
srcs = ["inverted_bounds.cc"],
@@ -187,6 +340,16 @@ cc_library(
187340
],
188341
)
189342

343+
cc_test(
344+
name = "inverted_bounds_test",
345+
srcs = ["inverted_bounds_test.cc"],
346+
deps = [
347+
":inverted_bounds",
348+
"//ortools/base:gmock_main",
349+
"@abseil-cpp//absl/status",
350+
],
351+
)
352+
190353
cc_library(
191354
name = "invalid_indicators",
192355
srcs = ["invalid_indicators.cc"],
@@ -199,6 +362,16 @@ cc_library(
199362
],
200363
)
201364

365+
cc_test(
366+
name = "invalid_indicators_test",
367+
srcs = ["invalid_indicators_test.cc"],
368+
deps = [
369+
":invalid_indicators",
370+
"//ortools/base:gmock_main",
371+
"@abseil-cpp//absl/status",
372+
],
373+
)
374+
202375
cc_library(
203376
name = "concurrent_calls_guard",
204377
srcs = ["concurrent_calls_guard.cc"],
@@ -212,6 +385,19 @@ cc_library(
212385
],
213386
)
214387

388+
cc_test(
389+
name = "concurrent_calls_guard_test",
390+
srcs = ["concurrent_calls_guard_test.cc"],
391+
deps = [
392+
":concurrent_calls_guard",
393+
"//ortools/base:gmock_main",
394+
"//ortools/base:status_macros",
395+
"@abseil-cpp//absl/status",
396+
"@abseil-cpp//absl/status:statusor",
397+
"@abseil-cpp//absl/strings",
398+
],
399+
)
400+
215401
cc_library(
216402
name = "empty_bounds",
217403
srcs = ["empty_bounds.cc"],
@@ -223,6 +409,17 @@ cc_library(
223409
],
224410
)
225411

412+
cc_test(
413+
name = "empty_bounds_test",
414+
srcs = ["empty_bounds_test.cc"],
415+
deps = [
416+
":empty_bounds",
417+
":model_summary",
418+
"//ortools/base:gmock_main",
419+
"//ortools/math_opt/validators:result_validator",
420+
],
421+
)
422+
226423
cc_library(
227424
name = "sorted",
228425
hdrs = ["sorted.h"],
@@ -234,6 +431,17 @@ cc_library(
234431
],
235432
)
236433

434+
cc_test(
435+
name = "sorted_test",
436+
srcs = ["sorted_test.cc"],
437+
deps = [
438+
":sorted",
439+
"//ortools/base:gmock_main",
440+
"@abseil-cpp//absl/container:flat_hash_map",
441+
"@protobuf",
442+
],
443+
)
444+
237445
cc_library(
238446
name = "base_solver",
239447
srcs = ["base_solver.cc"],

ortools/math_opt/core/CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ add_subdirectory(c_api)
1616
file(GLOB _SRCS "*.h" "*.cc")
1717
#list(APPEND _SRCS "${CMAKE_CURRENT_SOURCE_DIR}/c_api/solver.cc")
1818
list(FILTER _SRCS EXCLUDE REGEX "/[^/]*_test\\.cc$")
19+
# Remove files pulling gmock and protobuf_matchers.
20+
list(FILTER _SRCS EXCLUDE REGEX "/solver_interface_mock\\.h$")
21+
list(FILTER _SRCS EXCLUDE REGEX "/solver_interface_mock\\.cc$")
22+
list(FILTER _SRCS EXCLUDE REGEX "/sparse_collection_matchers\\.h$")
23+
list(FILTER _SRCS EXCLUDE REGEX "/sparse_collection_matchers\\.cc$")
1924

2025
set(NAME ${PROJECT_NAME}_math_opt_core)
2126
add_library(${NAME} OBJECT ${_SRCS})
@@ -29,4 +34,5 @@ target_include_directories(${NAME} PUBLIC
2934
$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>)
3035
target_link_libraries(${NAME} PRIVATE
3136
absl::strings
32-
${PROJECT_NAMESPACE}::math_opt_proto)
37+
${PROJECT_NAMESPACE}::math_opt_proto
38+
)

0 commit comments

Comments
 (0)