18 #include "absl/base/log_severity.h"
19 #include "absl/flags/flag.h"
20 #include "absl/log/scoped_mock_log.h"
21 #include "gtest/gtest.h"
25 #define ROOT_DIR "../../../../../../../"
30 ABSL_FLAG(std::string, test_srcdir,
"",
"REQUIRED: src dir");
34 TEST(CarpParserTest, Constructor) {
36 EXPECT_EQ(parser.name(),
"");
37 EXPECT_EQ(parser.comment(),
"");
38 EXPECT_EQ(parser.NumberOfNodes(), 0);
39 EXPECT_EQ(parser.NumberOfEdgesWithServicing(), 0);
40 EXPECT_EQ(parser.NumberOfEdgesWithoutServicing(), 0);
41 EXPECT_EQ(parser.NumberOfEdges(), 0);
42 EXPECT_EQ(parser.NumberOfVehicles(), 0);
43 EXPECT_EQ(parser.capacity(), 0);
44 EXPECT_EQ(parser.TotalServicingCost(), 0);
45 EXPECT_EQ(parser.depot(), 0);
48 TEST(CarpParserTest, LoadEmptyFileName) {
49 std::string empty_file_name;
51 EXPECT_FALSE(parser.LoadFile(empty_file_name));
54 TEST(CarpParserTest, LoadNonExistingFile) {
56 EXPECT_FALSE(parser.LoadFile(
""));
59 TEST(CarpParserTest, LoadInvalidFileIncorrectNumberOfNodes) {
60 absl::ScopedMockLog log;
61 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
62 "Error when parsing the number of nodes: -4"));
65 Log(absl::LogSeverity::kError, testing::_,
66 "Error when parsing the following metadata line: VERTICES : -4"));
67 log.StartCapturingLogs();
72 "ortools/routing/testdata/"
73 "carp_gdb19_incorrecto_vertices.dat")));
76 TEST(CarpParserTest, LoadInvalidFileIncorrectNumberOfArcsWithServicings) {
77 absl::ScopedMockLog log;
79 log, Log(absl::LogSeverity::kError, testing::_,
80 "Error when parsing the number of edges with servicing: -11"));
81 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
82 "Error when parsing the following metadata line: "
83 "ARISTAS_REQ : -11"));
84 log.StartCapturingLogs();
89 "ortools/routing/testdata/"
90 "carp_gdb19_incorrecto_arireq.dat")));
93 TEST(CarpParserTest, LoadInvalidFileIncorrectNumberOfArcsWithoutServicings) {
94 absl::ScopedMockLog log;
96 log, Log(absl::LogSeverity::kError, testing::_,
97 "Error when parsing the number of edges without servicing: a"));
98 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
99 "Error when parsing the following metadata line: "
100 "ARISTAS_NOREQ : a"));
101 log.StartCapturingLogs();
106 "ortools/routing/testdata/"
107 "carp_gdb19_incorrecto_arinoreq.dat")));
110 TEST(CarpParserTest, LoadInvalidFileIncorrectNumberOfVehicles) {
111 absl::ScopedMockLog log;
112 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
113 "Error when parsing the number of vehicles: 0"));
116 Log(absl::LogSeverity::kError, testing::_,
117 "Error when parsing the following metadata line: VEHICULOS : 0"));
118 log.StartCapturingLogs();
123 "ortools/routing/testdata/"
124 "carp_gdb19_incorrecto_vehiculos.dat")));
127 TEST(CarpParserTest, LoadInvalidFileIncorrectCapacity) {
128 absl::ScopedMockLog log;
129 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
130 "Error when parsing the capacity: 0"));
133 Log(absl::LogSeverity::kError, testing::_,
134 "Error when parsing the following metadata line: CAPACIDAD : 0"));
135 log.StartCapturingLogs();
140 "ortools/routing/testdata/"
141 "carp_gdb19_incorrecto_capacidad.dat")));
144 TEST(CarpParserTest, LoadInvalidFileIncorrectTypeOfArcCost) {
145 absl::ScopedMockLog log;
146 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
147 "Value of TIPO_COSTES_ARISTAS is unexpected, only "
148 "EXPLICITOS is supported, but IMPLICITOS was found"));
149 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
150 "Error when parsing the following metadata line: "
151 "TIPO_COSTES_ARISTAS : IMPLICITOS"));
152 log.StartCapturingLogs();
157 "ortools/routing/testdata/"
158 "carp_gdb19_incorrecto_tipo.dat")));
161 TEST(CarpParserTest, LoadInvalidFileIncorrectTotalServicingCost) {
162 absl::ScopedMockLog log;
163 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
164 "Error when parsing the total servicing cost: qwertz"));
165 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
166 "Error when parsing the following metadata line: "
167 "COSTE_TOTAL_REQ : qwertz"));
168 log.StartCapturingLogs();
173 "ortools/routing/testdata/"
174 "carp_gdb19_incorrecto_coste.dat")));
177 TEST(CarpParserTest, LoadInvalidFileIncorrectDepot) {
178 absl::ScopedMockLog log;
179 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
180 "Could not parse node index: -1"));
181 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
182 "Error when parsing the depot: -1"));
185 Log(absl::LogSeverity::kError, testing::_,
186 "Error when parsing the following metadata line: DEPOSITO : -1"));
187 log.StartCapturingLogs();
192 "ortools/routing/testdata/"
193 "carp_gdb19_incorrecto_deposito.dat")));
196 TEST(CarpParserTest, LoadInvalidFileNoEdgeWithServicing) {
197 absl::ScopedMockLog log;
199 Log(absl::LogSeverity::kError, testing::_,
200 "Error when parsing the number of edges with servicing: 0"));
203 Log(absl::LogSeverity::kError, testing::_,
204 "Error when parsing the following metadata line: ARISTAS_REQ : 0"));
205 log.StartCapturingLogs();
211 "testdata/carp_gdb19_no_arista_req.dat")));
214 TEST(CarpParserTest, LoadInvalidFileServicingForArcsWithoutServicing) {
215 absl::ScopedMockLog log;
216 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
217 "Extraneous elements in line, starting with: demanda"));
218 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
219 "Could not parse line in LISTA_ARISTAS_NOREQ: ( 1, 4) "
220 "coste 3 demanda 3"));
221 log.StartCapturingLogs();
227 "testdata/carp_gdb19_mixed_arcs.dat")));
230 TEST(CarpParserTest, LoadInvalidFileServicingForArcsInWrongOrder) {
231 absl::ScopedMockLog log;
232 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
233 "Unexpected keyword: demanda"));
234 EXPECT_CALL(log, Log(absl::LogSeverity::kError, testing::_,
235 "Could not parse line in LISTA_ARISTAS_REQ: ( 1, 4) "
236 "demanda 3 coste 3"));
237 log.StartCapturingLogs();
240 EXPECT_FALSE(parser.LoadFile(
242 ROOT_DIR "ortools/routing/testdata/"
243 "carp_gdb19_incorrecta_lista_aristas_req.dat")));
246 TEST(CarpParserTest, LoadInstanceFile) {
247 std::string file_name =
249 ROOT_DIR "ortools/routing/testdata/carp_gdb19.dat");
251 EXPECT_TRUE(parser.LoadFile(file_name));
252 EXPECT_EQ(parser.name(),
"gdb19");
253 EXPECT_EQ(parser.comment(),
"10000 (cota superior)");
254 EXPECT_EQ(parser.NumberOfNodes(), 8);
255 EXPECT_EQ(parser.NumberOfEdgesWithServicing(), 11);
256 EXPECT_EQ(parser.NumberOfEdgesWithoutServicing(), 0);
257 EXPECT_EQ(parser.NumberOfEdges(), 11);
258 EXPECT_EQ(parser.NumberOfVehicles(), 3);
259 EXPECT_EQ(parser.capacity(), 27);
260 EXPECT_EQ(parser.TotalServicingCost(), 45);
261 EXPECT_EQ(parser.depot(), 0);
263 EXPECT_EQ(parser.traversing_costs().size(), 11);
264 EXPECT_EQ(parser.GetTraversingCost(0, 1), 4);
265 EXPECT_EQ(parser.GetTraversingCost(1, 0), 4);
266 EXPECT_EQ(parser.servicing_demands().size(), 11);
267 EXPECT_EQ(parser.GetServicing(0, 1), 8);
268 EXPECT_EQ(parser.GetServicing(1, 0), 8);
271 TEST(CarpParserTest, LoadInstanceFileWithDifferentDepot) {
272 std::string file_name =
274 "ortools/routing/testdata/"
275 "carp_gdb19_diferente_deposito.dat");
277 EXPECT_TRUE(parser.LoadFile(file_name));
278 EXPECT_EQ(parser.depot(), 4);
ABSL_FLAG(std::string, test_srcdir, "", "REQUIRED: src dir")
std::string JoinPath(absl::string_view path1, absl::string_view path2)
Collection of objects used to extend the Constraint Solver library.
TEST(LinearAssignmentTest, NullMatrix)