示例#1
0
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");
        }
示例#4
0
        // 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"));