mirror of
https://github.com/esphome/esphome.git
synced 2026-10-20 04:56:48 +00:00
66 lines
3.3 KiB
C++
66 lines
3.3 KiB
C++
#include <gtest/gtest.h>
|
|
#include <string>
|
|
#include "esphome/components/dfrobot_sen0395/dfrobot_sen0395.h"
|
|
|
|
namespace esphome::dfrobot_sen0395::testing {
|
|
|
|
// The text each command sends, as the per-command classes sent it before the queue held plain values.
|
|
class FormatCommandTest : public ::testing::Test {
|
|
protected:
|
|
std::string format(CommandType type, uint8_t arg = 0) {
|
|
char buf[64];
|
|
this->radar_.format_command({type, arg}, buf, sizeof(buf));
|
|
return buf;
|
|
}
|
|
|
|
DfrobotSen0395Component radar_;
|
|
};
|
|
|
|
TEST_F(FormatCommandTest, FixedCommands) {
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_POWER, true), "sensorStart");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_POWER, false), "sensorStop");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_FACTORY_RESET),
|
|
"factoryReset 0x45670123 0xCDEF89AB 0x956128C6 0xDF54AC89");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_SAVE_CFG), "saveCfg 0x45670123 0xCDEF89AB 0x956128C6 0xDF54AC89");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_RESET_SYSTEM), "resetSystem");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_LED_MODE, true), "setLedMode 1 0");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_LED_MODE, false), "setLedMode 1 1");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_UART_OUTPUT, true), "setUartOutput 1 1");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_UART_OUTPUT, false), "setUartOutput 1 0");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_SENSOR_CFG_START, true), "sensorCfgStart 1");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_SENSOR_CFG_START, false), "sensorCfgStart 0");
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_SENSITIVITY, 7), "setSensitivity 7");
|
|
}
|
|
|
|
TEST_F(FormatCommandTest, DetectionRangeSegments) {
|
|
this->radar_.enqueue_det_range_cfg(0.3f, 1.2f, -1, -1, -1, -1, -1, -1);
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_DET_RANGE_CFG), "detRangeCfg -1 2 8");
|
|
this->radar_.enqueue_det_range_cfg(0.0f, 1.5f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 9.0f);
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_DET_RANGE_CFG), "detRangeCfg -1 0 10 13 20 27 33 40 60");
|
|
// Segments stop at the first one with a negative bound
|
|
this->radar_.enqueue_det_range_cfg(0.0f, 1.5f, 2.0f, -1, 4.0f, 5.0f, 6.0f, 9.0f);
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_DET_RANGE_CFG), "detRangeCfg -1 0 10");
|
|
}
|
|
|
|
TEST_F(FormatCommandTest, DetectionRangeRoundsHalfStepsUp) {
|
|
// 0.075 m is half a 0.15 m step
|
|
this->radar_.enqueue_det_range_cfg(0.0f, 0.075f, -1, -1, -1, -1, -1, -1);
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_DET_RANGE_CFG), "detRangeCfg -1 0 1");
|
|
}
|
|
|
|
TEST_F(FormatCommandTest, DetectionRangeNegativeFirstSegmentFallsBack) {
|
|
this->radar_.enqueue_det_range_cfg(-1, 3.0f, -1, -1, -1, -1, -1, -1);
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_DET_RANGE_CFG), "detRangeCfg -1 0 0");
|
|
}
|
|
|
|
TEST_F(FormatCommandTest, Latency) {
|
|
this->radar_.enqueue_set_latency(0.0f, 2.5f);
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_SET_LATENCY), "setLatency 0.000 2.500");
|
|
this->radar_.enqueue_set_latency(0.0125f, 0.0374f);
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_SET_LATENCY), "setLatency 0.025 0.025");
|
|
this->radar_.enqueue_set_latency(1638.375f, 5000.0f);
|
|
EXPECT_EQ(this->format(CommandType::COMMAND_TYPE_SET_LATENCY), "setLatency 1638.375 1638.375");
|
|
}
|
|
|
|
} // namespace esphome::dfrobot_sen0395::testing
|