datasource tests: use macro REQUIRE_ATTRIBUTES instead of function

- failing checks report location inside the function, not where it's
  called from; using macro reports proper location
This commit is contained in:
Mickey Rose 2018-06-30 15:09:49 +02:00
parent fa0d4c923f
commit 93c379820e
2 changed files with 26 additions and 31 deletions

View file

@ -241,7 +241,7 @@ TEST_CASE("csv") {
auto features = ds->features(query); auto features = ds->features(query);
auto feature = features->next(); auto feature = features->next();
require_attributes(feature, { REQUIRE_ATTRIBUTES(feature, {
attr { lon_name, mapnik::value_integer(0) }, attr { lon_name, mapnik::value_integer(0) },
attr { "lat", mapnik::value_integer(0) } attr { "lat", mapnik::value_integer(0) }
}); });
@ -298,8 +298,8 @@ TEST_CASE("csv") {
, attr { "geo_longitude", mapnik::value_integer(-70) } , attr { "geo_longitude", mapnik::value_integer(-70) }
, attr { "geo_latitude", mapnik::value_integer(40) } , attr { "geo_latitude", mapnik::value_integer(40) }
}; };
require_attributes(feature, expected_attr); REQUIRE_ATTRIBUTES(feature, expected_attr);
require_attributes(feature2, expected_attr); REQUIRE_ATTRIBUTES(feature2, expected_attr);
if (mapnik::util::exists(filepath + ".index")) if (mapnik::util::exists(filepath + ".index"))
{ {
mapnik::util::remove(filepath + ".index"); mapnik::util::remove(filepath + ".index");
@ -367,7 +367,7 @@ TEST_CASE("csv") {
auto featureset = all_features(ds); auto featureset = all_features(ds);
auto feature = featureset->next(); auto feature = featureset->next();
require_attributes(feature, { REQUIRE_ATTRIBUTES(feature, {
attr { "x", mapnik::value_integer(0) } attr { "x", mapnik::value_integer(0) }
, attr { "empty_column", mapnik::value_unicode_string("") } , attr { "empty_column", mapnik::value_unicode_string("") }
, attr { "text", mapnik::value_unicode_string("a b") } , attr { "text", mapnik::value_unicode_string("a b") }
@ -416,15 +416,15 @@ TEST_CASE("csv") {
require_field_types(fields, {mapnik::Integer, mapnik::Integer, mapnik::String}); require_field_types(fields, {mapnik::Integer, mapnik::Integer, mapnik::String});
auto featureset = all_features(ds); auto featureset = all_features(ds);
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 0} attr{"x", 0}
, attr{"y", 0} , attr{"y", 0}
, attr{"name", mapnik::value_unicode_string("a/a") } }); , attr{"name", mapnik::value_unicode_string("a/a") } });
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 1} attr{"x", 1}
, attr{"y", 4} , attr{"y", 4}
, attr{"name", mapnik::value_unicode_string("b/b") } }); , attr{"name", mapnik::value_unicode_string("b/b") } });
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 10} attr{"x", 10}
, attr{"y", 2.5} , attr{"y", 2.5}
, attr{"name", mapnik::value_unicode_string("c/c") } }); , attr{"name", mapnik::value_unicode_string("c/c") } });
@ -531,7 +531,7 @@ TEST_CASE("csv") {
auto fields = ds->get_descriptor().get_descriptors(); auto fields = ds->get_descriptor().get_descriptors();
require_field_names(fields, {"x", "y", "1990", "1991", "1992"}); require_field_names(fields, {"x", "y", "1990", "1991", "1992"});
auto feature = all_features(ds)->next(); auto feature = all_features(ds)->next();
require_attributes(feature, { REQUIRE_ATTRIBUTES(feature, {
attr{"x", 0} attr{"x", 0}
, attr{"y", 0} , attr{"y", 0}
, attr{"1990", 1} , attr{"1990", 1}
@ -575,15 +575,15 @@ TEST_CASE("csv") {
require_field_names(fields, {"x", "y", "label"}); require_field_names(fields, {"x", "y", "label"});
auto featureset = all_features(ds); auto featureset = all_features(ds);
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 0}, attr{"y", 0}, attr{"label", ustring("0,0") } }); attr{"x", 0}, attr{"y", 0}, attr{"label", ustring("0,0") } });
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 5}, attr{"y", 5}, attr{"label", ustring("5,5") } }); attr{"x", 5}, attr{"y", 5}, attr{"label", ustring("5,5") } });
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 0}, attr{"y", 5}, attr{"label", ustring("0,5") } }); attr{"x", 0}, attr{"y", 5}, attr{"label", ustring("0,5") } });
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 5}, attr{"y", 0}, attr{"label", ustring("5,0") } }); attr{"x", 5}, attr{"y", 0}, attr{"label", ustring("5,0") } });
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 2.5}, attr{"y", 2.5}, attr{"label", ustring("2.5,2.5") } }); attr{"x", 2.5}, attr{"y", 2.5}, attr{"label", ustring("2.5,2.5") } });
if (mapnik::util::exists(filename + ".index")) if (mapnik::util::exists(filename + ".index"))
{ {
@ -615,7 +615,7 @@ TEST_CASE("csv") {
auto ds = get_csv_ds(filename); auto ds = get_csv_ds(filename);
auto fields = ds->get_descriptor().get_descriptors(); auto fields = ds->get_descriptor().get_descriptors();
require_field_names(fields, {"x", "y", "z"}); require_field_names(fields, {"x", "y", "z"});
require_attributes(all_features(ds)->next(), { REQUIRE_ATTRIBUTES(all_features(ds)->next(), {
attr{"x", 1}, attr{"y", 10}, attr{"z", 9999.9999} }); attr{"x", 1}, attr{"y", 10}, attr{"z", 9999.9999} });
if (mapnik::util::exists(filename + ".index")) if (mapnik::util::exists(filename + ".index"))
{ {
@ -653,7 +653,7 @@ TEST_CASE("csv") {
auto ds = get_csv_ds(filename); auto ds = get_csv_ds(filename);
auto fields = ds->get_descriptor().get_descriptors(); auto fields = ds->get_descriptor().get_descriptors();
require_field_names(fields, {"x", "y", "line"}); require_field_names(fields, {"x", "y", "line"});
require_attributes(all_features(ds)->next(), { REQUIRE_ATTRIBUTES(all_features(ds)->next(), {
attr{"x", 0}, attr{"y", 0} attr{"x", 0}, attr{"y", 0}
, attr{"line", ustring("many\n lines\n of text\n with unix newlines")} }); , attr{"line", ustring("many\n lines\n of text\n with unix newlines")} });
if (mapnik::util::exists(filename + ".index")) if (mapnik::util::exists(filename + ".index"))
@ -684,7 +684,7 @@ TEST_CASE("csv") {
auto ds = get_csv_ds(filename); auto ds = get_csv_ds(filename);
auto fields = ds->get_descriptor().get_descriptors(); auto fields = ds->get_descriptor().get_descriptors();
require_field_names(fields, {"x", "y", "z"}); require_field_names(fields, {"x", "y", "z"});
require_attributes(all_features(ds)->next(), { REQUIRE_ATTRIBUTES(all_features(ds)->next(), {
attr{"x", -122}, attr{"y", 48}, attr{"z", 0} }); attr{"x", -122}, attr{"y", 48}, attr{"z", 0} });
if (mapnik::util::exists(filename + ".index")) if (mapnik::util::exists(filename + ".index"))
{ {
@ -719,7 +719,7 @@ TEST_CASE("csv") {
auto ds = get_csv_ds(filename); auto ds = get_csv_ds(filename);
auto fields = ds->get_descriptor().get_descriptors(); auto fields = ds->get_descriptor().get_descriptors();
require_field_names(fields, {"x", "y", "z"}); require_field_names(fields, {"x", "y", "z"});
require_attributes(all_features(ds)->next(), { REQUIRE_ATTRIBUTES(all_features(ds)->next(), {
attr{"x", 0}, attr{"y", 0}, attr{"z", ustring("hello")} }); attr{"x", 0}, attr{"y", 0}, attr{"z", ustring("hello")} });
if (mapnik::util::exists(filename + ".index")) if (mapnik::util::exists(filename + ".index"))
{ {
@ -754,9 +754,9 @@ TEST_CASE("csv") {
require_field_types(fields, {mapnik::Integer, mapnik::Integer, mapnik::String, mapnik::Boolean}); require_field_types(fields, {mapnik::Integer, mapnik::Integer, mapnik::String, mapnik::Boolean});
auto featureset = all_features(ds); auto featureset = all_features(ds);
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 0}, attr{"y", 0}, attr{"null", ustring("null")}, attr{"boolean", true}}); attr{"x", 0}, attr{"y", 0}, attr{"null", ustring("null")}, attr{"boolean", true}});
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 0}, attr{"y", 0}, attr{"null", ustring("")}, attr{"boolean", false}}); attr{"x", 0}, attr{"y", 0}, attr{"null", ustring("")}, attr{"boolean", false}});
if (mapnik::util::exists(filename + ".index")) if (mapnik::util::exists(filename + ".index"))
@ -829,11 +829,11 @@ TEST_CASE("csv") {
require_field_types(fields, {mapnik::Integer, mapnik::Integer, mapnik::String}); require_field_types(fields, {mapnik::Integer, mapnik::Integer, mapnik::String});
auto featureset = all_features(ds); auto featureset = all_features(ds);
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 0}, attr{"y", 0}, attr{"fips", ustring("001")}}); attr{"x", 0}, attr{"y", 0}, attr{"fips", ustring("001")}});
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 0}, attr{"y", 0}, attr{"fips", ustring("003")}}); attr{"x", 0}, attr{"y", 0}, attr{"fips", ustring("003")}});
require_attributes(featureset->next(), { REQUIRE_ATTRIBUTES(featureset->next(), {
attr{"x", 0}, attr{"y", 0}, attr{"fips", ustring("005")}}); attr{"x", 0}, attr{"y", 0}, attr{"fips", ustring("005")}});
if (mapnik::util::exists(filename + ".index")) if (mapnik::util::exists(filename + ".index"))
{ {
@ -990,7 +990,7 @@ TEST_CASE("csv") {
auto fields = ds->get_descriptor().get_descriptors(); auto fields = ds->get_descriptor().get_descriptors();
require_field_names(fields, {"x", "y", "name"}); require_field_names(fields, {"x", "y", "name"});
require_field_types(fields, {mapnik::Integer, mapnik::Integer, mapnik::String}); require_field_types(fields, {mapnik::Integer, mapnik::Integer, mapnik::String});
require_attributes(all_features(ds)->next(), { REQUIRE_ATTRIBUTES(all_features(ds)->next(), {
attr{"x", 0}, attr{"y", 0}, attr{"name", ustring("data_name")} }); attr{"x", 0}, attr{"y", 0}, attr{"name", ustring("data_name")} });
REQUIRE(count_features(all_features(ds)) == r.second); REQUIRE(count_features(all_features(ds)) == r.second);
CHECK(ds->get_geometry_type() == mapnik::datasource_geometry_t::Point); CHECK(ds->get_geometry_type() == mapnik::datasource_geometry_t::Point);
@ -1007,13 +1007,13 @@ TEST_CASE("csv") {
auto fs = all_features(ds); auto fs = all_features(ds);
auto feature = fs->next(); auto feature = fs->next();
require_attributes(feature, { REQUIRE_ATTRIBUTES(feature, {
attr{"x", 0}, attr{"y", 0}, attr{"bigint", 2147483648} }); attr{"x", 0}, attr{"y", 0}, attr{"bigint", 2147483648} });
feature = fs->next(); feature = fs->next();
require_attributes(feature, { REQUIRE_ATTRIBUTES(feature, {
attr{"x", 0}, attr{"y", 0}, attr{"bigint", 9223372036854775807ll} }); attr{"x", 0}, attr{"y", 0}, attr{"bigint", 9223372036854775807ll} });
require_attributes(feature, { REQUIRE_ATTRIBUTES(feature, {
attr{"x", 0}, attr{"y", 0}, attr{"bigint", 0x7FFFFFFFFFFFFFFFll} }); attr{"x", 0}, attr{"y", 0}, attr{"bigint", 0x7FFFFFFFFFFFFFFFll} });
} // END SECTION } // END SECTION
#pragma GCC diagnostic pop #pragma GCC diagnostic pop

View file

@ -122,11 +122,6 @@ using attr = std::tuple<std::string, mapnik::value>;
} \ } \
} while (0) } while (0)
inline void require_attributes(mapnik::feature_ptr feature,
std::initializer_list<attr> const &attrs) {
REQUIRE_ATTRIBUTES(feature, attrs);
}
namespace detail { namespace detail {
struct feature_count { struct feature_count {
template <typename T> template <typename T>