[test] Added GlyphManager.ImmediateFileSource

This commit is contained in:
Bruno de Oliveira Abinader
2017-10-06 23:42:20 +03:00
parent b1239464c1
commit c9e9cd2aff
3 changed files with 70 additions and 3 deletions

View File

@@ -17,7 +17,12 @@ public:
StubFileSource& fileSource;
};
StubFileSource::StubFileSource() {
StubFileSource::StubFileSource(ResponseType type_)
: type(type_) {
if (type == ResponseType::Synchronous) {
return;
}
timer.start(1ms, 1ms, [this] {
// Explicit copy to avoid iterator invalidation if ~StubFileRequest gets called within the loop.
auto pending_ = pending;
@@ -46,7 +51,14 @@ StubFileSource::~StubFileSource() = default;
std::unique_ptr<AsyncRequest> StubFileSource::request(const Resource& resource, Callback callback) {
auto req = std::make_unique<StubFileRequest>(*this);
pending.emplace(req.get(), std::make_tuple(resource, response, callback));
if (type == ResponseType::Synchronous) {
optional<Response> res = response(resource);
if (res) {
callback(*res);
}
} else {
pending.emplace(req.get(), std::make_tuple(resource, response, callback));
}
return std::move(req);
}

View File

@@ -9,7 +9,12 @@ namespace mbgl {
class StubFileSource : public FileSource {
public:
StubFileSource();
enum class ResponseType {
Asynchronous = 0,
Synchronous
};
StubFileSource(ResponseType = ResponseType::Asynchronous);
~StubFileSource() override;
std::unique_ptr<AsyncRequest> request(const Resource&, Callback) override;
@@ -36,6 +41,7 @@ private:
optional<Response> defaultResponse(const Resource&);
std::unordered_map<AsyncRequest*, std::tuple<Resource, ResponseFunction, Callback>> pending;
ResponseType type;
util::Timer timer;
};