[test] Added GlyphManager.ImmediateFileSource
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user