easypdf_markdown/
markdown_export_result.rs1use std::path::{Path, PathBuf};
4
5use crate::MarkdownExportReport;
6
7#[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 #[must_use]
21 pub fn output(&self) -> &Path {
22 &self.output
23 }
24
25 #[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}