Skip to content

Commit f4bf76c

Browse files
committed
Refactor tile tests
1 parent 1142a9e commit f4bf76c

File tree

1 file changed

+76
-54
lines changed

1 file changed

+76
-54
lines changed

unit_tests/library/tile.cpp

Lines changed: 76 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,38 @@
2121

2222
BOOST_AUTO_TEST_SUITE(tile)
2323

24-
template <typename algorithm> void test_tile(algorithm &osrm)
24+
void validate_value(protozero::pbf_reader value)
2525
{
2626
using namespace osrm;
27+
while (value.next())
28+
{
29+
switch (value.tag())
30+
{
31+
case util::vector_tile::VARIANT_TYPE_BOOL:
32+
value.get_bool();
33+
break;
34+
case util::vector_tile::VARIANT_TYPE_DOUBLE:
35+
value.get_double();
36+
break;
37+
case util::vector_tile::VARIANT_TYPE_FLOAT:
38+
value.get_float();
39+
break;
40+
case util::vector_tile::VARIANT_TYPE_STRING:
41+
value.get_string();
42+
break;
43+
case util::vector_tile::VARIANT_TYPE_UINT64:
44+
value.get_uint64();
45+
break;
46+
case util::vector_tile::VARIANT_TYPE_SINT64:
47+
value.get_sint64();
48+
break;
49+
}
50+
}
51+
}
2752

28-
// This tile should contain most of monaco
29-
TileParameters params{17059, 11948, 15};
30-
31-
std::string result;
32-
const auto rc = osrm.Tile(params, result);
33-
BOOST_CHECK(rc == Status::Ok);
34-
35-
BOOST_CHECK(result.size() > 114000);
36-
37-
protozero::pbf_reader tile_message(result);
38-
tile_message.next();
39-
BOOST_CHECK_EQUAL(tile_message.tag(), util::vector_tile::LAYER_TAG); // must be a layer
40-
protozero::pbf_reader layer_message = tile_message.get_message();
53+
void validate_feature_layer(protozero::pbf_reader &layer_message)
54+
{
55+
using namespace osrm;
4156

4257
const auto check_feature = [](protozero::pbf_reader feature_message) {
4358
feature_message.next(); // advance parser to first entry
@@ -82,33 +97,6 @@ template <typename algorithm> void test_tile(algorithm &osrm)
8297
BOOST_CHECK_GT(std::distance(geometry_iter_pair.begin(), geometry_iter_pair.end()), 1);
8398
};
8499

85-
const auto check_value = [](protozero::pbf_reader value) {
86-
while (value.next())
87-
{
88-
switch (value.tag())
89-
{
90-
case util::vector_tile::VARIANT_TYPE_BOOL:
91-
value.get_bool();
92-
break;
93-
case util::vector_tile::VARIANT_TYPE_DOUBLE:
94-
value.get_double();
95-
break;
96-
case util::vector_tile::VARIANT_TYPE_FLOAT:
97-
value.get_float();
98-
break;
99-
case util::vector_tile::VARIANT_TYPE_STRING:
100-
value.get_string();
101-
break;
102-
case util::vector_tile::VARIANT_TYPE_UINT64:
103-
value.get_uint64();
104-
break;
105-
case util::vector_tile::VARIANT_TYPE_SINT64:
106-
value.get_sint64();
107-
break;
108-
}
109-
}
110-
};
111-
112100
auto number_of_speed_keys = 0u;
113101
auto number_of_speed_values = 0u;
114102

@@ -133,7 +121,7 @@ template <typename algorithm> void test_tile(algorithm &osrm)
133121
number_of_speed_keys++;
134122
break;
135123
case util::vector_tile::VARIANT_TAG:
136-
check_value(layer_message.get_message());
124+
validate_value(layer_message.get_message());
137125
number_of_speed_values++;
138126
break;
139127
default:
@@ -144,9 +132,11 @@ template <typename algorithm> void test_tile(algorithm &osrm)
144132

145133
BOOST_CHECK_EQUAL(number_of_speed_keys, 7);
146134
BOOST_CHECK_GT(number_of_speed_values, 128); // speed value resolution
135+
}
147136

148-
tile_message.next();
149-
layer_message = tile_message.get_message();
137+
void validate_turn_layer(protozero::pbf_reader &layer_message)
138+
{
139+
using namespace osrm;
150140

151141
const auto check_turn_feature = [](protozero::pbf_reader feature_message) {
152142
feature_message.next(); // advance parser to first entry
@@ -203,7 +193,7 @@ template <typename algorithm> void test_tile(algorithm &osrm)
203193
number_of_turn_keys++;
204194
break;
205195
case util::vector_tile::VARIANT_TAG:
206-
check_value(layer_message.get_message());
196+
validate_value(layer_message.get_message());
207197
break;
208198
default:
209199
BOOST_CHECK(false); // invalid tag
@@ -213,10 +203,11 @@ template <typename algorithm> void test_tile(algorithm &osrm)
213203

214204
BOOST_CHECK_EQUAL(number_of_turn_keys, 4);
215205
BOOST_CHECK(number_of_turns_found > 700);
206+
}
216207

217-
tile_message.next();
218-
layer_message = tile_message.get_message();
219-
208+
void validate_node_layer(protozero::pbf_reader &layer_message)
209+
{
210+
using namespace osrm;
220211
auto number_of_nodes_found = 0u;
221212

222213
const auto check_osmnode_feature = [](protozero::pbf_reader feature_message) {
@@ -267,29 +258,60 @@ template <typename algorithm> void test_tile(algorithm &osrm)
267258
BOOST_CHECK_EQUAL(number_of_nodes_found, 1791);
268259
}
269260

261+
void validate_tile(const osrm::OSRM &osrm)
262+
{
263+
using namespace osrm;
264+
265+
// This tile should contain most of monaco
266+
TileParameters params{17059, 11948, 15};
267+
268+
std::string result;
269+
const auto rc = osrm.Tile(params, result);
270+
BOOST_CHECK(rc == Status::Ok);
271+
272+
BOOST_CHECK(result.size() > 114000);
273+
274+
protozero::pbf_reader tile_message(result);
275+
276+
tile_message.next();
277+
BOOST_CHECK_EQUAL(tile_message.tag(), util::vector_tile::LAYER_TAG); // must be a layer
278+
protozero::pbf_reader layer_message = tile_message.get_message();
279+
validate_feature_layer(layer_message);
280+
281+
tile_message.next();
282+
BOOST_CHECK_EQUAL(tile_message.tag(), util::vector_tile::LAYER_TAG); // must be a layer
283+
layer_message = tile_message.get_message();
284+
validate_turn_layer(layer_message);
285+
286+
tile_message.next();
287+
BOOST_CHECK_EQUAL(tile_message.tag(), util::vector_tile::LAYER_TAG); // must be a layer
288+
layer_message = tile_message.get_message();
289+
validate_node_layer(layer_message);
290+
}
291+
270292
BOOST_AUTO_TEST_CASE(test_tile_ch)
271293
{
272294
using namespace osrm;
273295
auto osrm = getOSRM(OSRM_TEST_DATA_DIR "/ch/monaco.osrm", osrm::EngineConfig::Algorithm::CH);
274-
test_tile(osrm);
296+
validate_tile(osrm);
275297
}
276298

277299
BOOST_AUTO_TEST_CASE(test_tile_corech)
278300
{
279301
using namespace osrm;
280302
auto osrm =
281303
getOSRM(OSRM_TEST_DATA_DIR "/corech/monaco.osrm", osrm::EngineConfig::Algorithm::CoreCH);
282-
test_tile(osrm);
304+
validate_tile(osrm);
283305
}
284306

285307
BOOST_AUTO_TEST_CASE(test_tile_mld)
286308
{
287309
using namespace osrm;
288310
auto osrm = getOSRM(OSRM_TEST_DATA_DIR "/mld/monaco.osrm", osrm::EngineConfig::Algorithm::MLD);
289-
test_tile(osrm);
311+
validate_tile(osrm);
290312
}
291313

292-
template <typename algorithm> void test_tile_turns(algorithm &osrm)
314+
void test_tile_turns(const osrm::OSRM &osrm)
293315
{
294316
using namespace osrm;
295317

@@ -476,7 +498,7 @@ BOOST_AUTO_TEST_CASE(test_tile_turns_mld)
476498
test_tile_turns(osrm);
477499
}
478500

479-
template <typename algorithm> void test_tile_speeds(algorithm &osrm)
501+
void test_tile_speeds(const osrm::OSRM &osrm)
480502
{
481503
using namespace osrm;
482504

@@ -666,7 +688,7 @@ BOOST_AUTO_TEST_CASE(test_tile_speeds_mld)
666688
test_tile_speeds(osrm);
667689
}
668690

669-
template <typename algorithm> void test_tile_nodes(algorithm &osrm)
691+
void test_tile_nodes(const osrm::OSRM &osrm)
670692
{
671693
using namespace osrm;
672694

0 commit comments

Comments
 (0)