Make edge metrics strongly typed (#6421)
This change takes the existing typedefs for weight, duration and distance, and makes them proper types, using the existing Alias functionality. Primarily this is to prevent bugs where the metrics are switched, but it also adds additional documentation. For example, it now makes it clear (despite the naming of variables) that most of the trip algorithm is running on the duration metric. I've not made any changes to the casts performed between metrics and numeric types, they now just more explicit.
This commit is contained in:
@@ -40,15 +40,15 @@ auto makeGraph(const MultiLevelPartition &mlp, const std::vector<MockEdge> &mock
|
||||
edges.push_back(Edge{m.start,
|
||||
m.target,
|
||||
m.weight,
|
||||
2 * m.weight,
|
||||
static_cast<EdgeDistance>(1.0),
|
||||
EdgeDuration{2} * alias_cast<EdgeDuration>(m.weight),
|
||||
EdgeDistance{1.0},
|
||||
true,
|
||||
false});
|
||||
edges.push_back(Edge{m.target,
|
||||
m.start,
|
||||
m.weight,
|
||||
2 * m.weight,
|
||||
static_cast<EdgeDistance>(1.0),
|
||||
EdgeDuration{2} * alias_cast<EdgeDuration>(m.weight),
|
||||
EdgeDistance{1.0},
|
||||
false,
|
||||
true});
|
||||
}
|
||||
@@ -71,7 +71,7 @@ BOOST_AUTO_TEST_CASE(two_level_test)
|
||||
|
||||
BOOST_REQUIRE_EQUAL(mlp.GetNumberOfLevels(), 2);
|
||||
|
||||
std::vector<MockEdge> edges = {{0, 1, 1}, {0, 2, 1}, {2, 3, 1}, {3, 1, 1}, {3, 2, 1}};
|
||||
std::vector<MockEdge> edges = {{0, 1, {1}}, {0, 2, {1}}, {2, 3, {1}}, {3, 1, {1}}, {3, 2, {1}}};
|
||||
|
||||
auto graph = makeGraph(mlp, edges);
|
||||
std::vector<bool> node_filter(graph.GetNumberOfNodes(), true);
|
||||
@@ -106,17 +106,17 @@ BOOST_AUTO_TEST_CASE(two_level_test)
|
||||
|
||||
// cell 0
|
||||
// check row source -> destination
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetOutWeight(0), 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetOutWeight(0), EdgeWeight{1});
|
||||
// check column destination -> source
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetInWeight(1), 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetInWeight(1), EdgeWeight{1});
|
||||
|
||||
// cell 1
|
||||
// check row source -> destination
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(2), 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(3), 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(2), EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(3), EdgeWeight{1}, EdgeWeight{0});
|
||||
// check column destination -> source
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(2), 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(3), 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(2), EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(3), EdgeWeight{1}, EdgeWeight{0});
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(four_levels_test)
|
||||
@@ -130,27 +130,27 @@ BOOST_AUTO_TEST_CASE(four_levels_test)
|
||||
BOOST_REQUIRE_EQUAL(mlp.GetNumberOfLevels(), 4);
|
||||
|
||||
std::vector<MockEdge> edges = {
|
||||
{0, 1, 1}, // cell (0, 0, 0)
|
||||
{0, 2, 1}, {3, 1, 1}, {3, 2, 1},
|
||||
{0, 1, {1}}, // cell (0, 0, 0)
|
||||
{0, 2, {1}}, {3, 1, {1}}, {3, 2, {1}},
|
||||
|
||||
{4, 5, 1}, // cell (1, 0, 0)
|
||||
{4, 6, 1}, {4, 7, 1}, {5, 4, 1}, {5, 6, 1}, {5, 7, 1}, {6, 4, 1},
|
||||
{6, 5, 1}, {6, 7, 1}, {7, 4, 1}, {7, 5, 1}, {7, 6, 1},
|
||||
{4, 5, {1}}, // cell (1, 0, 0)
|
||||
{4, 6, {1}}, {4, 7, {1}}, {5, 4, {1}}, {5, 6, {1}}, {5, 7, {1}}, {6, 4, {1}},
|
||||
{6, 5, {1}}, {6, 7, {1}}, {7, 4, {1}}, {7, 5, {1}}, {7, 6, {1}},
|
||||
|
||||
{9, 11, 1}, // cell (2, 1, 0)
|
||||
{10, 8, 1}, {11, 10, 1},
|
||||
{9, 11, {1}}, // cell (2, 1, 0)
|
||||
{10, 8, {1}}, {11, 10, {1}},
|
||||
|
||||
{13, 12, 10}, // cell (3, 1, 0)
|
||||
{15, 14, 1},
|
||||
{13, 12, {10}}, // cell (3, 1, 0)
|
||||
{15, 14, {1}},
|
||||
|
||||
{2, 4, 1}, // edge between cells (0, 0, 0) -> (1, 0, 0)
|
||||
{5, 12, 1}, // edge between cells (1, 0, 0) -> (3, 1, 0)
|
||||
{8, 3, 1}, // edge between cells (2, 1, 0) -> (0, 0, 0)
|
||||
{9, 3, 1}, // edge between cells (2, 1, 0) -> (0, 0, 0)
|
||||
{12, 5, 1}, // edge between cells (3, 1, 0) -> (1, 0, 0)
|
||||
{13, 7, 1}, // edge between cells (3, 1, 0) -> (1, 0, 0)
|
||||
{14, 9, 1}, // edge between cells (2, 1, 0) -> (0, 0, 0)
|
||||
{14, 11, 1} // edge between cells (2, 1, 0) -> (0, 0, 0)
|
||||
{2, 4, {1}}, // edge between cells (0, 0, 0) -> (1, 0, 0)
|
||||
{5, 12, {1}}, // edge between cells (1, 0, 0) -> (3, 1, 0)
|
||||
{8, 3, {1}}, // edge between cells (2, 1, 0) -> (0, 0, 0)
|
||||
{9, 3, {1}}, // edge between cells (2, 1, 0) -> (0, 0, 0)
|
||||
{12, 5, {1}}, // edge between cells (3, 1, 0) -> (1, 0, 0)
|
||||
{13, 7, {1}}, // edge between cells (3, 1, 0) -> (1, 0, 0)
|
||||
{14, 9, {1}}, // edge between cells (2, 1, 0) -> (0, 0, 0)
|
||||
{14, 11, {1}} // edge between cells (2, 1, 0) -> (0, 0, 0)
|
||||
};
|
||||
|
||||
auto graph = makeGraph(mlp, edges);
|
||||
@@ -238,48 +238,53 @@ BOOST_AUTO_TEST_CASE(four_levels_test)
|
||||
|
||||
// level 1
|
||||
// cell 0
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetOutWeight(3), 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetInWeight(2), 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetOutWeight(3), EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetInWeight(2), EdgeWeight{1});
|
||||
|
||||
// cell 1
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(4), 0, 1, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(5), 1, 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(7), 1, 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(4), 0, 1, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(5), 1, 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(7), 1, 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(4), EdgeWeight{0}, EdgeWeight{1}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(5), EdgeWeight{1}, EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(7), EdgeWeight{1}, EdgeWeight{1}, EdgeWeight{0});
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(4), EdgeWeight{0}, EdgeWeight{1}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(5), EdgeWeight{1}, EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(7), EdgeWeight{1}, EdgeWeight{1}, EdgeWeight{0});
|
||||
|
||||
// cell 2
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetOutWeight(9), 3, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetOutWeight(11), 2, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetInWeight(8), 3, 2);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetInWeight(11), 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetOutWeight(9), EdgeWeight{3}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetOutWeight(11), EdgeWeight{2}, EdgeWeight{0});
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetInWeight(8), EdgeWeight{3}, EdgeWeight{2});
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetInWeight(11), EdgeWeight{1}, EdgeWeight{0});
|
||||
|
||||
// cell 3
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetOutWeight(13), 10, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetInWeight(12), 10);
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetOutWeight(13), EdgeWeight{10}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetInWeight(12), EdgeWeight{10});
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetInWeight(14), INVALID_EDGE_WEIGHT);
|
||||
|
||||
// level 2
|
||||
// cell 0
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(3), 3, 3);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(5), 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(7), 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetInWeight(5), 3, 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetInWeight(7), 3, 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(3), EdgeWeight{3}, EdgeWeight{3});
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(5), EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(7), EdgeWeight{1}, EdgeWeight{0});
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetInWeight(5), EdgeWeight{3}, EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetInWeight(7), EdgeWeight{3}, EdgeWeight{1}, EdgeWeight{0});
|
||||
|
||||
// cell 1
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutWeight(9), 3, 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutWeight(13), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT, 10);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(8), 3, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(9), 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(12), INVALID_EDGE_WEIGHT, 10);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutWeight(9), EdgeWeight{3}, EdgeWeight{0}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(
|
||||
cell_2_1.GetOutWeight(13), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT, EdgeWeight{10});
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(8), EdgeWeight{3}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(9), EdgeWeight{0}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(12), INVALID_EDGE_WEIGHT, EdgeWeight{10});
|
||||
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutDuration(9), 6, 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutDuration(13), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT, 20);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInDuration(8), 6, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInDuration(9), 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInDuration(12), INVALID_EDGE_WEIGHT, 20);
|
||||
CHECK_EQUAL_RANGE(
|
||||
cell_2_1.GetOutDuration(9), EdgeDuration{6}, EdgeDuration{0}, INVALID_EDGE_DURATION);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutDuration(13),
|
||||
INVALID_EDGE_DURATION,
|
||||
INVALID_EDGE_DURATION,
|
||||
EdgeDuration{20});
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInDuration(8), EdgeDuration{6}, INVALID_EDGE_DURATION);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInDuration(9), EdgeDuration{0}, INVALID_EDGE_DURATION);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInDuration(12), INVALID_EDGE_DURATION, EdgeDuration{20});
|
||||
|
||||
CellStorage storage_rec(mlp, graph);
|
||||
auto metric_rec = storage_rec.MakeMetric();
|
||||
@@ -304,9 +309,10 @@ BOOST_AUTO_TEST_CASE(exclude_test)
|
||||
// 2 ----3 --- 4 --- 7
|
||||
// \__________/
|
||||
std::vector<MockEdge> edges = {
|
||||
{0, 1, 1}, {0, 2, 1}, {1, 0, 1}, {1, 2, 10}, {1, 3, 1}, {1, 5, 1}, {2, 0, 1}, {2, 1, 10},
|
||||
{2, 3, 1}, {2, 4, 1}, {3, 1, 1}, {3, 2, 1}, {3, 4, 1}, {4, 2, 1}, {4, 3, 1}, {4, 5, 1},
|
||||
{4, 7, 1}, {5, 1, 1}, {5, 4, 1}, {5, 6, 1}, {6, 5, 1}, {6, 7, 1}, {7, 4, 1}, {7, 6, 1},
|
||||
{0, 1, {1}}, {0, 2, {1}}, {1, 0, {1}}, {1, 2, {10}}, {1, 3, {1}}, {1, 5, {1}},
|
||||
{2, 0, {1}}, {2, 1, {10}}, {2, 3, {1}}, {2, 4, {1}}, {3, 1, {1}}, {3, 2, {1}},
|
||||
{3, 4, {1}}, {4, 2, {1}}, {4, 3, {1}}, {4, 5, {1}}, {4, 7, {1}}, {5, 1, {1}},
|
||||
{5, 4, {1}}, {5, 6, {1}}, {6, 5, {1}}, {6, 7, {1}}, {7, 4, {1}}, {7, 6, {1}},
|
||||
};
|
||||
|
||||
// node: 0 1 2 3 4 5 6 7
|
||||
@@ -367,20 +373,20 @@ BOOST_AUTO_TEST_CASE(exclude_test)
|
||||
REQUIRE_SIZE_RANGE(cell_1_3.GetInWeight(7), 2);
|
||||
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetOutWeight(0), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetOutWeight(1), INVALID_EDGE_WEIGHT, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetOutWeight(1), INVALID_EDGE_WEIGHT, EdgeWeight{0});
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetInWeight(0), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetInWeight(1), INVALID_EDGE_WEIGHT, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(2), 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_0.GetInWeight(1), INVALID_EDGE_WEIGHT, EdgeWeight{0});
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(2), EdgeWeight{0}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetOutWeight(3), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(2), 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(2), EdgeWeight{0}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_1.GetInWeight(3), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetOutWeight(5), 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetOutWeight(6), 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetInWeight(5), 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetInWeight(6), 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetOutWeight(4), 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetOutWeight(5), EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetOutWeight(6), EdgeWeight{1}, EdgeWeight{0});
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetInWeight(5), EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_1_2.GetInWeight(6), EdgeWeight{1}, EdgeWeight{0});
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetOutWeight(4), EdgeWeight{0}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetOutWeight(7), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetInWeight(4), 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetInWeight(4), EdgeWeight{0}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_1_3.GetInWeight(7), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT);
|
||||
|
||||
auto cell_2_0 = storage.GetCell(metric, 2, 0);
|
||||
@@ -407,19 +413,19 @@ BOOST_AUTO_TEST_CASE(exclude_test)
|
||||
REQUIRE_SIZE_RANGE(cell_2_1.GetInWeight(4), 2);
|
||||
REQUIRE_SIZE_RANGE(cell_2_1.GetInWeight(5), 2);
|
||||
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(1), 0, 10, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(2), 10, 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(1), EdgeWeight{0}, EdgeWeight{10}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetOutWeight(2), EdgeWeight{10}, EdgeWeight{0}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(
|
||||
cell_2_0.GetOutWeight(3), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetInWeight(1), 0, 10, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetInWeight(2), 10, 0, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetInWeight(1), EdgeWeight{0}, EdgeWeight{10}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(cell_2_0.GetInWeight(2), EdgeWeight{10}, EdgeWeight{0}, INVALID_EDGE_WEIGHT);
|
||||
CHECK_EQUAL_RANGE(
|
||||
cell_2_0.GetInWeight(3), INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT, INVALID_EDGE_WEIGHT);
|
||||
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutWeight(4), 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutWeight(5), 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(4), 0, 1);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(5), 1, 0);
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutWeight(4), EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetOutWeight(5), EdgeWeight{1}, EdgeWeight{0});
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(4), EdgeWeight{0}, EdgeWeight{1});
|
||||
CHECK_EQUAL_RANGE(cell_2_1.GetInWeight(5), EdgeWeight{1}, EdgeWeight{0});
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
||||
Reference in New Issue
Block a user