/srv/osrm/osrm-backend/unit_tests/util
NameSizeModeActions
bearing.cpp31040644editdlrm
bit_range.cpp27720644editdlrm
conditional_restrictions_parsing.cpp14970644editdlrm
connectivity_checksum.cpp24980644editdlrm
coordinate_calculation.cpp188150644editdlrm
duration_parsing.cpp30520644editdlrm
dynamic_graph.cpp52770644editdlrm
filtered_integer_range.cpp13380644editdlrm
group_by.cpp14760644editdlrm
hilbert_values.cpp38960644editdlrm
indexed_data.cpp55890644editdlrm
io.cpp68500644editdlrm
json_render.cpp21490644editdlrm
opening_hours_parsing.cpp187640644editdlrm
packed_vector.cpp96060644editdlrm
permutation.cpp7920644editdlrm
query_heap.cpp40430644editdlrm
range_table.cpp31460644editdlrm
rectangle.cpp69230644editdlrm
serialization.cpp43030644editdlrm
static_graph.cpp66550644editdlrm
static_rtree.cpp194780644editdlrm
string_util.cpp11570644editdlrm
vector_view.cpp19290644editdlrm
viewport.cpp5710644editdlrm
web_mercator.cpp29750644editdlrm
Edit: /srv/osrm/osrm-backend/unit_tests/util/dynamic_graph.cpp (5277B)
#include "util/dynamic_graph.hpp" #include "util/typedefs.hpp" #include "../common/range_tools.hpp" #include #include BOOST_AUTO_TEST_SUITE(dynamic_graph) using namespace osrm; using namespace osrm::util; struct TestData { EdgeID id; }; using TestDynamicGraph = DynamicGraph; using TestInputEdge = TestDynamicGraph::InputEdge; BOOST_AUTO_TEST_CASE(find_test) { /* * (0) -1-> (1) * ^ ^ * 2 5 * | | * (3) -3-> (4) * <-4- */ std::vector input_edges = {TestInputEdge{0, 1, TestData{1}}, TestInputEdge{3, 0, TestData{2}}, TestInputEdge{3, 0, TestData{5}}, TestInputEdge{3, 4, TestData{3}}, TestInputEdge{4, 3, TestData{4}}}; TestDynamicGraph simple_graph(5, input_edges); auto eit = simple_graph.FindEdge(0, 1); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 1); eit = simple_graph.FindEdge(1, 0); BOOST_CHECK_EQUAL(eit, SPECIAL_EDGEID); eit = simple_graph.FindEdgeInEitherDirection(1, 0); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 1); bool reverse = false; eit = simple_graph.FindEdgeIndicateIfReverse(1, 0, reverse); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 1); BOOST_CHECK(reverse); eit = simple_graph.FindEdge(3, 1); BOOST_CHECK_EQUAL(eit, SPECIAL_EDGEID); eit = simple_graph.FindEdge(0, 4); BOOST_CHECK_EQUAL(eit, SPECIAL_EDGEID); eit = simple_graph.FindEdge(3, 4); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 3); eit = simple_graph.FindEdgeInEitherDirection(3, 4); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 3); eit = simple_graph.FindEdge(3, 0); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 2); } BOOST_AUTO_TEST_CASE(renumber_test) { /* * (0) -1-> (1) * ^ ^ * 2 5 * | | * (3) -3-> (4) * <-4- */ std::vector input_edges = {TestInputEdge{0, 1, TestData{1}}, TestInputEdge{3, 0, TestData{2}}, TestInputEdge{3, 0, TestData{5}}, TestInputEdge{3, 4, TestData{3}}, TestInputEdge{4, 3, TestData{4}}}; TestDynamicGraph simple_graph(5, input_edges); /* * (1) -1-> (3) * ^ ^ * 2 5 * | | * (0) -3-> (2) * <-4- */ simple_graph.Renumber({1, 3, 4, 0, 2}); auto eit = simple_graph.FindEdge(1, 3); BOOST_CHECK(eit != SPECIAL_EDGEID); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 1); eit = simple_graph.FindEdge(3, 1); BOOST_CHECK_EQUAL(eit, SPECIAL_EDGEID); eit = simple_graph.FindEdgeInEitherDirection(3, 1); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 1); bool reverse = false; eit = simple_graph.FindEdgeIndicateIfReverse(3, 1, reverse); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 1); BOOST_CHECK(reverse); eit = simple_graph.FindEdge(0, 3); BOOST_CHECK_EQUAL(eit, SPECIAL_EDGEID); eit = simple_graph.FindEdge(1, 2); BOOST_CHECK_EQUAL(eit, SPECIAL_EDGEID); eit = simple_graph.FindEdge(0, 2); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 3); eit = simple_graph.FindEdgeInEitherDirection(0, 2); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 3); eit = simple_graph.FindEdge(0, 1); BOOST_CHECK_EQUAL(simple_graph.GetEdgeData(eit).id, 2); } BOOST_AUTO_TEST_CASE(filter_test) { /* * (0) -1-> (1) * ^ ^ ^ * 2 5 1 * | | | * (3) -3-> (4) * <-4- */ std::vector input_edges = {TestInputEdge{0, 1, TestData{1}}, TestInputEdge{3, 0, TestData{2}}, TestInputEdge{3, 0, TestData{5}}, TestInputEdge{3, 4, TestData{3}}, TestInputEdge{4, 1, TestData{1}}, TestInputEdge{4, 3, TestData{4}}}; TestDynamicGraph simple_graph(5, input_edges); // only keep 0, 1, 4 -> filter out all edges from/to 3 auto filtered_simple_graph = simple_graph.Filter([](const NodeID node) { return node == 0 || node == 1 || node == 4; }); REQUIRE_SIZE_RANGE(filtered_simple_graph.GetAdjacentEdgeRange(0), 1); CHECK_EQUAL_RANGE(filtered_simple_graph.GetAdjacentEdgeRange(0), filtered_simple_graph.FindEdge(0, 1)); REQUIRE_SIZE_RANGE(filtered_simple_graph.GetAdjacentEdgeRange(1), 0); REQUIRE_SIZE_RANGE(filtered_simple_graph.GetAdjacentEdgeRange(2), 0); REQUIRE_SIZE_RANGE(filtered_simple_graph.GetAdjacentEdgeRange(3), 0); REQUIRE_SIZE_RANGE(filtered_simple_graph.GetAdjacentEdgeRange(4), 1); CHECK_EQUAL_RANGE(filtered_simple_graph.GetAdjacentEdgeRange(4), filtered_simple_graph.FindEdge(4, 1)); } BOOST_AUTO_TEST_SUITE_END()