Skip to main content

easypdf_markdown/
markdown_export_result.rs

1//! Markdown 转换结果。
2
3use std::path::{Path, PathBuf};
4
5use crate::MarkdownExportReport;
6
7/// 已完成的 Markdown 文件及转换报告。
8#[derive(Clone, Debug)]
9pub struct MarkdownExportResult {
10    output: PathBuf,
11    report: MarkdownExportReport,
12}
13
14impl MarkdownExportResult {
15    pub(crate) const fn new(output: PathBuf, report: MarkdownExportReport) -> Self {
16        Self { output, report }
17    }
18
19    /// 返回输出文件路径。
20    #[must_use]
21    pub fn output(&self) -> &Path {
22        &self.output
23    }
24
25    /// 返回转换报告。
26    #[must_use]
27    pub const fn report(&self) -> &MarkdownExportReport {
28        &self.report
29    }
30}
31
32#[cfg(test)]
33#[allow(clippy::uninlined_format_args, clippy::float_cmp)]
34mod tests {
35    use super::*;
36    use crate::MarkdownExportReport;
37
38    #[test]
39    fn output_returns_path() {
40        let report = MarkdownExportReport::default();
41        let result = MarkdownExportResult::new(PathBuf::from("/tmp/out.md"), report);
42        assert_eq!(result.output(), Path::new("/tmp/out.md"));
43    }
44
45    #[test]
46    fn report_returns_reference() {
47        let report = MarkdownExportReport::new(5, 10, 100, vec![]);
48        let result = MarkdownExportResult::new(PathBuf::from("/tmp/out.md"), report);
49        assert_eq!(result.report().pages_read(), 5);
50        assert_eq!(result.report().blocks_written(), 10);
51    }
52
53    #[test]
54    fn clone_preserves() {
55        let report = MarkdownExportReport::default();
56        let result = MarkdownExportResult::new(PathBuf::from("/tmp/out.md"), report);
57        let cloned = result.clone();
58        assert_eq!(result.output(), cloned.output());
59    }
60
61    #[test]
62    fn debug_format() {
63        let report = MarkdownExportReport::default();
64        let result = MarkdownExportResult::new(PathBuf::from("/tmp/out.md"), report);
65        let dbg = format!("{:?}", result);
66        assert!(dbg.contains("MarkdownExportResult"));
67    }
68}