61 lines
1.8 KiB
C++
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);
|
|
}
|
|
}
|