compress traffic signals
- handle penalties within edges (not phantom nodes) - changes model from providing penalties on turns to using additional segments
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
#include "util/node_based_graph.hpp"
|
||||
#include "util/typedefs.hpp"
|
||||
|
||||
#include "../unit_tests/mocks/mock_scripting_environment.hpp"
|
||||
|
||||
#include <boost/test/test_case_template.hpp>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
@@ -55,6 +57,7 @@ BOOST_AUTO_TEST_CASE(long_road_test)
|
||||
std::unordered_set<NodeID> traffic_lights;
|
||||
std::vector<TurnRestriction> restrictions;
|
||||
CompressedEdgeContainer container;
|
||||
test::MockScriptingEnvironment scripting_environment;
|
||||
|
||||
std::vector<InputEdge> edges = {MakeUnitEdge(0, 1),
|
||||
MakeUnitEdge(1, 0),
|
||||
@@ -70,7 +73,8 @@ BOOST_AUTO_TEST_CASE(long_road_test)
|
||||
BOOST_ASSERT(edges[4].data.IsCompatibleTo(edges[6].data));
|
||||
|
||||
Graph graph(5, edges);
|
||||
compressor.Compress(barrier_nodes, traffic_lights, restrictions, graph, container);
|
||||
compressor.Compress(
|
||||
barrier_nodes, traffic_lights, scripting_environment, restrictions, graph, container);
|
||||
|
||||
BOOST_CHECK_EQUAL(graph.FindEdge(0, 1), SPECIAL_EDGEID);
|
||||
BOOST_CHECK_EQUAL(graph.FindEdge(1, 2), SPECIAL_EDGEID);
|
||||
@@ -92,6 +96,7 @@ BOOST_AUTO_TEST_CASE(loop_test)
|
||||
std::unordered_set<NodeID> traffic_lights;
|
||||
std::vector<TurnRestriction> restrictions;
|
||||
CompressedEdgeContainer container;
|
||||
test::MockScriptingEnvironment scripting_environment;
|
||||
|
||||
std::vector<InputEdge> edges = {MakeUnitEdge(0, 1),
|
||||
MakeUnitEdge(0, 5),
|
||||
@@ -120,7 +125,8 @@ BOOST_AUTO_TEST_CASE(loop_test)
|
||||
BOOST_ASSERT(edges[10].data.IsCompatibleTo(edges[11].data));
|
||||
|
||||
Graph graph(6, edges);
|
||||
compressor.Compress(barrier_nodes, traffic_lights, restrictions, graph, container);
|
||||
compressor.Compress(
|
||||
barrier_nodes, traffic_lights, scripting_environment, restrictions, graph, container);
|
||||
|
||||
BOOST_CHECK_EQUAL(graph.FindEdge(5, 0), SPECIAL_EDGEID);
|
||||
BOOST_CHECK_EQUAL(graph.FindEdge(0, 1), SPECIAL_EDGEID);
|
||||
@@ -144,6 +150,7 @@ BOOST_AUTO_TEST_CASE(t_intersection)
|
||||
std::unordered_set<NodeID> traffic_lights;
|
||||
std::vector<TurnRestriction> restrictions;
|
||||
CompressedEdgeContainer container;
|
||||
test::MockScriptingEnvironment scripting_environment;
|
||||
|
||||
std::vector<InputEdge> edges = {MakeUnitEdge(0, 1),
|
||||
MakeUnitEdge(1, 0),
|
||||
@@ -159,7 +166,8 @@ BOOST_AUTO_TEST_CASE(t_intersection)
|
||||
BOOST_ASSERT(edges[4].data.IsCompatibleTo(edges[5].data));
|
||||
|
||||
Graph graph(4, edges);
|
||||
compressor.Compress(barrier_nodes, traffic_lights, restrictions, graph, container);
|
||||
compressor.Compress(
|
||||
barrier_nodes, traffic_lights, scripting_environment, restrictions, graph, container);
|
||||
|
||||
BOOST_CHECK(graph.FindEdge(0, 1) != SPECIAL_EDGEID);
|
||||
BOOST_CHECK(graph.FindEdge(1, 2) != SPECIAL_EDGEID);
|
||||
@@ -177,6 +185,7 @@ BOOST_AUTO_TEST_CASE(street_name_changes)
|
||||
std::unordered_set<NodeID> traffic_lights;
|
||||
std::vector<TurnRestriction> restrictions;
|
||||
CompressedEdgeContainer container;
|
||||
test::MockScriptingEnvironment scripting_environment;
|
||||
|
||||
std::vector<InputEdge> edges = {
|
||||
MakeUnitEdge(0, 1), MakeUnitEdge(1, 0), MakeUnitEdge(1, 2), MakeUnitEdge(2, 1)};
|
||||
@@ -186,7 +195,8 @@ BOOST_AUTO_TEST_CASE(street_name_changes)
|
||||
BOOST_ASSERT(edges[2].data.IsCompatibleTo(edges[3].data));
|
||||
|
||||
Graph graph(5, edges);
|
||||
compressor.Compress(barrier_nodes, traffic_lights, restrictions, graph, container);
|
||||
compressor.Compress(
|
||||
barrier_nodes, traffic_lights, scripting_environment, restrictions, graph, container);
|
||||
|
||||
BOOST_CHECK(graph.FindEdge(0, 1) != SPECIAL_EDGEID);
|
||||
BOOST_CHECK(graph.FindEdge(1, 2) != SPECIAL_EDGEID);
|
||||
@@ -203,6 +213,7 @@ BOOST_AUTO_TEST_CASE(direction_changes)
|
||||
std::unordered_set<NodeID> traffic_lights;
|
||||
std::vector<TurnRestriction> restrictions;
|
||||
CompressedEdgeContainer container;
|
||||
test::MockScriptingEnvironment scripting_environment;
|
||||
|
||||
std::vector<InputEdge> edges = {
|
||||
MakeUnitEdge(0, 1), MakeUnitEdge(1, 0), MakeUnitEdge(1, 2), MakeUnitEdge(2, 1)};
|
||||
@@ -210,7 +221,8 @@ BOOST_AUTO_TEST_CASE(direction_changes)
|
||||
edges[1].data.reversed = true;
|
||||
|
||||
Graph graph(5, edges);
|
||||
compressor.Compress(barrier_nodes, traffic_lights, restrictions, graph, container);
|
||||
compressor.Compress(
|
||||
barrier_nodes, traffic_lights, scripting_environment, restrictions, graph, container);
|
||||
|
||||
BOOST_CHECK(graph.FindEdge(0, 1) != SPECIAL_EDGEID);
|
||||
BOOST_CHECK(graph.FindEdge(1, 2) != SPECIAL_EDGEID);
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
#ifndef MOCK_SCRIPTING_ENVIRONMENT_HPP_
|
||||
#define MOCK_SCRIPTING_ENVIRONMENT_HPP_
|
||||
|
||||
#include "extractor/extraction_segment.hpp"
|
||||
#include "extractor/extraction_turn.hpp"
|
||||
#include "extractor/profile_properties.hpp"
|
||||
#include "extractor/scripting_environment.hpp"
|
||||
|
||||
#include <string>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
namespace osrm
|
||||
{
|
||||
|
||||
namespace test
|
||||
{
|
||||
|
||||
// a mock implementation of the scripting environment doing exactly nothing
|
||||
class MockScriptingEnvironment : public extractor::ScriptingEnvironment
|
||||
{
|
||||
|
||||
const extractor::ProfileProperties &GetProfileProperties() override final
|
||||
{
|
||||
static extractor::ProfileProperties properties;
|
||||
return properties;
|
||||
}
|
||||
|
||||
std::vector<std::string> GetNameSuffixList() override final { return {}; }
|
||||
|
||||
std::vector<std::string> GetRestrictions() override final { return {}; }
|
||||
void ProcessTurn(extractor::ExtractionTurn &) override final {}
|
||||
void ProcessSegment(extractor::ExtractionSegment &) override final {}
|
||||
|
||||
void ProcessElements(const osmium::memory::Buffer &,
|
||||
const extractor::RestrictionParser &,
|
||||
std::vector<std::pair<const osmium::Node &, extractor::ExtractionNode>> &,
|
||||
std::vector<std::pair<const osmium::Way &, extractor::ExtractionWay>> &,
|
||||
std::vector<extractor::InputConditionalTurnRestriction> &) override final
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace test
|
||||
} // namespace osrm
|
||||
|
||||
#endif // MOCK_SCRIPTING_ENVIRONMENT_HPP_
|
||||
Reference in New Issue
Block a user