38 lines
1.5 KiB
C++
38 lines
1.5 KiB
C++
#include <gtest/gtest.h>
|
|
#include "panels/ObjectTreeSelection.hpp"
|
|
using namespace geopro::app;
|
|
using geopro::data::DataSource;
|
|
|
|
TEST(AggregateGsState, AllOnIsChecked) {
|
|
EXPECT_EQ(aggregateGsState(true, 3, 3), GsCheck::Checked);
|
|
}
|
|
TEST(AggregateGsState, AllOffIsUnchecked) {
|
|
EXPECT_EQ(aggregateGsState(false, 0, 3), GsCheck::Unchecked);
|
|
}
|
|
TEST(AggregateGsState, DsOnTmNoneIsPartial) {
|
|
EXPECT_EQ(aggregateGsState(true, 0, 3), GsCheck::Partial); // 只 GS 自身 ds
|
|
}
|
|
TEST(AggregateGsState, DsOffSomeTmIsPartial) {
|
|
EXPECT_EQ(aggregateGsState(false, 1, 3), GsCheck::Partial); // 部分子 TM
|
|
}
|
|
TEST(AggregateGsState, DsOnSomeTmIsPartial) {
|
|
EXPECT_EQ(aggregateGsState(true, 2, 3), GsCheck::Partial); // ds 开但 TM 未满
|
|
}
|
|
TEST(AggregateGsState, NoTmFallsBackToDsOnly) {
|
|
EXPECT_EQ(aggregateGsState(true, 0, 0), GsCheck::Checked); // 无子 TM → 仅看 ds 开关
|
|
EXPECT_EQ(aggregateGsState(false, 0, 0), GsCheck::Unchecked);
|
|
}
|
|
|
|
TEST(DedupeSources, RemovesDuplicateByIdAndConfType) {
|
|
std::vector<DataSource> in = {{"t1", 2}, {"g1", 1}, {"t1", 2}, {"g1", 1}, {"t2", 2}};
|
|
const auto out = dedupeSources(in);
|
|
ASSERT_EQ(out.size(), 3u);
|
|
EXPECT_EQ(out[0].id, "t1"); EXPECT_EQ(out[0].confType, 2);
|
|
EXPECT_EQ(out[1].id, "g1"); EXPECT_EQ(out[1].confType, 1);
|
|
EXPECT_EQ(out[2].id, "t2");
|
|
}
|
|
TEST(DedupeSources, SameIdDifferentConfTypeKept) {
|
|
std::vector<DataSource> in = {{"x", 1}, {"x", 2}};
|
|
EXPECT_EQ(dedupeSources(in).size(), 2u);
|
|
}
|