summaryrefslogtreecommitdiff
path: root/test/algorithm/update_renderables.test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/algorithm/update_renderables.test.cpp')
-rw-r--r--test/algorithm/update_renderables.test.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/algorithm/update_renderables.test.cpp b/test/algorithm/update_renderables.test.cpp
index 7d6a0fcb13..e142758f29 100644
--- a/test/algorithm/update_renderables.test.cpp
+++ b/test/algorithm/update_renderables.test.cpp
@@ -1259,3 +1259,53 @@ TEST(UpdateRenderables, LoadRequiredIfIdealTileCantBeFound) {
}),
log);
}
+
+// Tests overzooming a 0/0/0 tile to zoom level 4, when the maxzoom is 2.
+TEST(UpdateRenderables, LoadOverscaledMaxZoomTile) {
+ ActionLog log;
+ MockSource source;
+ auto getTileData = getTileDataFn(log, source.dataTiles);
+ auto createTileData = createTileDataFn(log, source.dataTiles);
+ auto retainTileData = retainTileDataFn(log);
+ auto renderTile = renderTileFn(log);
+
+ source.zoomRange.max = 2;
+ source.idealTiles.emplace(UnwrappedTileID{ 2, 0, 0 });
+
+ auto tile_4_2_0_0 = source.createTileData(OverscaledTileID{ 4, 0, { 2, 0, 0 } });
+ tile_4_2_0_0->renderable = false;
+ tile_4_2_0_0->triedOptional = true;
+ tile_4_2_0_0->loaded = true;
+
+ auto tile_3_2_0_0 = source.createTileData(OverscaledTileID{ 3, 0, { 2, 0, 0 } });
+ tile_3_2_0_0->renderable = false;
+ tile_3_2_0_0->triedOptional = true;
+ tile_3_2_0_0->loaded = true;
+
+ auto tile_2_2_0_0 = source.createTileData(OverscaledTileID{ 2, 0, { 2, 0, 0 } });
+ tile_2_2_0_0->renderable = false;
+ tile_2_2_0_0->triedOptional = true;
+ tile_2_2_0_0->loaded = true;
+
+ // Tile level 1 won't be overscaled.
+ auto tile_1_1_0_0 = source.createTileData(OverscaledTileID{ 1, 0, { 1, 0, 0 } });
+ tile_1_1_0_0->renderable = true;
+ tile_1_1_0_0->triedOptional = true;
+ tile_1_1_0_0->loaded = true;
+
+ algorithm::updateRenderables(getTileData, createTileData, retainTileData, renderTile,
+ source.idealTiles, source.zoomRange, 4);
+ EXPECT_EQ(ActionLog({
+ GetTileDataAction{ { 4, 0, { 2, 0, 0 } }, Found },
+ RetainTileDataAction{ { 4, 0, { 2, 0, 0 } }, TileNecessity::Required },
+ GetTileDataAction{ { 5, 0, { 2, 0, 0 } }, NotFound },
+ GetTileDataAction{ { 3, 0, { 2, 0, 0 } }, Found },
+ RetainTileDataAction{ { 3, 0, { 2, 0, 0 } }, TileNecessity::Required },
+ GetTileDataAction{ { 2, 0, { 2, 0, 0 } }, Found },
+ RetainTileDataAction{ { 2, 0, { 2, 0, 0 } }, TileNecessity::Required },
+ GetTileDataAction{ { 1, 0, { 1, 0, 0 } }, Found },
+ RetainTileDataAction{ { 1, 0, { 1, 0, 0 } }, TileNecessity::Required },
+ RenderTileAction{ { 1, 0, 0 }, *tile_1_1_0_0 },
+ }),
+ log);
+}