Merge commit '788bc67faa7738cf7c6b2a192ecf3e3567d1c20e' into develop

This commit is contained in:
Patrick Niklaus
2015-08-28 12:42:03 +02:00
150 changed files with 12325 additions and 4321 deletions
+19 -13
View File
@@ -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);
}
}
+7
View File
@@ -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
View File
@@ -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
View File
@@ -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);
}
}
+8
View File
@@ -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
View File
@@ -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);
}
+4
View File
@@ -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
View File
@@ -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") {