49 lines
2.2 KiB
C++
49 lines
2.2 KiB
C++
#include <gtest/gtest.h>
|
||
#include "DatasetCategory.hpp"
|
||
#include "repo/CategoryDescriptor.hpp"
|
||
using geopro::data::DsRow;
|
||
using namespace geopro::app;
|
||
|
||
namespace {
|
||
DsRow row(const std::string& id, const std::string& ddCode, const std::string& dsTypeCode) {
|
||
DsRow r;
|
||
r.id = id;
|
||
r.ddCode = ddCode;
|
||
r.dsTypeCode = dsTypeCode;
|
||
return r;
|
||
}
|
||
} // namespace
|
||
|
||
TEST(SplitByCategory, RoutesByDsTypeCodeAndDdCode) {
|
||
std::vector<DsRow> rows = {
|
||
row("a", "dd_inversion_data", "ERT platform inversion data"), // 电阻率
|
||
row("b", "dd_inversion_data", "visual resistivity data"), // 视电阻率
|
||
row("c", "dd_inversion_data", "DD TRANSIENT ELECTROMAGNETIC INVERSION"), // 瞬变
|
||
row("v", "dd_voxel", ""), // 三维体(按 ddCode)
|
||
row("s", "dd_slice", ""), // 切片(按 ddCode)
|
||
row("x", "dd_ert_measurement_gr_data", "earth resistance"), // 接地电阻 → 丢弃
|
||
};
|
||
const CategoryBuckets b = splitByCategory(rows);
|
||
// splitByCategory 现走 categoryCatalog()(5 段,含 trajectory);旧 categoryConfigs 暂保留供 UI。
|
||
ASSERT_EQ(b.segments.size(), geopro::data::categoryCatalog().size());
|
||
EXPECT_EQ(b.segments[0].size(), 1u); EXPECT_EQ(b.segments[0][0].id, "a");
|
||
EXPECT_EQ(b.segments[1].size(), 1u); EXPECT_EQ(b.segments[1][0].id, "b");
|
||
EXPECT_EQ(b.segments[2].size(), 1u); EXPECT_EQ(b.segments[2][0].id, "c");
|
||
EXPECT_EQ(b.segments[3].size(), 1u); EXPECT_EQ(b.segments[3][0].id, "v");
|
||
// 切片(dd_slice)不单列段——挂三维体树,不进任何段;接地电阻同样丢弃。
|
||
std::size_t total = 0;
|
||
for (auto& s : b.segments) total += s.size();
|
||
EXPECT_EQ(total, 4u);
|
||
}
|
||
|
||
TEST(SplitByCategory, PreservesOrderWithinSegment) {
|
||
std::vector<DsRow> rows = {
|
||
row("a1", "dd_inversion_data", "ERT platform inversion data"),
|
||
row("a2", "dd_inversion_data", "ERT platform inversion data"),
|
||
};
|
||
const CategoryBuckets b = splitByCategory(rows);
|
||
ASSERT_EQ(b.segments[0].size(), 2u);
|
||
EXPECT_EQ(b.segments[0][0].id, "a1");
|
||
EXPECT_EQ(b.segments[0][1].id, "a2");
|
||
}
|