OR-Tools  9.6
nearp_parser_test.cc
Go to the documentation of this file.
1 // Copyright 2010-2022 Google LLC
2 // Licensed under the Apache License, Version 2.0 (the "License");
3 // you may not use this file except in compliance with the License.
4 // You may obtain a copy of the License at
5 //
6 // http://www.apache.org/licenses/LICENSE-2.0
7 //
8 // Unless required by applicable law or agreed to in writing, software
9 // distributed under the License is distributed on an "AS IS" BASIS,
10 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11 // See the License for the specific language governing permissions and
12 // limitations under the License.
13 
15 
16 #include <string>
17 
18 #include "absl/flags/flag.h"
19 #include "gtest/gtest.h"
20 #include "ortools/base/path.h"
21 
22 #if defined(_MSC_VER)
23 #define ROOT_DIR "../../../../../../../"
24 #else
25 #define ROOT_DIR
26 #endif // _MSC_VER
27 
28 ABSL_FLAG(std::string, test_srcdir, "", "REQUIRED: src dir");
29 
30 namespace operations_research {
31 namespace {
32 TEST(NearpParserTest, Constructor) {
33  NearpParser parser;
34  EXPECT_EQ(parser.name(), "");
35  EXPECT_EQ(parser.comment(), "");
36  EXPECT_EQ(parser.NumberOfNodes(), 0);
37  EXPECT_EQ(parser.NumberOfEdgesWithServicing(), 0);
38  EXPECT_EQ(parser.NumberOfEdgesWithoutServicing(), 0);
39  EXPECT_EQ(parser.NumberOfEdges(), 0);
40  EXPECT_EQ(parser.NumberOfVehicles(), 0);
41  EXPECT_EQ(parser.capacity(), 0);
42  EXPECT_EQ(parser.depot(), 0);
43 }
44 
45 TEST(NearpParserTest, LoadEmptyFileName) {
46  std::string empty_file_name;
47  NearpParser parser;
48  EXPECT_FALSE(parser.LoadFile(empty_file_name));
49 }
50 
51 TEST(NearpParserTest, LoadNonExistingFile) {
52  NearpParser parser;
53  EXPECT_FALSE(parser.LoadFile("google2/nonexistent.dat"));
54 }
55 
56 TEST(NearpParserTest, LoadBHW1) {
57  std::string file_name =
58  file::JoinPath(absl::GetFlag(FLAGS_test_srcdir),
59  ROOT_DIR "ortools/routing/testdata/nearp_BHW1.dat");
60  NearpParser parser;
61  EXPECT_TRUE(parser.LoadFile(file_name));
62  EXPECT_EQ(parser.name(), "BHW1");
63  EXPECT_EQ(parser.comment(), "-1");
64  EXPECT_EQ(parser.NumberOfNodes(), 12);
65  EXPECT_EQ(parser.NumberOfNodesWithServicing(), 7);
66  EXPECT_EQ(parser.NumberOfNodesWithoutServicing(), 5);
67  EXPECT_EQ(parser.NumberOfEdges(), 11);
68  EXPECT_EQ(parser.NumberOfEdgesWithServicing(), 11);
69  EXPECT_EQ(parser.NumberOfEdgesWithoutServicing(), 0);
70  EXPECT_EQ(parser.NumberOfArcs(), 22);
71  EXPECT_EQ(parser.NumberOfArcsWithServicing(), 11);
72  EXPECT_EQ(parser.NumberOfArcsWithoutServicing(), 11);
73  EXPECT_EQ(parser.NumberOfVehicles(), -1);
74  EXPECT_EQ(parser.capacity(), 5);
75  EXPECT_EQ(parser.depot(), 0);
76 
77  EXPECT_EQ(parser.arc_traversing_costs().size(), 22);
78  EXPECT_EQ(parser.arc_servicing_costs().size(), 11);
79  EXPECT_EQ(parser.arc_servicing_demands().size(), 11);
80  EXPECT_EQ(parser.edge_traversing_costs().size(), 11);
81  EXPECT_EQ(parser.edge_servicing_demands().size(), 11);
82  EXPECT_EQ(parser.edge_servicing_costs().size(), 11);
83  EXPECT_EQ(parser.node_servicing_demands().size(), 7);
84  EXPECT_EQ(parser.node_servicing_costs().size(), 7);
85 
86  EXPECT_EQ(parser.GetArcName(0, 1), "A1");
87  EXPECT_EQ(parser.GetArcName(Arc(0, 1)), "A1");
88  EXPECT_EQ(parser.GetArcName(3, 0), "NrA2");
89  EXPECT_EQ(parser.GetArcName(Arc(3, 0)), "NrA2");
90  EXPECT_EQ(parser.GetEdgeName(2, 1), "E1");
91  EXPECT_EQ(parser.GetEdgeName(Edge(2, 1)), "E1");
92  EXPECT_EQ(parser.GetEdgeName(1, 2), "E1");
93  EXPECT_EQ(parser.GetEdgeName(Edge(1, 2)), "E1");
94  EXPECT_EQ(parser.GetNodeName(3), "N4");
95 }
96 
97 TEST(NearpParserTest, LoadToy) {
98  std::string file_name =
99  file::JoinPath(absl::GetFlag(FLAGS_test_srcdir),
100  ROOT_DIR "ortools/routing/testdata/nearp_toy.dat");
101  NearpParser parser;
102  EXPECT_TRUE(parser.LoadFile(file_name));
103  EXPECT_EQ(parser.name(), "Toy");
104  EXPECT_EQ(parser.comment(), "-1");
105  EXPECT_EQ(parser.NumberOfNodes(), 4);
106  EXPECT_EQ(parser.NumberOfNodesWithServicing(), 1);
107  EXPECT_EQ(parser.NumberOfNodesWithoutServicing(), 3);
108  EXPECT_EQ(parser.NumberOfEdges(), 3);
109  EXPECT_EQ(parser.NumberOfEdgesWithServicing(), 2);
110  EXPECT_EQ(parser.NumberOfEdgesWithoutServicing(), 1);
111  EXPECT_EQ(parser.NumberOfArcs(), 3);
112  EXPECT_EQ(parser.NumberOfArcsWithServicing(), 2);
113  EXPECT_EQ(parser.NumberOfArcsWithoutServicing(), 1);
114  EXPECT_EQ(parser.NumberOfVehicles(), -1);
115  EXPECT_EQ(parser.capacity(), 5);
116  EXPECT_EQ(parser.depot(), 0);
117 
118  EXPECT_EQ(parser.arc_traversing_costs().size(), 3);
119  EXPECT_EQ(parser.arc_servicing_costs().size(), 2);
120  EXPECT_EQ(parser.arc_servicing_demands().size(), 2);
121  EXPECT_EQ(parser.edge_traversing_costs().size(), 3);
122  EXPECT_EQ(parser.edge_servicing_demands().size(), 2);
123  EXPECT_EQ(parser.edge_servicing_costs().size(), 2);
124  EXPECT_EQ(parser.node_servicing_demands().size(), 1);
125  EXPECT_EQ(parser.node_servicing_costs().size(), 1);
126 
127  EXPECT_DEATH(parser.GetArcName(0, 1), "");
128  EXPECT_DEATH(parser.GetArcName(3, 0), "");
129  EXPECT_DEATH(parser.GetEdgeName(3, 1), "");
130  EXPECT_DEATH(parser.GetEdgeName(1, 3), "");
131 
132  EXPECT_EQ(parser.GetArcName(1, 3), "A1");
133  EXPECT_EQ(parser.GetArcName(3, 1), "NrA1");
134  EXPECT_EQ(parser.GetEdgeName(2, 1), "E2");
135  EXPECT_EQ(parser.GetEdgeName(1, 2), "E2");
136  EXPECT_EQ(parser.GetNodeName(3), "N4");
137 }
138 } // namespace
139 } // namespace operations_research
std::string JoinPath(absl::string_view path1, absl::string_view path2)
Definition: path.cc:25
Collection of objects used to extend the Constraint Solver library.
TEST(LinearAssignmentTest, NullMatrix)
#define ROOT_DIR
ABSL_FLAG(std::string, test_srcdir, "", "REQUIRED: src dir")