#include #include #include #include #include #include #include #include #include #include #include using namespace mbgl; class SyncFileSource : public FileSource { public: std::unique_ptr request(const Resource& resource, FileSource::Callback callback) override { Response response; auto it = assets.find(resource.url); if (it == assets.end()) { response.error = std::make_unique( Response::Error::Reason::NotFound, std::string{ "Not Found: " } + resource.url); } else { response.data = it->second; } callback(response); return nullptr; } bool canRequest(const Resource&) const override { return true; } void add(std::string const& key, std::string const& data) { assets.emplace(key, std::make_shared(data)); }; private: std::unordered_map> assets; }; TEST(SyncFileSource, LoadSyncRender) { util::RunLoop loop; auto fs = std::make_shared(); fs->add("mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7", util::read_file("test/fixtures/resources/source_vector.json")); fs->add("mapbox://sprites/mapbox/streets-v9.png", util::read_file("test/fixtures/resources/sprite.png")); fs->add("mapbox://sprites/mapbox/streets-v9.json", util::read_file("test/fixtures/resources/sprite.json")); HeadlessFrontend frontend{ { 512, 512 }, 1.0 }; MapAdapter map{ frontend, MapObserver::nullObserver(), fs, MapOptions() }; map.getStyle().loadJSON(util::read_file("test/fixtures/resources/style_vector.json")); }