71 lines
2.5 KiB
C++
71 lines
2.5 KiB
C++
#include <gtest/gtest.h>
|
||
|
||
#include <string>
|
||
|
||
#include "repo/I3dSceneRepository.hpp"
|
||
#include "repo/LocalSample3dRepository.hpp"
|
||
#include "repo/LocalSampleRepository.hpp"
|
||
|
||
using namespace geopro::data;
|
||
|
||
static const std::string kDir =
|
||
"D:/Git/lanbingtech/geopro/docs/剖面网格数据的色阶数据2等文件/";
|
||
static const std::string kCrs = "EPSG:4547";
|
||
|
||
namespace {
|
||
DsRow rowWith(const std::string& ddCode) {
|
||
DsRow r;
|
||
r.ddCode = ddCode;
|
||
return r;
|
||
}
|
||
} // namespace
|
||
|
||
// dimensionOf:各 ddCode → 维度映射(同步纯函数,spec §6.1)。
|
||
TEST(LocalSample3dRepo, DimensionOfMapsDdCode) {
|
||
LocalSampleRepository base(kDir);
|
||
LocalSample3dRepository repo(base, kCrs, 22.0, 114.0);
|
||
|
||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_voxel")), DsDimension::Dim3D);
|
||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_Structual3D")), DsDimension::Dim3D);
|
||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_Property3D")), DsDimension::Dim3D);
|
||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_section")), DsDimension::Dim3D);
|
||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_inversion_data")), DsDimension::Dim3D);
|
||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_slice")), DsDimension::Analysis3D);
|
||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_trajectory_data")), DsDimension::Dim2D);
|
||
EXPECT_EQ(repo.dimensionOf(rowWith("dd_unknown_xyz")), DsDimension::Other);
|
||
}
|
||
|
||
// loadVolume:回调收到有效 VolumeGrid(nx>0 且 vmax>vmin),需 PROJ_DATA。
|
||
TEST(LocalSample3dRepo, LoadVolumeCallsBackWithValidGrid) {
|
||
LocalSampleRepository base(kDir);
|
||
LocalSample3dRepository repo(base, kCrs, 22.0, 114.0);
|
||
|
||
bool ok = false;
|
||
std::string err;
|
||
VolumeGrid got;
|
||
repo.loadVolume("voxel1", [&](VolumeGrid g) { ok = true; got = std::move(g); },
|
||
[&](const std::string& m) { err = m; });
|
||
|
||
ASSERT_TRUE(ok) << "loadVolume onErr: " << err;
|
||
EXPECT_GT(got.vol.nx(), 0);
|
||
EXPECT_GT(got.vol.ny(), 0);
|
||
EXPECT_GT(got.vol.nz(), 0);
|
||
EXPECT_GT(got.vmax, got.vmin);
|
||
EXPECT_TRUE(got.valid());
|
||
}
|
||
|
||
// loadTerrainPaths:回调收到 dem/image 绝对路径(非空)。
|
||
TEST(LocalSample3dRepo, LoadTerrainPathsCallsBack) {
|
||
LocalSampleRepository base(kDir);
|
||
LocalSample3dRepository repo(base, kCrs, 22.0, 114.0);
|
||
|
||
bool ok = false;
|
||
TerrainPaths got;
|
||
repo.loadTerrainPaths([&](TerrainPaths p) { ok = true; got = std::move(p); },
|
||
[&](const std::string&) {});
|
||
|
||
ASSERT_TRUE(ok);
|
||
EXPECT_FALSE(got.demPath.empty());
|
||
EXPECT_FALSE(got.imagePath.empty());
|
||
}
|