#include #include "DatasetDimension.hpp" #include "repo/RepoTypes.hpp" using geopro::data::DsRow; using geopro::app::splitByDimension; using geopro::app::DimBuckets; static DsRow row(const char* id, const char* ddCode) { DsRow r; r.id = id; r.ddCode = ddCode; return r; } TEST(DatasetDimension, SplitsByDdCode) { std::vector in{ row("a", "dd_section"), // 3D row("b", "dd_voxel"), // 3D row("f", "dd_radar_3d"), // 3D(三维雷达体,spec §6.1) row("c", "dd_trajectory_data"), // 2D row("d", "dd_slice"), // Analysis row("e", "dd_unknownxyz"), // Other -> not in any bucket }; DimBuckets b = splitByDimension(in); ASSERT_EQ(b.dim3D.size(), 3u); EXPECT_EQ(b.dim3D[0].id, "a"); EXPECT_EQ(b.dim3D[1].id, "b"); EXPECT_EQ(b.dim3D[2].id, "f"); ASSERT_EQ(b.dim2D.size(), 1u); EXPECT_EQ(b.dim2D[0].id, "c"); ASSERT_EQ(b.analysis.size(), 1u); EXPECT_EQ(b.analysis[0].id, "d"); } TEST(DatasetDimension, EmptyInput) { DimBuckets b = splitByDimension({}); EXPECT_TRUE(b.dim3D.empty()); EXPECT_TRUE(b.dim2D.empty()); EXPECT_TRUE(b.analysis.empty()); }