39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
#ifndef OSRM_UNIT_TESTS_CONTRACTOR_HELPER_HPP_
|
|
#define OSRM_UNIT_TESTS_CONTRACTOR_HELPER_HPP_
|
|
|
|
#include "contractor/contractor_graph.hpp"
|
|
|
|
namespace osrm
|
|
{
|
|
namespace unit_test
|
|
{
|
|
|
|
using TestEdge = std::tuple<unsigned, unsigned, int>;
|
|
inline contractor::ContractorGraph makeGraph(const std::vector<TestEdge> &edges)
|
|
{
|
|
std::vector<contractor::ContractorEdge> input_edges;
|
|
auto id = 0u;
|
|
auto max_id = 0u;
|
|
for (const auto &edge : edges)
|
|
{
|
|
unsigned start;
|
|
unsigned target;
|
|
int weight;
|
|
std::tie(start, target, weight) = edge;
|
|
max_id = std::max(std::max(start, target), max_id);
|
|
input_edges.push_back(contractor::ContractorEdge{
|
|
start, target, contractor::ContractorEdgeData{weight, weight * 2, id++, 0, false, true, false}});
|
|
input_edges.push_back(contractor::ContractorEdge{
|
|
target, start, contractor::ContractorEdgeData{weight, weight * 2, id++, 0, false, false, true}});
|
|
}
|
|
std::sort(input_edges.begin(), input_edges.end());
|
|
|
|
return contractor::ContractorGraph{max_id + 1, std::move(input_edges)};
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
#endif
|