mono/packages/kbot/cpp/tests/unit/test_cmd_kbot.cpp
2026-03-29 21:19:22 +02:00

61 lines
1.8 KiB
C++

#include <catch2/catch_test_macros.hpp>
#include <CLI/CLI.hpp>
#include "../../src/cmd_kbot.h"
using namespace polymech;
TEST_CASE("KBot CLI AI Command Parsing", "[kbot]") {
CLI::App app{"polymech-cli"};
auto* kbot_cmd = setup_cmd_kbot(app);
REQUIRE(kbot_cmd != nullptr);
SECTION("Default values for kbot ai") {
int argc = 3;
const char* argv[] = {"polymech-cli", "kbot", "ai"};
REQUIRE_NOTHROW(app.parse(argc, argv));
REQUIRE(is_kbot_ai_parsed() == true);
REQUIRE(is_kbot_run_parsed() == false);
// We can't access g_kbot_opts easily since it's static in cmd_kbot.cpp,
// but testing that it doesn't throw is a good start.
// In a real app we might pass options structs around instead of globals.
}
SECTION("Arguments for kbot ai") {
int argc = 7;
const char* argv[] = {
"polymech-cli", "kbot", "ai",
"--prompt", "hello world",
"--mode", "chat"
};
REQUIRE_NOTHROW(app.parse(argc, argv));
REQUIRE(is_kbot_ai_parsed() == true);
}
}
TEST_CASE("KBot CLI Run Command Parsing", "[kbot]") {
CLI::App app{"polymech-cli"};
auto* kbot_cmd = setup_cmd_kbot(app);
REQUIRE(kbot_cmd != nullptr);
SECTION("Default values for kbot run") {
int argc = 3;
const char* argv[] = {"polymech-cli", "kbot", "run"};
REQUIRE_NOTHROW(app.parse(argc, argv));
REQUIRE(is_kbot_run_parsed() == true);
REQUIRE(is_kbot_ai_parsed() == false);
}
SECTION("Arguments for kbot run") {
int argc = 6;
const char* argv[] = {
"polymech-cli", "kbot", "run",
"-c", "frontend-dev",
"--dry"
};
REQUIRE_NOTHROW(app.parse(argc, argv));
REQUIRE(is_kbot_run_parsed() == true);
}
}