geopro/tests/app/test_dataset_category.cpp

49 lines
2.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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");
}