#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace mbgl; class VectorTileTest { public: std::shared_ptr fileSource = std::make_shared(); TransformState transformState; util::RunLoop loop; style::Style style{fileSource, 1}; AnnotationManager annotationManager { *style.impl }; ImageManager imageManager; GlyphManager glyphManager; Tileset tileset{{"https://example.com"}, {0, 22}, "none"}; TileParameters tileParameters{1.0, MapDebugOptions(), transformState, fileSource, MapMode::Continuous, annotationManager, imageManager, glyphManager, 0}; }; class VectorTileMock : public VectorTile { public: VectorTileMock(const OverscaledTileID& id_, std::string sourceID_, const TileParameters& parameters, const Tileset& tileset) : VectorTile(id_, sourceID_, parameters, tileset) { renderable = true; } }; TEST(TileCache, Smoke) { VectorTileTest test; TileCache cache(1); OverscaledTileID id(0, 0, 0); std::unique_ptr tile = std::make_unique(id, "source", test.tileParameters, test.tileset); cache.add(id, std::move(tile)); EXPECT_TRUE(cache.has(id)); cache.clear(); EXPECT_FALSE(cache.has(id)); } TEST(TileCache, Issue15926) { VectorTileTest test; TileCache cache(2); OverscaledTileID id0(0, 0, 0); OverscaledTileID id1(1, 0, 0); std::unique_ptr tile1 = std::make_unique(id0, "source", test.tileParameters, test.tileset); std::unique_ptr tile2 = std::make_unique(id0, "source", test.tileParameters, test.tileset); std::unique_ptr tile3 = std::make_unique(id1, "source", test.tileParameters, test.tileset); cache.add(id0, std::move(tile1)); EXPECT_TRUE(cache.has(id0)); cache.add(id0, std::move(tile2)); cache.setSize(1); cache.add(id1, std::move(tile3)); EXPECT_FALSE(cache.has(id0)); EXPECT_TRUE(cache.has(id1)); }