Merge commit '788bc67faa7738cf7c6b2a192ecf3e3567d1c20e' into develop
This commit is contained in:
+19
-13
@@ -9,7 +9,7 @@
|
||||
|
||||
inline void add_tags(osmium::memory::Buffer& buffer, osmium::builder::Builder& builder, const std::vector<std::pair<const char*, const char*>>& tags) {
|
||||
osmium::builder::TagListBuilder tl_builder(buffer, &builder);
|
||||
for (auto& tag : tags) {
|
||||
for (const auto& tag : tags) {
|
||||
tl_builder.add_tag(tag.first, tag.second);
|
||||
}
|
||||
}
|
||||
@@ -26,9 +26,11 @@ inline osmium::Way& buffer_add_way(osmium::memory::Buffer& buffer, const char* u
|
||||
osmium::builder::WayBuilder builder(buffer);
|
||||
builder.add_user(user);
|
||||
add_tags(buffer, builder, tags);
|
||||
osmium::builder::WayNodeListBuilder wnl_builder(buffer, &builder);
|
||||
for (const osmium::object_id_type ref : nodes) {
|
||||
wnl_builder.add_node_ref(ref);
|
||||
{
|
||||
osmium::builder::WayNodeListBuilder wnl_builder(buffer, &builder);
|
||||
for (const osmium::object_id_type ref : nodes) {
|
||||
wnl_builder.add_node_ref(ref);
|
||||
}
|
||||
}
|
||||
buffer.commit();
|
||||
return builder.object();
|
||||
@@ -38,9 +40,11 @@ inline osmium::Way& buffer_add_way(osmium::memory::Buffer& buffer, const char* u
|
||||
osmium::builder::WayBuilder builder(buffer);
|
||||
builder.add_user(user);
|
||||
add_tags(buffer, builder, tags);
|
||||
osmium::builder::WayNodeListBuilder wnl_builder(buffer, &builder);
|
||||
for (auto& p : nodes) {
|
||||
wnl_builder.add_node_ref(p.first, p.second);
|
||||
{
|
||||
osmium::builder::WayNodeListBuilder wnl_builder(buffer, &builder);
|
||||
for (const auto& p : nodes) {
|
||||
wnl_builder.add_node_ref(p.first, p.second);
|
||||
}
|
||||
}
|
||||
buffer.commit();
|
||||
return builder.object();
|
||||
@@ -53,9 +57,11 @@ inline osmium::Relation& buffer_add_relation(
|
||||
osmium::builder::RelationBuilder builder(buffer);
|
||||
builder.add_user(user);
|
||||
add_tags(buffer, builder, tags);
|
||||
osmium::builder::RelationMemberListBuilder rml_builder(buffer, &builder);
|
||||
for (const auto& member : members) {
|
||||
rml_builder.add_member(osmium::char_to_item_type(std::get<0>(member)), std::get<1>(member), std::get<2>(member));
|
||||
{
|
||||
osmium::builder::RelationMemberListBuilder rml_builder(buffer, &builder);
|
||||
for (const auto& member : members) {
|
||||
rml_builder.add_member(osmium::char_to_item_type(std::get<0>(member)), std::get<1>(member), std::get<2>(member));
|
||||
}
|
||||
}
|
||||
buffer.commit();
|
||||
return builder.object();
|
||||
@@ -69,15 +75,15 @@ inline osmium::Area& buffer_add_area(osmium::memory::Buffer& buffer, const char*
|
||||
builder.add_user(user);
|
||||
add_tags(buffer, builder, tags);
|
||||
|
||||
for (auto& ring : rings) {
|
||||
for (const auto& ring : rings) {
|
||||
if (ring.first) {
|
||||
osmium::builder::OuterRingBuilder ring_builder(buffer, &builder);
|
||||
for (auto& p : ring.second) {
|
||||
for (const auto& p : ring.second) {
|
||||
ring_builder.add_node_ref(p.first, p.second);
|
||||
}
|
||||
} else {
|
||||
osmium::builder::InnerRingBuilder ring_builder(buffer, &builder);
|
||||
for (auto& p : ring.second) {
|
||||
for (const auto& p : ring.second) {
|
||||
ring_builder.add_node_ref(p.first, p.second);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include <boost/crc.hpp>
|
||||
|
||||
#include <osmium/osm/box.hpp>
|
||||
#include <osmium/osm/crc.hpp>
|
||||
#include <osmium/geom/relations.hpp>
|
||||
|
||||
TEST_CASE("Box") {
|
||||
@@ -48,6 +51,10 @@ TEST_CASE("Box") {
|
||||
REQUIRE(b.contains(loc1));
|
||||
REQUIRE(b.contains(loc2));
|
||||
REQUIRE(b.contains(loc3));
|
||||
|
||||
osmium::CRC<boost::crc_32_type> crc32;
|
||||
crc32.update(b);
|
||||
REQUIRE(crc32().checksum() == 0xd381a838);
|
||||
}
|
||||
|
||||
SECTION("output_defined") {
|
||||
|
||||
+9
-3
@@ -1,12 +1,16 @@
|
||||
#include "catch.hpp"
|
||||
|
||||
#include <boost/crc.hpp>
|
||||
|
||||
#include <osmium/osm/changeset.hpp>
|
||||
#include <osmium/osm/crc.hpp>
|
||||
|
||||
#include "helper.hpp"
|
||||
|
||||
TEST_CASE("Basic_Changeset") {
|
||||
TEST_CASE("Basic Changeset") {
|
||||
|
||||
osmium::CRC<boost::crc_32_type> crc32;
|
||||
|
||||
SECTION("changeset_builder") {
|
||||
osmium::memory::Buffer buffer(10 * 1000);
|
||||
|
||||
osmium::Changeset& cs1 = buffer_add_changeset(buffer,
|
||||
@@ -28,6 +32,9 @@ SECTION("changeset_builder") {
|
||||
REQUIRE(1 == cs1.tags().size());
|
||||
REQUIRE(std::string("user") == cs1.user());
|
||||
|
||||
crc32.update(cs1);
|
||||
REQUIRE(crc32().checksum() == 0xf44aff25);
|
||||
|
||||
osmium::Changeset& cs2 = buffer_add_changeset(buffer,
|
||||
"user",
|
||||
{{"comment", "foo"}, {"foo", "bar"}});
|
||||
@@ -52,6 +59,5 @@ SECTION("changeset_builder") {
|
||||
REQUIRE(cs1 <= cs2);
|
||||
REQUIRE(false == (cs1 > cs2));
|
||||
REQUIRE(false == (cs1 >= cs2));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
#include "catch.hpp"
|
||||
|
||||
#include <boost/crc.hpp>
|
||||
|
||||
#include <osmium/osm/crc.hpp>
|
||||
|
||||
#include "helper.hpp"
|
||||
|
||||
TEST_CASE("CRC of basic datatypes") {
|
||||
|
||||
osmium::CRC<boost::crc_32_type> crc32;
|
||||
|
||||
SECTION("Bool") {
|
||||
crc32.update_bool(true);
|
||||
crc32.update_bool(false);
|
||||
|
||||
REQUIRE(crc32().checksum() == 0x58c223be);
|
||||
}
|
||||
|
||||
SECTION("Char") {
|
||||
crc32.update_int8('x');
|
||||
crc32.update_int8('y');
|
||||
|
||||
REQUIRE(crc32().checksum() == 0x8fe62899);
|
||||
}
|
||||
|
||||
SECTION("String") {
|
||||
const char* str = "foobar";
|
||||
crc32.update_string(str);
|
||||
|
||||
REQUIRE(crc32().checksum() == 0x9ef61f95);
|
||||
}
|
||||
|
||||
SECTION("Timestamp") {
|
||||
osmium::Timestamp t("2015-07-12T13:10:46Z");
|
||||
crc32.update(t);
|
||||
|
||||
REQUIRE(crc32().checksum() == 0x58a29d7);
|
||||
}
|
||||
|
||||
SECTION("Location") {
|
||||
osmium::Location loc { 3.46, 2.001 };
|
||||
crc32.update(loc);
|
||||
|
||||
REQUIRE(crc32().checksum() == 0xddee042c);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
#include "catch.hpp"
|
||||
|
||||
#include <boost/crc.hpp>
|
||||
|
||||
#include <osmium/osm/crc.hpp>
|
||||
#include <osmium/osm/node.hpp>
|
||||
|
||||
#include "helper.hpp"
|
||||
|
||||
TEST_CASE("Basic_Node") {
|
||||
|
||||
osmium::CRC<boost::crc_32_type> crc32;
|
||||
|
||||
SECTION("node_builder") {
|
||||
osmium::memory::Buffer buffer(10000);
|
||||
|
||||
@@ -36,6 +41,9 @@ SECTION("node_builder") {
|
||||
REQUIRE(osmium::Location(3.5, 4.7) == node.location());
|
||||
REQUIRE(2 == node.tags().size());
|
||||
|
||||
crc32.update(node);
|
||||
REQUIRE(crc32().checksum() == 0xc696802f);
|
||||
|
||||
node.set_visible(false);
|
||||
REQUIRE(false == node.visible());
|
||||
REQUIRE(true == node.deleted());
|
||||
|
||||
+8
-3
@@ -1,12 +1,16 @@
|
||||
#include "catch.hpp"
|
||||
|
||||
#include <boost/crc.hpp>
|
||||
|
||||
#include <osmium/osm/crc.hpp>
|
||||
#include <osmium/osm/relation.hpp>
|
||||
|
||||
#include "helper.hpp"
|
||||
|
||||
TEST_CASE("Basic_Relation") {
|
||||
TEST_CASE("Build relation") {
|
||||
|
||||
osmium::CRC<boost::crc_32_type> crc32;
|
||||
|
||||
SECTION("relation_builder") {
|
||||
osmium::memory::Buffer buffer(10000);
|
||||
|
||||
osmium::Relation& relation = buffer_add_relation(buffer,
|
||||
@@ -55,6 +59,7 @@ SECTION("relation_builder") {
|
||||
}
|
||||
++n;
|
||||
}
|
||||
}
|
||||
|
||||
crc32.update(relation);
|
||||
REQUIRE(crc32().checksum() == 0xebcd836d);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,10 @@ TEST_CASE("Timestamp") {
|
||||
REQUIRE("2000-01-01T00:00:00Z" == t.to_iso());
|
||||
}
|
||||
|
||||
SECTION("throws if initialized from bad string") {
|
||||
REQUIRE_THROWS_AS(osmium::Timestamp("x"), std::invalid_argument);
|
||||
}
|
||||
|
||||
SECTION("can be implicitly cast to time_t") {
|
||||
osmium::Timestamp t(4242);
|
||||
time_t x = t;
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
#include "catch.hpp"
|
||||
|
||||
#include <osmium/osm/types.hpp>
|
||||
#include <osmium/osm/types_from_string.hpp>
|
||||
|
||||
TEST_CASE("set ID from string") {
|
||||
REQUIRE(osmium::string_to_object_id("0") == 0);
|
||||
REQUIRE(osmium::string_to_object_id("17") == 17);
|
||||
REQUIRE(osmium::string_to_object_id("-17") == -17);
|
||||
REQUIRE(osmium::string_to_object_id("01") == 1);
|
||||
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id(""), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id(" "), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id(" 22"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("x"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("0x1"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("12a"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("12345678901234567890"), std::range_error);
|
||||
}
|
||||
|
||||
TEST_CASE("set type and ID from string") {
|
||||
auto n17 = osmium::string_to_object_id("n17", osmium::osm_entity_bits::nwr);
|
||||
REQUIRE(n17.first == osmium::item_type::node);
|
||||
REQUIRE(n17.second == 17);
|
||||
|
||||
auto w42 = osmium::string_to_object_id("w42", osmium::osm_entity_bits::nwr);
|
||||
REQUIRE(w42.first == osmium::item_type::way);
|
||||
REQUIRE(w42.second == 42);
|
||||
|
||||
auto r_2 = osmium::string_to_object_id("r-2", osmium::osm_entity_bits::nwr);
|
||||
REQUIRE(r_2.first == osmium::item_type::relation);
|
||||
REQUIRE(r_2.second == -2);
|
||||
|
||||
auto x3 = osmium::string_to_object_id("3", osmium::osm_entity_bits::nwr);
|
||||
REQUIRE(x3.first == osmium::item_type::undefined);
|
||||
REQUIRE(x3.second == 3);
|
||||
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("", osmium::osm_entity_bits::nwr), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("n", osmium::osm_entity_bits::nwr), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("x3", osmium::osm_entity_bits::nwr), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("nx3", osmium::osm_entity_bits::nwr), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("n3", osmium::osm_entity_bits::way), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_id("n3a", osmium::osm_entity_bits::nwr), std::range_error);
|
||||
}
|
||||
|
||||
TEST_CASE("set object version from string") {
|
||||
REQUIRE(osmium::string_to_object_version("0") == 0);
|
||||
REQUIRE(osmium::string_to_object_version("1") == 1);
|
||||
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_version("-1"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_version(""), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_version(" "), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_version(" 22"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_object_version("x"), std::range_error);
|
||||
}
|
||||
|
||||
TEST_CASE("set changeset id from string") {
|
||||
REQUIRE(osmium::string_to_changeset_id("0") == 0);
|
||||
REQUIRE(osmium::string_to_changeset_id("1") == 1);
|
||||
|
||||
REQUIRE_THROWS_AS(osmium::string_to_changeset_id("-1"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_changeset_id(""), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_changeset_id(" "), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_changeset_id(" 22"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_changeset_id("x"), std::range_error);
|
||||
}
|
||||
|
||||
TEST_CASE("set user id from string") {
|
||||
REQUIRE(osmium::string_to_user_id("0") == 0);
|
||||
REQUIRE(osmium::string_to_user_id("1") == 1);
|
||||
REQUIRE(osmium::string_to_user_id("-1") == -1);
|
||||
|
||||
REQUIRE_THROWS_AS(osmium::string_to_user_id("-2"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_user_id(""), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_user_id(" "), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_user_id(" 22"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_user_id("x"), std::range_error);
|
||||
}
|
||||
|
||||
TEST_CASE("set num changes from string") {
|
||||
REQUIRE(osmium::string_to_num_changes("0") == 0);
|
||||
REQUIRE(osmium::string_to_num_changes("1") == 1);
|
||||
|
||||
REQUIRE_THROWS_AS(osmium::string_to_num_changes("-1"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_num_changes(""), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_num_changes(" "), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_num_changes(" 22"), std::range_error);
|
||||
REQUIRE_THROWS_AS(osmium::string_to_num_changes("x"), std::range_error);
|
||||
}
|
||||
|
||||
+9
-1
@@ -1,11 +1,16 @@
|
||||
#include "catch.hpp"
|
||||
|
||||
#include <boost/crc.hpp>
|
||||
|
||||
#include <osmium/builder/osm_object_builder.hpp>
|
||||
#include <osmium/osm/crc.hpp>
|
||||
#include <osmium/osm/way.hpp>
|
||||
|
||||
#include "helper.hpp"
|
||||
|
||||
TEST_CASE("Basic_Way") {
|
||||
TEST_CASE("Build way") {
|
||||
|
||||
osmium::CRC<boost::crc_32_type> crc32;
|
||||
|
||||
SECTION("way_builder") {
|
||||
osmium::memory::Buffer buffer(10000);
|
||||
@@ -38,6 +43,9 @@ SECTION("way_builder") {
|
||||
REQUIRE(3 == way.nodes()[1].ref());
|
||||
REQUIRE(2 == way.nodes()[2].ref());
|
||||
REQUIRE(! way.is_closed());
|
||||
|
||||
crc32.update(way);
|
||||
REQUIRE(crc32().checksum() == 0x20fe7a30);
|
||||
}
|
||||
|
||||
SECTION("closed_way") {
|
||||
|
||||
Reference in New Issue
Block a user