#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace mbgl; using namespace mbgl::style; TEST(API, ZoomHistory) { util::RunLoop loop; StubFileSource fileSource; ThreadPool threadPool(4); float pixelRatio { 1 }; HeadlessFrontend frontend { pixelRatio, fileSource, threadPool }; auto map = std::make_unique(frontend, MapObserver::nullObserver(), frontend.getSize(), pixelRatio, fileSource, threadPool, MapMode::Still); EXPECT_TRUE(map); map->getStyle().loadJSON(util::read_file("test/fixtures/api/empty.json")); auto source = std::make_unique("source"); source->setGeoJSON({ LineString { { 45, -45 }, { -45, 45 } } }); map->getStyle().addSource(std::move(source)); auto layer = std::make_unique("layer-1", "source"); layer->setLineWidth(CameraFunction { ExponentialStops {{ { 0, 8 }, { 1, 16 } }} }); layer->setLineDasharray({ std::vector { 1, 1 } }); layer->setLineColor( { Color::black() } ); map->getStyle().addLayer(std::move(layer)); layer = std::make_unique("layer-2", "source"); layer->setLineWidth(CameraFunction { ExponentialStops {{ { 0, 4 }, { 1, 8 } }} }); layer->setLineDasharray({ std::vector { 2, 2 } }); layer->setLineColor( { Color::red() } ); map->getStyle().addLayer(std::move(layer)); // ZoomHistory.lastIntegerZoom is 1. map->setZoom(1.0); frontend.render(*map); map->setZoom(0.0); frontend.render(*map); // ZoomHistory.lastIntegerZoom should be 0. map->setZoom(0.5); test::checkImage("test/fixtures/zoom_history", frontend.render(*map), 0.0002); map->setZoom(1.0); frontend.render(*map); map->setZoom(0.5); test::checkImage("test/fixtures/zoom_history", frontend.render(*map), 0.0002); }