fwt_software/tests/test_telemetry.cpp

31 lines
1.0 KiB
C++

#include <doctest/doctest.h>
#include "fgc/TelemetryParser.h"
using namespace fgc;
TEST_CASE("parseTelemetryLine reads a valid record") {
auto t = parseTelemetryLine("$;100;2;3;4;1;5;123.5;0;55;21;200;");
REQUIRE(t.has_value());
CHECK(t->encoder == 100);
CHECK(t->is_moving == 1);
CHECK(t->heading == doctest::Approx(123.5f));
// field order: humidity (index 9) before temperature (index 10)
CHECK(t->humidity == 55);
CHECK(t->temperature == 21);
CHECK(t->fan_pwm == 200);
}
TEST_CASE("parseTelemetryLine rejects malformed lines") {
CHECK_FALSE(parseTelemetryLine("garbage").has_value());
CHECK_FALSE(parseTelemetryLine("").has_value());
CHECK_FALSE(parseTelemetryLine("$;1;2;3").has_value()); // too few
CHECK_FALSE(parseTelemetryLine("$;a;2;3;4;5;6;7;8;9;10;11;").has_value()); // bad int
}
TEST_CASE("parseTelemetryLine tolerates trailing CR/LF") {
auto t = parseTelemetryLine("$;1;2;3;4;0;6;7.0;8;9;10;11;\r\n");
REQUIRE(t.has_value());
CHECK(t->fan_pwm == 11);
}