static osmium::memory::Buffer get_buffer() { osmium::io::Reader reader{with_data_dir("t/io/data.osm")}; osmium::memory::Buffer buffer = reader.read(); REQUIRE(buffer); REQUIRE(buffer.committed() > 0); return buffer; }
void complete_relation(const osmium::Relation& relation) noexcept { for (const auto& member : relation.members()) { if (member.type() == osmium::item_type::node) { ++count_nodes; const auto* node = get_member_node(member.ref()); REQUIRE(node); buffer().add_item(*node); buffer().commit(); } } } }; TEST_CASE("Use RelationsManager without any overloaded functions in derived class") { osmium::io::File file{with_data_dir("t/relations/data.osm")}; EmptyRM manager; osmium::relations::read_relations(file, manager); REQUIRE(manager.member_nodes_database().size() == 2); REQUIRE(manager.member_ways_database().size() == 2); REQUIRE(manager.member_relations_database().size() == 1); REQUIRE(manager.member_database(osmium::item_type::node).size() == 2); REQUIRE(manager.member_database(osmium::item_type::way).size() == 2); REQUIRE(manager.member_database(osmium::item_type::relation).size() == 1); const auto& m = manager; REQUIRE(m.member_database(osmium::item_type::node).size() == 2);
TEST_CASE("Test Reader using MockParser") { std::string fail_in; osmium::io::detail::ParserFactory::instance().register_parser( osmium::io::file_format::xml, [&](osmium::io::detail::future_string_queue_type& input_queue, osmium::io::detail::future_buffer_queue_type& output_queue, std::promise<osmium::io::Header>& header_promise, osmium::osm_entity_bits::type read_which_entities) { return std::unique_ptr<osmium::io::detail::Parser>(new MockParser(input_queue, output_queue, header_promise, read_which_entities, fail_in)); }); SECTION("no failure") { fail_in = ""; osmium::io::Reader reader(with_data_dir("t/io/data.osm")); auto header = reader.header(); REQUIRE(reader.read()); REQUIRE(!reader.read()); REQUIRE(reader.eof()); reader.close(); } SECTION("throw in header") { fail_in = "header"; try { osmium::io::Reader reader(with_data_dir("t/io/data.osm")); reader.header(); } catch (std::runtime_error& e) { REQUIRE(std::string{e.what()} == "error in header"); }
// no nodes in the history file have a zero location, and // no visible nodes should have an undefined location. if ((n.location() == zero) || (n.visible() && !n.location())) { ++count; } ++total_count; } }; // class ZeroPositionNodeCountHandler TEST_CASE("Reader") { SECTION("reader can be initialized with file") { osmium::io::File file(with_data_dir("t/io/data.osm")); osmium::io::Reader reader(file); osmium::handler::Handler handler; osmium::apply(reader, handler); } SECTION("reader can be initialized with string") { osmium::io::Reader reader(with_data_dir("t/io/data.osm")); osmium::handler::Handler handler; osmium::apply(reader, handler); } SECTION("should return invalid buffer after eof") { osmium::io::File file(with_data_dir("t/io/data.osm"));