mountcontrol/cxx/tests/cntr_proto_test.cpp

77 lines
1.9 KiB
C++

#include <iostream>
#include "../control_proto.h"
#include "../utils.h"
using namespace BM700;
void print_result(const std::optional<ControlProtoParser::parse_result_t>& res)
{
if (res.has_value()) {
std::cout << "CMD: " << res.value().cmd << "\n";
if (res->args.size()) {
std::cout << "ARGS: ";
for (auto const& el : res->args) {
std::cout << "'" << el << "' ";
}
std::cout << "\n";
} else {
std::cout << "NO ARGS\n";
}
} else {
std::cout << "Invalid command!\n";
}
}
void print_ang_result(std::string_view ang_str, bool hh = false)
{
std::cout << "ANG STRING: '" << ang_str << "'\n";
auto ang_res = mcc::utils::parsAngleString(ang_str, hh);
if (ang_res.has_value()) {
std::cout << "ANG: " << ang_res.value() << "\n";
} else {
std::cout << "INVALID ANGLE STRING!\n";
}
}
int main()
{
ControlProtoParser pr;
std::string cmd{CONTROL_PROTO_STR_TAG_MINALT.begin(), CONTROL_PROTO_STR_TAG_MINALT.end()};
cmd += "=10.324";
std::cout << "COMMAND STRING: " << cmd << "\n";
auto res = pr.parse(cmd);
print_result(res);
cmd = std::string(CONTROL_PROTO_STR_STOP.begin(), CONTROL_PROTO_STR_STOP.end());
std::cout << "\nCOMMAND STRING: " << cmd << "\n";
res = pr.parse(cmd);
print_result(res);
cmd = std::string(CONTROL_PROTO_STR_UTC_DATE.begin(), CONTROL_PROTO_STR_UTC_DATE.end());
cmd += "=2025-06-10,01:32:45.213";
std::cout << "\nCOMMAND STRING: " << cmd << "\n";
res = pr.parse(cmd);
print_result(res);
std::cout << "\n\n******* TEST ANGLE STRING PARSING *******\n";
cmd = " 10:00:00 ";
print_ang_result(cmd);
cmd = " -10:30:36 ";
print_ang_result(cmd);
cmd = "231.3467 ";
print_ang_result(cmd);
cmd = " 12:30:00 ";
print_ang_result(cmd, true);
return 0;
}