diff options
Diffstat (limited to 'test/algorithm/update_renderables.test.cpp')
-rw-r--r-- | test/algorithm/update_renderables.test.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/test/algorithm/update_renderables.test.cpp b/test/algorithm/update_renderables.test.cpp index 22d8d79443..6958f21ea2 100644 --- a/test/algorithm/update_renderables.test.cpp +++ b/test/algorithm/update_renderables.test.cpp @@ -1309,3 +1309,66 @@ TEST(UpdateRenderables, LoadOverscaledMaxZoomTile) { }), log); } + +TEST(UpdateRenderables, MaxParentOverscaleFactor) { + 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.idealTiles.emplace(UnwrappedTileID{4, 0, 0}); + source.idealTiles.emplace(UnwrappedTileID{4, 1, 0}); + + auto tile_0_0_0_0 = source.createTileData(OverscaledTileID{0, 0, 0}); + tile_0_0_0_0->renderable = true; + + // Set max parent overscale factor to 4, so that tile 0,0,0 would be rendered + algorithm::updateRenderables( + getTileData, createTileData, retainTileData, renderTile, source.idealTiles, source.zoomRange, 4, 4); + EXPECT_EQ(ActionLog({GetTileDataAction{{4, 0, {4, 0, 0}}, NotFound}, // ideal tile + CreateTileDataAction{{4, 0, {4, 0, 0}}}, + RetainTileDataAction{{4, 0, {4, 0, 0}}, TileNecessity::Required}, + GetTileDataAction{{5, 0, {5, 0, 0}}, NotFound}, // child tiles + GetTileDataAction{{5, 0, {5, 0, 1}}, NotFound}, + GetTileDataAction{{5, 0, {5, 1, 0}}, NotFound}, + GetTileDataAction{{5, 0, {5, 1, 1}}, NotFound}, + GetTileDataAction{{3, 0, {3, 0, 0}}, NotFound}, // ascent + GetTileDataAction{{2, 0, {2, 0, 0}}, NotFound}, + GetTileDataAction{{1, 0, {1, 0, 0}}, NotFound}, + GetTileDataAction{{0, 0, {0, 0, 0}}, Found}, + RetainTileDataAction{{0, 0, {0, 0, 0}}, TileNecessity::Optional}, + RenderTileAction{{0, 0, 0}, *tile_0_0_0_0}, // render tile 0,0,0 + GetTileDataAction{{4, 0, {4, 1, 0}}, NotFound}, // ideal tile + CreateTileDataAction{{4, 0, {4, 1, 0}}}, + RetainTileDataAction{{4, 0, {4, 1, 0}}, TileNecessity::Required}, + GetTileDataAction{{5, 0, {5, 2, 0}}, NotFound}, // child tiles + GetTileDataAction{{5, 0, {5, 2, 1}}, NotFound}, + GetTileDataAction{{5, 0, {5, 3, 0}}, NotFound}, + GetTileDataAction{{5, 0, {5, 3, 1}}, NotFound}}), + log); + + log.clear(); + + // Set max parent overscale factor to 3. + // Parent tile 0,0,0 should not be requested / rendered. + algorithm::updateRenderables( + getTileData, createTileData, retainTileData, renderTile, source.idealTiles, source.zoomRange, 4, 3); + EXPECT_EQ(ActionLog({GetTileDataAction{{4, 0, {4, 0, 0}}, Found}, // ideal tile + RetainTileDataAction{{4, 0, {4, 0, 0}}, TileNecessity::Required}, + GetTileDataAction{{5, 0, {5, 0, 0}}, NotFound}, // child tiles + GetTileDataAction{{5, 0, {5, 0, 1}}, NotFound}, + GetTileDataAction{{5, 0, {5, 1, 0}}, NotFound}, + GetTileDataAction{{5, 0, {5, 1, 1}}, NotFound}, + GetTileDataAction{{3, 0, {3, 0, 0}}, NotFound}, // ascent + GetTileDataAction{{2, 0, {2, 0, 0}}, NotFound}, + GetTileDataAction{{1, 0, {1, 0, 0}}, NotFound}, + GetTileDataAction{{4, 0, {4, 1, 0}}, Found}, // ideal tile + RetainTileDataAction{{4, 0, {4, 1, 0}}, TileNecessity::Required}, + GetTileDataAction{{5, 0, {5, 2, 0}}, NotFound}, // child tiles + GetTileDataAction{{5, 0, {5, 2, 1}}, NotFound}, + GetTileDataAction{{5, 0, {5, 3, 0}}, NotFound}, + GetTileDataAction{{5, 0, {5, 3, 1}}, NotFound}}), + log); +} |