fwt_software/tests/test_command.cpp

42 lines
1.1 KiB
C++

#include <doctest/doctest.h>
#include "fgc/CommandParser.h"
using namespace fgc;
TEST_CASE("parseCommand handles single-verb commands") {
auto c = parseCommand("snapshot");
CHECK(c.verb == "snapshot");
CHECK(c.device.empty());
CHECK_FALSE(c.has_value);
}
TEST_CASE("parseCommand takes the second word as the device") {
auto c = parseCommand("capture on");
CHECK(c.verb == "capture");
CHECK(c.device == "on");
CHECK(c.option.empty());
CHECK_FALSE(c.has_value);
}
TEST_CASE("parseCommand keeps option plus trailing numeric value") {
auto c = parseCommand("gimbal nudge yaw 5");
CHECK(c.verb == "gimbal");
CHECK(c.device == "nudge");
CHECK(c.option == "yaw");
CHECK(c.has_value);
CHECK(c.value == doctest::Approx(5.0));
}
TEST_CASE("parseCommand joins non-numeric trailing words into the option") {
auto c = parseCommand("set camera profile night");
CHECK(c.device == "camera");
CHECK(c.option == "profile night");
CHECK_FALSE(c.has_value);
}
TEST_CASE("parseCommand on empty input") {
CHECK(parseCommand("").empty());
CHECK(parseCommand(" ").empty());
}