Upgrade libosmium to v2.15.6
This commit is contained in:
@@ -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
@@ -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
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user