33 lines
1.3 KiB
C++
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);
|
|
}
|