Upgrade libosmium to v2.15.6

This commit is contained in:
Desone Burns II
2020-11-17 14:59:06 -07:00
parent 98fd17589d
commit dfc1bfc27e
319 changed files with 6268 additions and 3946 deletions
+3 -3
View File
@@ -88,7 +88,7 @@ TEST_CASE("Reserve space in a growing buffer") {
}
TEST_CASE("Create buffer from existing data with good alignment works") {
std::array<unsigned char, 128> data;
std::array<unsigned char, 128> data = {{0}};
osmium::memory::Buffer buffer{data.data(), data.size()};
REQUIRE(buffer.capacity() == 128);
@@ -96,7 +96,7 @@ TEST_CASE("Create buffer from existing data with good alignment works") {
}
TEST_CASE("Create buffer from existing data with good alignment and committed value works") {
std::array<unsigned char, 128> data;
std::array<unsigned char, 128> data = {{0}};
osmium::memory::Buffer buffer{data.data(), data.size(), 32};
REQUIRE(buffer.capacity() == 128);
@@ -105,7 +105,7 @@ TEST_CASE("Create buffer from existing data with good alignment and committed va
}
TEST_CASE("Create buffer from existing data with bad alignment fails") {
std::array<unsigned char, 128> data;
std::array<unsigned char, 128> data = {{0}};
const auto l1 = [&](){
osmium::memory::Buffer buffer{data.data(), 127};
@@ -3,6 +3,10 @@
#include <osmium/builder/osm_object_builder.hpp>
#include <osmium/osm/node.hpp>
#include <algorithm>
#include <iterator>
#include <string>
void check_node_1(const osmium::Node& node) {
REQUIRE(1 == node.id());
REQUIRE(3 == node.version());
@@ -50,6 +54,8 @@ void check_node_2(const osmium::Node& node) {
REQUIRE(std::string("name") == tag.key());
REQUIRE(std::string("OSM Savings") == tag.value());
break;
default:
REQUIRE(false);
}
++n;
}
+170 -153
View File
@@ -3,6 +3,8 @@
#include <osmium/builder/osm_object_builder.hpp>
#include <osmium/osm/node.hpp>
#include <iterator>
struct CallbackClass {
int count = 0;
@@ -14,161 +16,176 @@ struct CallbackClass {
}; // struct CallbackClass
TEST_CASE("Purge data from buffer") {
constexpr size_t buffer_size = 10000;
TEST_CASE("Purge data from empty buffer") {
constexpr const size_t buffer_size = 10000;
osmium::memory::Buffer buffer{buffer_size};
SECTION("purge empty buffer") {
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 0);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 0);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(buffer.committed() == 0);
}
SECTION("purge buffer with one object but nothing to delete") {
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
const size_t committed = buffer.committed();
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(committed == buffer.committed());
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
}
SECTION("purge buffer with one object which gets deleted") {
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(buffer.committed() == 0);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 0);
}
SECTION("purge buffer with two objects, first gets deleted") {
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
const size_t size1 = buffer.committed();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
}
buffer.commit();
const size_t size2 = buffer.committed() - size1;
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 2);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 1);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
REQUIRE(buffer.committed() == size2);
}
SECTION("purge buffer with two objects, second gets deleted") {
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser_longer_name");
}
buffer.commit();
size_t size1 = buffer.committed();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 2);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
REQUIRE(buffer.committed() == size1);
}
SECTION("purge buffer with three objects, middle one gets deleted") {
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser_longer_name");
}
buffer.commit();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("sn");
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 3);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 1);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 2);
}
SECTION("purge buffer with three objects, all get deleted") {
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser_longer_name");
node_builder.set_removed(true);
}
buffer.commit();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("sn");
node_builder.set_removed(true);
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 3);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 0);
}
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(buffer.committed() == 0);
}
TEST_CASE("Purge buffer with one object but nothing to delete") {
constexpr const size_t buffer_size = 10000;
osmium::memory::Buffer buffer{buffer_size};
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
const size_t committed = buffer.committed();
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(committed == buffer.committed());
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
}
TEST_CASE("Purge buffer with one object which gets deleted") {
constexpr const size_t buffer_size = 10000;
osmium::memory::Buffer buffer{buffer_size};
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(buffer.committed() == 0);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 0);
}
TEST_CASE("Purge buffer with two objects, first gets deleted") {
constexpr const size_t buffer_size = 10000;
osmium::memory::Buffer buffer{buffer_size};
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
const size_t size1 = buffer.committed();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
}
buffer.commit();
const size_t size2 = buffer.committed() - size1;
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 2);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 1);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
REQUIRE(buffer.committed() == size2);
}
TEST_CASE("Purge buffer with two objects, second gets deleted") {
constexpr const size_t buffer_size = 10000;
osmium::memory::Buffer buffer{buffer_size};
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser_longer_name");
}
buffer.commit();
const size_t size1 = buffer.committed();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 2);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 1);
REQUIRE(buffer.committed() == size1);
}
TEST_CASE("Purge buffer with three objects, middle one gets deleted") {
constexpr const size_t buffer_size = 10000;
osmium::memory::Buffer buffer{buffer_size};
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser_longer_name");
}
buffer.commit();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("sn");
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 3);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 1);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 2);
}
TEST_CASE("Purge buffer with three objects, all get deleted") {
constexpr const size_t buffer_size = 10000;
osmium::memory::Buffer buffer{buffer_size};
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser_longer_name");
node_builder.set_removed(true);
}
buffer.commit();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("testuser");
node_builder.set_removed(true);
}
buffer.commit();
{
osmium::builder::NodeBuilder node_builder{buffer};
node_builder.set_user("sn");
node_builder.set_removed(true);
}
buffer.commit();
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 3);
CallbackClass callback;
buffer.purge_removed(&callback);
REQUIRE(callback.count == 0);
REQUIRE(std::distance(buffer.begin(), buffer.end()) == 0);
}
+9 -9
View File
@@ -10,20 +10,20 @@ TEST_CASE("padded length") {
REQUIRE(osmium::memory::padded_length(8) == 8);
REQUIRE(osmium::memory::padded_length(9) == 16);
REQUIRE(osmium::memory::padded_length(2147483647ul) == 2147483648ul);
REQUIRE(osmium::memory::padded_length(2147483648ul) == 2147483648ul);
REQUIRE(osmium::memory::padded_length(2147483650ul) == 2147483656ul);
REQUIRE(osmium::memory::padded_length(2147483647UL) == 2147483648UL);
REQUIRE(osmium::memory::padded_length(2147483648UL) == 2147483648UL);
REQUIRE(osmium::memory::padded_length(2147483650UL) == 2147483656UL);
// The following checks only make sense on a 64 bit system (with
// sizeof(size_t) == 8), because the numbers are too large for 32 bit.
// The casts to size_t do nothing on a 64 bit system, on a 32 bit system
// they bring the numbers into the right range and everything still works.
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(4294967295ull)) == static_cast<std::size_t>(4294967296ull));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(4294967296ull)) == static_cast<std::size_t>(4294967296ull));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(4294967297ull)) == static_cast<std::size_t>(4294967304ull));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(4294967295ULL)) == static_cast<std::size_t>(4294967296ULL));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(4294967296ULL)) == static_cast<std::size_t>(4294967296ULL));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(4294967297ULL)) == static_cast<std::size_t>(4294967304ULL));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(7999999999ull)) == static_cast<std::size_t>(8000000000ull));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(8000000000ull)) == static_cast<std::size_t>(8000000000ull));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(8000000001ull)) == static_cast<std::size_t>(8000000008ull));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(7999999999ULL)) == static_cast<std::size_t>(8000000000ULL));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(8000000000ULL)) == static_cast<std::size_t>(8000000000ULL));
REQUIRE(osmium::memory::padded_length(static_cast<std::size_t>(8000000001ULL)) == static_cast<std::size_t>(8000000008ULL));
}