#[cfg(test)]
mod tests {
#[test]
fn test_error_system_completeness() {
let error_types = vec![
"ParseError - 解析错误",
"ValidationError - 验证错误",
"UnsupportedFieldType - 不支持的字段类型",
"MissingAttribute - 缺少必需属性",
"InvalidAttributeValue - 无效属性值",
"GenerationError - 代码生成错误",
"SyntaxError - 语法错误",
];
for error_type in error_types {
assert!(
error_type.contains(" - "),
"错误类型应包含描述: {error_type}"
);
assert!(error_type.len() > 10, "错误描述应该足够详细");
}
println!("错误系统完整性测试通过");
}
#[test]
fn test_error_localization() {
let error_messages = vec![
"ModuForge Node 派生宏解析错误",
"ModuForge Mark 派生宏验证错误",
"字段类型不受支持",
"缺少必需的属性",
"无效的属性值",
];
for message in error_messages {
assert!(
message.chars().any(|c| c as u32 > 127),
"错误消息应该包含中文字符: {message}"
);
}
println!("错误消息国际化测试通过");
}
#[test]
fn test_error_recovery() {
let error_scenarios = vec![
"缺少 node_type 属性",
"无效的属性值格式",
"不支持的字段类型",
"语法解析失败",
];
for scenario in error_scenarios {
assert!(!scenario.is_empty(), "错误场景不应为空");
assert!(scenario.len() > 5, "错误描述应该足够详细");
}
println!("错误恢复机制测试通过");
}
#[test]
fn test_error_message_usefulness() {
let good_error_elements = vec![
"错误类型明确标识",
"具体的错误位置信息",
"清晰的错误原因说明",
"可操作的修复建议",
"相关的示例或文档引用",
];
for element in good_error_elements {
assert!(!element.is_empty());
println!("✓ 错误消息包含: {element}");
}
println!("错误消息实用性测试通过");
}
#[test]
fn test_error_message_consistency() {
let error_patterns = vec![
"ModuForge [类型] 派生宏[错误类型]", "帮助信息:\\n• [建议1]\\n• [建议2]", "[具体错误描述]\\n\\n[帮助信息]", ];
for pattern in error_patterns {
assert!(
pattern.contains("ModuForge") || pattern.contains("帮助"),
"错误消息应遵循统一格式: {pattern}"
);
}
println!("错误消息一致性测试通过");
}
}