39 lines
1.3 KiB
C++
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);
|
|
}
|