43 lines
1.8 KiB
C++
43 lines
1.8 KiB
C++
#include "TestHarness.h"
|
|
|
|
#include "src/assistant/CommandDispatcher.h"
|
|
#include "src/assistant/IntentRouter.h"
|
|
|
|
QA_TEST(IntentRouting, TrimsChatText)
|
|
{
|
|
const UserIntent intent = IntentRouter().route(QStringLiteral(" 你好 "));
|
|
QA_EXPECT_EQ(intent.type, UserIntentType::Chat);
|
|
QA_EXPECT_EQ(intent.text, QStringLiteral("你好"));
|
|
}
|
|
|
|
QA_TEST(IntentRouting, ReminderHasPriorityOverWeather)
|
|
{
|
|
const UserIntent intent = IntentRouter().route(QStringLiteral("明天提醒我看天气"));
|
|
QA_EXPECT_EQ(intent.type, UserIntentType::Reminder);
|
|
}
|
|
|
|
QA_TEST(IntentRouting, RecognizesWeatherExpressions)
|
|
{
|
|
const IntentRouter router;
|
|
QA_EXPECT_EQ(router.route(QStringLiteral("西安天气怎么样")).type, UserIntentType::Weather);
|
|
QA_EXPECT_EQ(router.route(QStringLiteral("明天会不会下雨")).type, UserIntentType::Weather);
|
|
QA_EXPECT_EQ(router.route(QStringLiteral("外面冷不冷")).type, UserIntentType::Weather);
|
|
}
|
|
|
|
QA_TEST(IntentRouting, RemovedLocalCapabilitiesRemainChat)
|
|
{
|
|
const IntentRouter router;
|
|
QA_EXPECT_EQ(router.route(QStringLiteral("读取文件")).type, UserIntentType::Chat);
|
|
QA_EXPECT_EQ(router.route(QStringLiteral("打开 Codex")).type, UserIntentType::Chat);
|
|
QA_EXPECT_EQ(router.route(QStringLiteral("分析这个项目")).type, UserIntentType::Chat);
|
|
QA_EXPECT_EQ(router.route(QStringLiteral("创建 test.txt")).type, UserIntentType::Chat);
|
|
}
|
|
|
|
QA_TEST(IntentRouting, DispatcherMapsSupportedActions)
|
|
{
|
|
const CommandDispatcher dispatcher;
|
|
QA_EXPECT_EQ(dispatcher.dispatch(QStringLiteral("提醒我休息")).action, CommandDispatchAction::Reminder);
|
|
QA_EXPECT_EQ(dispatcher.dispatch(QStringLiteral("北京天气")).action, CommandDispatchAction::Weather);
|
|
QA_EXPECT_EQ(dispatcher.dispatch(QStringLiteral("讲个笑话")).action, CommandDispatchAction::Chat);
|
|
}
|