[core, android] Factor JSON string conversions
This adds a `convertJSON` template, to be used like: Error error optional<Foo> foo = convertJSON<Foo>(string, error); Internally, it parses the string with RapidJSON and then calls `convert<Foo>(parsed, error)`. While here, rationalize GeoJSON converters and fix error handling for Tileset conversion in OfflineDownload.
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <mbgl/util/logging.hpp>
|
||||
#include <mbgl/util/mapbox.hpp>
|
||||
#include <mbgl/util/constants.hpp>
|
||||
#include <mbgl/util/tileset.hpp>
|
||||
#include <stdexcept>
|
||||
|
||||
using namespace mbgl;
|
||||
@@ -210,3 +211,29 @@ TEST(Mapbox, CanonicalURL) {
|
||||
"http://api.mapbox.com/v4/a.b/{z}/{x}/{y}/.",
|
||||
mbgl::util::mapbox::canonicalizeTileURL("http://api.mapbox.com/v4/a.b/{z}/{x}/{y}/.", SourceType::Raster, 256));
|
||||
}
|
||||
|
||||
TEST(Mapbox, CanonicalizeRasterTileset) {
|
||||
mbgl::Tileset tileset;
|
||||
tileset.tiles = {
|
||||
"http://a.tiles.mapbox.com/v4/mapbox.satellite/{z}/{x}/{y}.png?access_token=key"
|
||||
};
|
||||
|
||||
mbgl::util::mapbox::canonicalizeTileset(tileset, "mapbox://mapbox.satellite", SourceType::Raster, 256);
|
||||
|
||||
#if !defined(__ANDROID__) && !defined(__APPLE__)
|
||||
EXPECT_EQ("mapbox://tiles/mapbox.satellite/{z}/{x}/{y}{ratio}.webp", tileset.tiles[0]);
|
||||
#else
|
||||
EXPECT_EQ("mapbox://tiles/mapbox.satellite/{z}/{x}/{y}{ratio}.png", tileset.tiles[0]);
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST(Mapbox, CanonicalizeVectorTileset) {
|
||||
mbgl::Tileset tileset;
|
||||
tileset.tiles = {
|
||||
"http://a.tiles.mapbox.com/v4/mapbox.streets/{z}/{x}/{y}.vector.pbf?access_token=key"
|
||||
};
|
||||
|
||||
mbgl::util::mapbox::canonicalizeTileset(tileset, "mapbox://mapbox.streets", SourceType::Vector, 512);
|
||||
|
||||
EXPECT_EQ("mapbox://tiles/mapbox.streets/{z}/{x}/{y}.vector.pbf", tileset.tiles[0]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user