From aa216d00254c18f7b5903026ab1a489ae7797dd8 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Mon, 22 May 2017 13:28:09 -0700 Subject: [core] Don't use a separate SpriteAtlas for annotation images Instead, just add them to the Style as needed. Includes changes from #8905 and takes care to avoid regressing #3817. --- test/sprite/sprite_atlas.test.cpp | 40 +++++++++++++++++++++++++ test/sprite/sprite_image_collection.test.cpp | 45 ---------------------------- 2 files changed, 40 insertions(+), 45 deletions(-) delete mode 100644 test/sprite/sprite_image_collection.test.cpp (limited to 'test/sprite') diff --git a/test/sprite/sprite_atlas.test.cpp b/test/sprite/sprite_atlas.test.cpp index 7a638a9ec5..4291fe9902 100644 --- a/test/sprite/sprite_atlas.test.cpp +++ b/test/sprite/sprite_atlas.test.cpp @@ -145,3 +145,43 @@ TEST(SpriteAtlas, RemoveReleasesBinPackRect) { EXPECT_TRUE(atlas.getIcon("big")); EXPECT_TRUE(log.empty()); } + +class StubIconRequestor : public IconRequestor { +public: + void onIconsAvailable(IconMap icons) final { + if (iconsAvailable) iconsAvailable(icons); + } + + std::function iconsAvailable; +}; + +TEST(SpriteAtlas, NotifiesRequestorWhenSpriteIsLoaded) { + SpriteAtlas atlas; + StubIconRequestor requestor; + bool notified = false; + + requestor.iconsAvailable = [&] (IconMap) { + notified = true; + }; + + atlas.getIcons(requestor, {"one"}); + ASSERT_FALSE(notified); + + atlas.onSpriteLoaded(); + ASSERT_TRUE(notified); +} + +TEST(SpriteAtlas, NotifiesRequestorImmediatelyIfDependenciesAreSatisfied) { + SpriteAtlas atlas; + StubIconRequestor requestor; + bool notified = false; + + requestor.iconsAvailable = [&] (IconMap) { + notified = true; + }; + + atlas.addImage(makeMutable("one", PremultipliedImage({ 16, 16 }), 2)); + atlas.getIcons(requestor, {"one"}); + + ASSERT_TRUE(notified); +} diff --git a/test/sprite/sprite_image_collection.test.cpp b/test/sprite/sprite_image_collection.test.cpp deleted file mode 100644 index 788d7a59d5..0000000000 --- a/test/sprite/sprite_image_collection.test.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include -#include - -#include -#include -#include - -#include - -using namespace mbgl; - -TEST(SpriteImageCollection, OtherPixelRatio) { - FixtureLog log; - Images images; - - // Adding mismatched sprite image - addSpriteImage(images, std::make_unique("one", PremultipliedImage({ 8, 8 }), 2)); -} - -TEST(SpriteImageCollection, Replace) { - FixtureLog log; - Images images; - - addSpriteImage(images, std::make_unique("sprite", PremultipliedImage({ 16, 16 }), 2)); - auto image = images.find("sprite")->second.get(); - addSpriteImage(images, std::make_unique("sprite", PremultipliedImage({ 16, 16 }), 2)); - EXPECT_NE(image, images.find("sprite")->second.get()); -} - -TEST(SpriteImageCollection, ReplaceWithDifferentDimensions) { - FixtureLog log; - Images images; - - addSpriteImage(images, std::make_unique("sprite", PremultipliedImage({ 16, 16 }), 2)); - addSpriteImage(images, std::make_unique("sprite", PremultipliedImage({ 18, 18 }), 2)); - - EXPECT_EQ(1u, log.count({ - EventSeverity::Warning, - Event::Sprite, - int64_t(-1), - "Can't change sprite dimensions for 'sprite'", - })); -} - - -- cgit v1.2.1