geopro/tests/render/test_terrain.cpp

33 lines
1.3 KiB
C++

#include <gtest/gtest.h>
#include <string>
#include <vtkActor.h>
#include <vtkMapper.h>
#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, 1.0);
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);
}