summaryrefslogtreecommitdiff
path: root/test/renderer/image_manager.test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/renderer/image_manager.test.cpp')
-rw-r--r--test/renderer/image_manager.test.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/renderer/image_manager.test.cpp b/test/renderer/image_manager.test.cpp
index 16700d713f..20c0a3a7f3 100644
--- a/test/renderer/image_manager.test.cpp
+++ b/test/renderer/image_manager.test.cpp
@@ -187,6 +187,30 @@ TEST(ImageManager, OnStyleImageMissingBeforeSpriteLoaded) {
EXPECT_EQ(observer.count, 1);
ASSERT_TRUE(notified);
+ // Repeated request of the same image shall not result another
+ // `ImageManagerObserver.onStyleImageMissing()` call.
+ imageManager.getImages(requestor, std::make_pair(dependencies, ++imageCorrelationID));
+ runLoop.runOnce();
+
+ EXPECT_EQ(observer.count, 1);
+
+ // Request for updated dependencies must be dispatched to the
+ // observer.
+ dependencies.emplace("post", ImageType::Icon);
+ imageManager.getImages(requestor, std::make_pair(dependencies, ++imageCorrelationID));
+ runLoop.runOnce();
+
+ EXPECT_EQ(observer.count, 2);
+
+ // Another requestor shall not have pending requests for already obtained images.
+ StubImageRequestor anotherRequestor(imageManager);
+ imageManager.getImages(anotherRequestor, std::make_pair(dependencies, ++imageCorrelationID));
+ ASSERT_FALSE(anotherRequestor.hasPendingRequests());
+
+ dependencies.emplace("unfamiliar", ImageType::Icon);
+ imageManager.getImages(anotherRequestor, std::make_pair(dependencies, ++imageCorrelationID));
+ EXPECT_TRUE(anotherRequestor.hasPendingRequests());
+ EXPECT_TRUE(anotherRequestor.hasPendingRequest("unfamiliar"));
}
TEST(ImageManager, OnStyleImageMissingAfterSpriteLoaded) {