geopro/tests/controller/test_plane_z_registry.cpp

39 lines
1.3 KiB
C++

#include <gtest/gtest.h>
#include "controller/PlaneZRegistry.hpp"
using geopro::controller::PlaneZRegistry;
TEST(PlaneZRegistry, FirstCheckSetsPlaneZ) {
PlaneZRegistry r;
EXPECT_DOUBLE_EQ(r.onChecked("trajectory", "a", 12.0), 12.0);
EXPECT_TRUE(r.hasPlane("trajectory"));
EXPECT_DOUBLE_EQ(r.planeZ("trajectory"), 12.0);
}
TEST(PlaneZRegistry, SecondCheckKeepsFirstZ) {
PlaneZRegistry r;
r.onChecked("trajectory", "a", 12.0);
EXPECT_DOUBLE_EQ(r.onChecked("trajectory", "b", 99.0), 12.0); // 投影到首个 ds 的平面
}
TEST(PlaneZRegistry, PlaneDisappearsWhenAllUnchecked) {
PlaneZRegistry r;
r.onChecked("trajectory", "a", 12.0);
r.onChecked("trajectory", "b", 99.0);
r.onUnchecked("trajectory", "a");
EXPECT_TRUE(r.hasPlane("trajectory")); // 还有 b
r.onUnchecked("trajectory", "b");
EXPECT_FALSE(r.hasPlane("trajectory")); // 全消 → 平面消失
}
TEST(PlaneZRegistry, RecheckAfterEmptyResetsZ) {
PlaneZRegistry r;
r.onChecked("trajectory", "a", 12.0);
r.onUnchecked("trajectory", "a");
EXPECT_DOUBLE_EQ(r.onChecked("trajectory", "c", 7.0), 7.0); // 重新首勾 → 新 z
}
TEST(PlaneZRegistry, SetPlaneZMovesPlane) {
PlaneZRegistry r;
r.onChecked("trajectory", "a", 12.0);
r.setPlaneZ("trajectory", 30.0);
EXPECT_DOUBLE_EQ(r.planeZ("trajectory"), 30.0);
}