#include "catch.hpp" #include #include #include #include #include #include #include #include template void test_func_all(TIndex& index) { osmium::unsigned_object_id_type id1 = 12; osmium::unsigned_object_id_type id2 = 3; osmium::Location loc1(1.2, 4.5); osmium::Location loc2(3.5, -7.2); REQUIRE_THROWS_AS(index.get(id1), osmium::not_found); index.set(id1, loc1); index.set(id2, loc2); index.sort(); REQUIRE_THROWS_AS(index.get(5), osmium::not_found); REQUIRE_THROWS_AS(index.get(100), osmium::not_found); } template void test_func_real(TIndex& index) { osmium::unsigned_object_id_type id1 = 12; osmium::unsigned_object_id_type id2 = 3; osmium::Location loc1(1.2, 4.5); osmium::Location loc2(3.5, -7.2); index.set(id1, loc1); index.set(id2, loc2); index.sort(); REQUIRE(loc1 == index.get(id1)); REQUIRE(loc2 == index.get(id2)); REQUIRE_THROWS_AS(index.get(5), osmium::not_found); REQUIRE_THROWS_AS(index.get(100), osmium::not_found); index.clear(); REQUIRE_THROWS_AS(index.get(id1), osmium::not_found); } TEST_CASE("IdToLocation") { SECTION("Dummy") { typedef osmium::index::map::Dummy index_type; index_type index1; REQUIRE(0 == index1.size()); REQUIRE(0 == index1.used_memory()); test_func_all(index1); REQUIRE(0 == index1.size()); REQUIRE(0 == index1.used_memory()); } SECTION("DenseMapMem") { typedef osmium::index::map::DenseMapMem index_type; index_type index1; index1.reserve(1000); test_func_all(index1); index_type index2; index2.reserve(1000); test_func_real(index2); } #ifdef __linux__ SECTION("DenseMapMmap") { typedef osmium::index::map::DenseMapMmap index_type; index_type index1; test_func_all(index1); index_type index2; test_func_real(index2); } #else # pragma message "not running 'DenseMapMmap' test case on this machine" #endif SECTION("DenseMapFile") { typedef osmium::index::map::DenseMapFile index_type; index_type index1; test_func_all(index1); index_type index2; test_func_real(index2); } SECTION("SparseTable") { typedef osmium::index::map::SparseTable index_type; index_type index1; test_func_all(index1); index_type index2; test_func_real(index2); } SECTION("StlMap") { typedef osmium::index::map::StlMap index_type; index_type index1; test_func_all(index1); index_type index2; test_func_real(index2); } SECTION("SparseMapMem") { typedef osmium::index::map::SparseMapMem index_type; index_type index1; REQUIRE(0 == index1.size()); REQUIRE(0 == index1.used_memory()); test_func_all(index1); REQUIRE(2 == index1.size()); index_type index2; test_func_real(index2); } }