Files
App/tests/test_sensor_validator.cpp
2026-06-13 13:46:53 +07:00

64 lines
2.0 KiB
C++

#include "validation/sensor_validator.hpp"
#include <gtest/gtest.h>
TEST(SensorValidator, LidarRequiresNameIpPort)
{
std::string err;
EXPECT_FALSE(lm::SensorValidator::validateLidarPayload(nlohmann::json::object(), err));
EXPECT_FALSE(err.empty());
err.clear();
EXPECT_TRUE(lm::SensorValidator::validateLidarPayload(
{{"name", "front"}, {"ip", "192.168.1.10"}, {"port", 2112}}, err))
<< err;
}
TEST(SensorValidator, LidarPortRange)
{
std::string err;
EXPECT_FALSE(lm::SensorValidator::validateLidarPayload(
{{"name", "front"}, {"ip", "192.168.1.10"}, {"port", 70000}}, err));
}
TEST(SensorValidator, ImuRequiresFrameAndTopic)
{
std::string err;
EXPECT_FALSE(lm::SensorValidator::validateImuPayload({{"name", "imu1"}}, err));
err.clear();
EXPECT_TRUE(lm::SensorValidator::validateImuPayload(
{{"name", "imu1"}, {"frame_id", "imu_link"}, {"topic", "/imu/data"}}, err))
<< err;
}
TEST(SensorValidator, ImuInvalidSource)
{
std::string err;
EXPECT_FALSE(lm::SensorValidator::validateImuPayload(
{{"name", "imu1"},
{"frame_id", "imu_link"},
{"topic", "/imu/data"},
{"source", "invalid_source"}},
err));
}
TEST(SensorValidator, LidarTripletDuplicateDetection)
{
const nlohmann::json state = {
{"lidars",
nlohmann::json::array({{{"id", "l1"}, {"name", "front"}, {"ip", "10.0.0.1"}, {"port", 2112}}})}};
EXPECT_TRUE(lm::SensorValidator::lidarTripletExists(state, "front", "10.0.0.1", 2112));
const std::string exclude = "l1";
EXPECT_FALSE(lm::SensorValidator::lidarTripletExists(state, "front", "10.0.0.1", 2112, &exclude));
}
TEST(SensorValidator, ImuFrameDuplicateDetection)
{
const nlohmann::json state = {
{"imus", nlohmann::json::array({{{"id", "i1"}, {"frame_id", "base_imu"}}})}};
EXPECT_TRUE(lm::SensorValidator::imuFrameExists(state, "base_imu"));
const std::string exclude = "i1";
EXPECT_FALSE(lm::SensorValidator::imuFrameExists(state, "base_imu", &exclude));
}