presentation/tests/test_app.cpp

117 lines
3.1 KiB
C++
Raw Normal View History

2026-06-08 08:14:42 +00:00
#include <gtest/gtest.h>
#include "app.hpp"
#include <vector>
#include <string>
namespace ocpm {
TEST(PlanManagerTest, testQueryPlansNormalInput) {
PlanManager manager;
manager.loadSampleData();
PlanQueryRequest req;
req.status_filter = -1;
req.priority_min = 0;
req.keyword = "";
req.page = 1;
req.page_size = 10;
SortParam sort{"priority", SortDirection::DESC};
auto result = manager.queryPlans(req, sort);
EXPECT_EQ(result.size(), 5);
EXPECT_EQ(result[0].priority, 95);
}
TEST(PlanManagerTest, testQueryPlansBoundaryPagination) {
PlanManager manager;
manager.loadSampleData();
PlanQueryRequest req;
req.page = 3;
req.page_size = 2;
auto result = manager.queryPlans(req, SortParam{});
EXPECT_TRUE(result.empty());
}
TEST(PlanManagerTest, testGetPlanDetailValidId) {
PlanManager manager;
manager.loadSampleData();
auto plan = manager.getPlanDetail("PLAN-001");
EXPECT_EQ(plan.plan_name, "突击行动-甲");
}
TEST(PlanManagerTest, testGetPlanDetailInvalidId) {
PlanManager manager;
manager.loadSampleData();
EXPECT_THROW(manager.getPlanDetail("INVALID"), std::invalid_argument);
}
TEST(PlanManagerTest, testComparePlansIdentical) {
PlanManager manager;
manager.loadSampleData();
auto diffs = manager.comparePlans("PLAN-001", "PLAN-001");
EXPECT_EQ(diffs.size(), 1);
EXPECT_EQ(diffs[0], "(no differences)");
}
TEST(PlanManagerTest, testReconstructSuccess) {
PlanManager manager;
manager.loadSampleData();
ReconstructCommand cmd{"PLAN-001", {"mod1", "mod2"}};
auto result = manager.reconstruct(cmd);
EXPECT_TRUE(result.success);
EXPECT_EQ(result.new_version, "PLAN-001-v2");
}
TEST(PlanManagerTest, testReconstructFailure) {
PlanManager manager;
ReconstructCommand cmd{"NONEXIST", {}};
auto result = manager.reconstruct(cmd);
EXPECT_FALSE(result.success);
}
TEST(PlanManagerTest, testLoadSampleData) {
PlanManager manager;
manager.loadSampleData();
EXPECT_NO_THROW(manager.getPlanDetail("PLAN-005"));
}
TEST(DistributedPlanManagerTest, testAddRemoveNode) {
DistributedPlanManager mgr;
TopoNode node{"N1", "Test", 0, 0};
mgr.addNode(node);
mgr.removeNode("N1");
EXPECT_TRUE(mgr.isConnected());
}
TEST(DistributedPlanManagerTest, testIsConnectedGraph) {
DistributedPlanManager mgr;
mgr.loadSampleData();
EXPECT_TRUE(mgr.isConnected());
}
TEST(DispatchManagerTest, testDispatchPlanValidAssets) {
DispatchManager mgr;
mgr.loadSampleData();
int count = mgr.dispatchPlan("P1", {"ASSET-001", "ASSET-004"});
EXPECT_EQ(count, 2);
}
TEST(DispatchManagerTest, testGetAssetStatusOffline) {
DispatchManager mgr;
EXPECT_EQ(mgr.getAssetStatus("UNKNOWN"), AssetStatusCode::OFFLINE);
}
TEST(DispatchManagerTest, testGetAlertsFiltered) {
DispatchManager mgr;
mgr.loadSampleData();
AlertLevel filter = AlertLevel::ERROR;
auto alerts = mgr.getAlerts(&filter);
EXPECT_EQ(alerts.size(), 1);
}
TEST(DispatchManagerTest, testClearAlerts) {
DispatchManager mgr;
mgr.loadSampleData();
mgr.clearAlerts();
EXPECT_TRUE(mgr.getAlerts().empty());
}
} // namespace ocpm