docx_handlebars/
errors.rs1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum DocxError {
8 #[error("无效的 DOCX 文件格式:文件不是有效的 ZIP 文件")]
9 InvalidZipFormat,
10 #[error("文件大小不足:文件太小,不是有效的 ZIP 文件(需要至少 22 字节)")]
11 FileTooSmall,
12 #[error("无效的 ZIP 签名:文件开头不是有效的 ZIP 文件签名")]
13 InvalidZipSignature,
14 #[error("缺少必需的 DOCX 文件:{0}")]
15 MissingRequiredFile(String),
16 #[error("ZIP 文件读取错误:{0}")]
17 ZipReadError(String),
18 #[error("IO 错误:{0}")]
19 IoError(#[from] std::io::Error),
20 #[error("模板处理错误:{0}")]
21 TemplateError(String),
22}
23
24#[cfg(test)]
25mod tests {
26 use super::*;
27
28 #[test]
29 fn test_docx_error_display() {
30 let file_too_small = DocxError::FileTooSmall;
32 assert_eq!(
33 file_too_small.to_string(),
34 "文件大小不足:文件太小,不是有效的 ZIP 文件(需要至少 22 字节)"
35 );
36
37 let invalid_signature = DocxError::InvalidZipSignature;
38 assert_eq!(
39 invalid_signature.to_string(),
40 "无效的 ZIP 签名:文件开头不是有效的 ZIP 文件签名"
41 );
42
43 let missing_file = DocxError::MissingRequiredFile("word/document.xml".to_string());
44 assert_eq!(
45 missing_file.to_string(),
46 "缺少必需的 DOCX 文件:word/document.xml"
47 );
48
49 let template_error = DocxError::TemplateError("测试错误".to_string());
50 assert_eq!(
51 template_error.to_string(),
52 "模板处理错误:测试错误"
53 );
54 }
55}