fix: provide raster array source render item
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled

This commit is contained in:
OpenAI Codex
2026-09-01 12:31:13 +08:00
parent 3c7fec278c
commit 3ae7e24498
5 changed files with 74 additions and 4 deletions

View File

@@ -16,12 +16,15 @@
#include <mbgl/style/sources/custom_geometry_source.hpp>
#include <mbgl/style/sources/geojson_source.hpp>
#include <mbgl/style/sources/image_source.hpp>
#include <mbgl/style/sources/raster_array_source.hpp>
#include <mbgl/style/sources/raster_array_source_impl.hpp>
#include <mbgl/style/sources/raster_dem_source.hpp>
#include <mbgl/style/sources/raster_source.hpp>
#include <mbgl/style/sources/vector_source.hpp>
#include <mbgl/style/style.hpp>
#include <mbgl/renderer/sources/render_geojson_source.hpp>
#include <mbgl/renderer/sources/render_raster_array_source.hpp>
#include <mbgl/renderer/sources/render_raster_dem_source.hpp>
#include <mbgl/renderer/sources/render_raster_source.hpp>
#include <mbgl/renderer/sources/render_vector_source.hpp>
@@ -126,6 +129,33 @@ TEST(Source, LoadingFail) {
test.run();
}
TEST(Source, RasterArrayRenderItem) {
SourceTest test;
style::RasterArraySource source{"source", "fixture", "metadata", "field"};
particle::ParticleFieldSnapshot field;
auto impl = Immutable<style::RasterArraySource::Impl>(
makeMutable<style::RasterArraySource::Impl>(source.impl(), std::move(field)));
RenderRasterArraySource renderSource{impl};
renderSource.update(impl, {}, true, false, test.tileParameters());
EXPECT_TRUE(renderSource.isLoaded());
EXPECT_TRUE(renderSource.isEnabled());
TransformParameters transformParameters{test.transformState};
const MapDebugOptions debugOptions = MapDebugOptions::NoDebug;
renderSource.prepare({.transform = transformParameters,
.debugOptions = debugOptions,
.imageManager = *test.imageManager,
.sourceName = source.getID()});
auto item = renderSource.createRenderItem();
ASSERT_TRUE(item);
EXPECT_EQ(item->getName(), "source");
EXPECT_FALSE(item->hasRenderPass(RenderPass::Opaque));
EXPECT_FALSE(item->hasRenderPass(RenderPass::Translucent));
}
TEST(Source, LoadingCorrupt) {
SourceTest test;