| 95 | } |
| 96 | |
| 97 | void validate_turn_layer(vtzero::layer layer) |
| 98 | { |
| 99 | BOOST_CHECK_EQUAL(layer.version(), 2); |
| 100 | BOOST_CHECK_EQUAL(to_string(layer.name()), "turns"); |
| 101 | BOOST_CHECK_EQUAL(layer.extent(), osrm::util::vector_tile::EXTENT); |
| 102 | BOOST_CHECK_EQUAL(layer.key_table().size(), 6); |
| 103 | BOOST_CHECK(layer.num_features() > 700); |
| 104 | |
| 105 | while (auto feature = layer.next_feature()) |
| 106 | { |
| 107 | BOOST_CHECK(feature.has_id()); |
| 108 | BOOST_CHECK(feature.geometry_type() == vtzero::GeomType::POINT); |
| 109 | BOOST_CHECK(!feature.empty()); |
| 110 | |
| 111 | auto props = vtzero::create_properties_map<std::map<std::string, variant_type>>(feature); |
| 112 | |
| 113 | BOOST_CHECK(props.contains("bearing_in")); |
| 114 | BOOST_CHECK(std::holds_alternative<std::int64_t>(props["bearing_in"])); |
| 115 | |
| 116 | BOOST_CHECK(props.contains("turn_angle")); |
| 117 | BOOST_CHECK(std::holds_alternative<std::int64_t>(props["turn_angle"])); |
| 118 | |
| 119 | BOOST_CHECK(props.contains("weight")); |
| 120 | BOOST_CHECK(std::holds_alternative<float>(props["weight"])); |
| 121 | |
| 122 | BOOST_CHECK(props.contains("cost")); |
| 123 | BOOST_CHECK(std::holds_alternative<float>(props["cost"])); |
| 124 | |
| 125 | BOOST_CHECK(props.contains("type")); |
| 126 | BOOST_CHECK(std::holds_alternative<std::string>(props["type"])); |
| 127 | |
| 128 | BOOST_CHECK(props.contains("modifier")); |
| 129 | BOOST_CHECK(std::holds_alternative<std::string>(props["modifier"])); |
| 130 | } |
| 131 | |
| 132 | auto number_of_float_values = |
| 133 | std::count_if(layer.value_table().begin(), |
| 134 | layer.value_table().end(), |
| 135 | [](auto v) { return v.type() == vtzero::property_value_type::float_value; }); |
| 136 | |
| 137 | BOOST_CHECK_EQUAL(number_of_float_values, 73); |
| 138 | } |
| 139 | |
| 140 | void validate_node_layer(vtzero::layer layer) |
| 141 | { |