47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
#include <gtest/gtest.h>
|
||
#include "model/Field.hpp"
|
||
#include "model/Anomaly.hpp"
|
||
using namespace geopro::core;
|
||
|
||
TEST(DataModel, GridHasMetaFields) {
|
||
Grid g(2, 3);
|
||
g.z.assign(6, 0.0); g.elevation = {1,2}; g.lat = {22.5,22.5}; g.lon = {114.1,114.1};
|
||
g.vmin = -10; g.vmax = 800;
|
||
EXPECT_EQ(g.z.size(), 6u);
|
||
EXPECT_DOUBLE_EQ(g.vmax, 800);
|
||
}
|
||
|
||
TEST(DataModel, ScatterHasGis) {
|
||
ScatterField s; s.projX = {516000.0}; s.projY = {2494000.0};
|
||
EXPECT_EQ(s.projX.size(), 1u);
|
||
}
|
||
|
||
TEST(DataModel, AnomalyHolds) {
|
||
Anomaly a;
|
||
a.name = "ERT1-54"; a.markType = AnomalyMarkType::Polyline;
|
||
a.localPts = {{1.0, 2.0}, {3.0, 4.0}};
|
||
EXPECT_EQ(a.markType, AnomalyMarkType::Polyline);
|
||
EXPECT_EQ(a.localPts.size(), 2u);
|
||
}
|
||
|
||
// 异常挂载实体解析(spec §8):切片已保存挂切片、临时切片挂体。
|
||
TEST(ResolveAnomalyMount, SavedSliceMountsOnSlice) {
|
||
EXPECT_EQ(resolveAnomalyMount(true, "slice-1", "vol-1"), "slice-1");
|
||
}
|
||
TEST(ResolveAnomalyMount, UnsavedSliceMountsOnVolume) {
|
||
EXPECT_EQ(resolveAnomalyMount(false, "", "vol-1"), "vol-1");
|
||
}
|
||
TEST(ResolveAnomalyMount, SavedFlagButEmptySliceIdFallsBackToVolume) {
|
||
// 防御:标记已保存但切片 id 缺失 → 退回挂体(不产出空 remarkSourceId)。
|
||
EXPECT_EQ(resolveAnomalyMount(true, "", "vol-1"), "vol-1");
|
||
}
|
||
|
||
#include <cmath>
|
||
TEST(GridNaN, HasValueReflectsNaN) {
|
||
geopro::core::Grid g(2, 2);
|
||
g.valueAt(0, 0) = 3.0;
|
||
g.valueAt(1, 0) = std::nan("");
|
||
EXPECT_TRUE(g.hasValue(0, 0));
|
||
EXPECT_FALSE(g.hasValue(1, 0));
|
||
}
|