#include "app.hpp" #include #include void test_port_mapping_unique_id() { // SRS-F-05-001: 端口唯一编号系统 odf::PortMappingManager pm; int id1 = pm.addMapping("P-001", "F-001"); assert(id1 > 0); int id2 = pm.addMapping("P-002", "F-002"); assert(id2 > 0); assert(id2 != id1); // 重复端口应返回 -1 int id_dup = pm.addMapping("P-001", "F-003"); assert(id_dup == -1); std::cout << "[PASS] test_port_mapping_unique_id" << std::endl; } void test_port_mapping_format_validation() { // SRS-F-05-002: 产品型号编码结构 odf::PortMappingManager pm; // 有效格式 int id_valid = pm.addMapping("ODF-1U-24", "F-001"); assert(id_valid > 0); // 无效格式(包含空格或过长) int id_invalid = pm.addMapping("INVALID PORT!", "F-002"); assert(id_invalid == -1); std::cout << "[PASS] test_port_mapping_format_validation" << std::endl; } void test_port_mapping_update_traceability() { // SRS-F-05-003: 内部组件编号与溯源 odf::PortMappingManager pm; pm.addMapping("P-001", "F-OLD", "TRAY-1", "CABLE-A", "Route 1"); bool updated = pm.updateMapping("P-001", "F-NEW", "TRAY-2", "CABLE-B", "Route 2"); assert(updated); auto mapping = pm.getMapping("P-001"); assert(mapping.has_value()); assert(mapping->fiber_core == "F-NEW"); assert(mapping->splice_tray == "TRAY-2"); assert(mapping->cable_core == "CABLE-B"); assert(mapping->route_info == "Route 2"); std::cout << "[PASS] test_port_mapping_update_traceability" << std::endl; } void test_port_mapping_crud() { // SRS-F-05-004: 端口映射记录表支持 odf::PortMappingManager pm; // Create int id = pm.addMapping("P-CRUD", "F-CRUD"); assert(id > 0); // Read auto opt = pm.getMapping("P-CRUD"); assert(opt.has_value()); assert(opt->port_code == "P-CRUD"); // Update bool upd = pm.updateMapping("P-CRUD", "F-CRUD-V2"); assert(upd); // Delete bool del = pm.deleteMapping("P-CRUD"); assert(del); // Verify deleted auto opt_after_del = pm.getMapping("P-CRUD"); assert(!opt_after_del.has_value()); std::cout << "[PASS] test_port_mapping_crud" << std::endl; } void test_device_monitor_status() { // SRS-NFR-SRS-010: CSCI运行适应性需求 odf::DeviceMonitor monitor; // 正常状态 auto healthy = monitor.checkStatus("N1", 25.0, 50.0, true); assert(healthy.port_status == odf::PortStatus::ACTIVE); assert(monitor.generateAlert(healthy).empty()); // 高温告警 auto hot = monitor.checkStatus("N2", 45.0, 50.0, true); assert(hot.port_status == odf::PortStatus::ERROR_STATE); assert(!monitor.generateAlert(hot).empty()); // 离线告警 auto offline = monitor.checkStatus("N3", 20.0, 40.0, false); assert(offline.port_status == odf::PortStatus::ERROR_STATE); assert(!monitor.generateAlert(offline).empty()); std::cout << "[PASS] test_device_monitor_status" << std::endl; } void test_user_authentication() { // SRS-NFR-SRS-011: 安全性需求 odf::UserService service; // 登录成功 auto user = service.authenticate("admin", "pass"); assert(user.has_value()); assert(user->is_session_valid); // 权限检查 assert(service.hasPermission(*user, odf::UserRole::ADMIN)); assert(service.hasPermission(*user, odf::UserRole::OPERATOR)); assert(service.hasPermission(*user, odf::UserRole::VIEWER)); // 登出后权限失效 service.logout("admin"); assert(!service.hasPermission(*user, odf::UserRole::VIEWER)); std::cout << "[PASS] test_user_authentication" << std::endl; } int main() { std::cout << "Running ODF Manager Basic Tests..." << std::endl; test_port_mapping_unique_id(); test_port_mapping_format_validation(); test_port_mapping_update_traceability(); test_port_mapping_crud(); test_device_monitor_status(); test_user_authentication(); std::cout << "All basic tests passed!" << std::endl; return 0; }