mapnik/test/standalone/datasource_registration_test.cpp

52 lines
1.8 KiB
C++
Raw Normal View History

#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include <mapnik/datasource_cache.hpp>
#include <mapnik/debug.hpp>
2015-10-07 23:41:07 +02:00
#include <mapnik/util/fs.hpp>
#include <iostream>
#include <vector>
#include <algorithm>
2022-01-26 23:25:53 +01:00
TEST_CASE("datasource_cache")
{
SECTION("registration")
{
2022-01-26 23:25:53 +01:00
try
2015-10-07 23:41:07 +02:00
{
2022-01-26 23:25:53 +01:00
mapnik::logger logger;
mapnik::logger::severity_type original_severity = logger.get_severity();
bool success = false;
auto& cache = mapnik::datasource_cache::instance();
2015-10-07 23:41:07 +02:00
2022-01-26 23:25:53 +01:00
// registering a directory without any plugins should return false
success = cache.register_datasources("test/data/vrt");
2015-10-07 23:41:07 +02:00
CHECK(success == false);
2022-01-26 23:25:53 +01:00
// use existence of shape.input as proxy for whether any datasource plugins are available
std::string shape_plugin("./plugins/input/shape.input");
if (mapnik::util::exists(shape_plugin))
{
// registering a directory for the first time should return true
success = cache.register_datasources("plugins/input");
REQUIRE(success == true);
// registering the same directory again should now return false
success = cache.register_datasources("plugins/input");
CHECK(success == false);
// registering the same directory again, but recursively should
// still return false - even though there are subdirectories, they
// do not contain any more plugins.
success = cache.register_datasources("plugins/input", true);
CHECK(success == false);
}
} catch (std::exception const& ex)
{
std::clog << ex.what() << "\n";
REQUIRE(false);
2015-10-07 23:41:07 +02:00
}
}
}