#include #include #include #include #include "actors/TerrainActor.hpp" #include "geo/GeoLocalFrame.hpp" using namespace geopro::core; // 样本 DEM/影像目录(UTF-8 中文路径;源文件以 UTF-8 保存 + MSVC /utf-8 编译)。 static const std::string kDir = u8"D:/Git/lanbingtech/geopro/docs/剖面网格数据的色阶数据2等文件/"; // buildTerrain: 真实 dem.tif + image.tif 经 GDAL 读 + 重投影 → 非空 actor 且有 mapper。 // (需 PROJ_DATA + GDAL 运行时; tests CMake 注入 PROJ_DATA。) TEST(Terrain, BuildsTexturedSurfaceFromSampleDemImage) { GeoLocalFrame frame(22.546, 114.164); // 测区附近(香港) auto actor = geopro::render::buildTerrain(kDir + "dem.tif", kDir + "image.tif", frame); ASSERT_NE(actor.GetPointer(), nullptr); ASSERT_NE(actor->GetMapper(), nullptr); // 成功读 DEM → 有 mapper(空 actor 无 mapper) } // 不存在的 DEM → 安全返回空 actor(无 mapper),不崩。 TEST(Terrain, MissingDemYieldsSafeActor) { GeoLocalFrame frame(22.546, 114.164); auto actor = geopro::render::buildTerrain("D:/no/such/dem.tif", "D:/no/such/img.tif", frame); ASSERT_NE(actor.GetPointer(), nullptr); EXPECT_EQ(actor->GetMapper(), nullptr); }