easypdf_markdown/
markdown_export_report.rs1use crate::MarkdownWarning;
4
5#[derive(Clone, Debug, Default, PartialEq, Eq)]
7pub struct MarkdownExportReport {
8 pages_read: usize,
9 blocks_written: usize,
10 bytes_written: usize,
11 warnings: Vec<MarkdownWarning>,
12}
13
14impl MarkdownExportReport {
15 pub(crate) fn new(
16 pages_read: usize,
17 blocks_written: usize,
18 bytes_written: usize,
19 warnings: Vec<MarkdownWarning>,
20 ) -> Self {
21 Self {
22 pages_read,
23 blocks_written,
24 bytes_written,
25 warnings,
26 }
27 }
28
29 #[must_use]
31 pub const fn pages_read(&self) -> usize {
32 self.pages_read
33 }
34
35 #[must_use]
37 pub const fn blocks_written(&self) -> usize {
38 self.blocks_written
39 }
40
41 #[must_use]
43 pub const fn bytes_written(&self) -> usize {
44 self.bytes_written
45 }
46
47 #[must_use]
49 pub fn warnings(&self) -> &[MarkdownWarning] {
50 &self.warnings
51 }
52}
53
54#[cfg(test)]
55#[allow(clippy::uninlined_format_args, clippy::float_cmp)]
56mod tests {
57 use super::*;
58 use crate::MarkdownWarning;
59
60 #[test]
61 fn default_is_empty() {
62 let report = MarkdownExportReport::default();
63 assert_eq!(report.pages_read(), 0);
64 assert_eq!(report.blocks_written(), 0);
65 assert_eq!(report.bytes_written(), 0);
66 assert!(report.warnings().is_empty());
67 }
68
69 #[test]
70 fn new_sets_all_fields() {
71 let warnings = vec![MarkdownWarning::ProcessorFailed {
72 message: "test failure".to_string(),
73 }];
74 let report = MarkdownExportReport::new(5, 100, 4096, warnings);
75 assert_eq!(report.pages_read(), 5);
76 assert_eq!(report.blocks_written(), 100);
77 assert_eq!(report.bytes_written(), 4096);
78 assert_eq!(report.warnings().len(), 1);
79 }
80
81 #[test]
82 fn clone_preserves_values() {
83 let report = MarkdownExportReport::new(1, 2, 3, vec![]);
84 let cloned = report.clone();
85 assert_eq!(report, cloned);
86 }
87
88 #[test]
89 fn partial_eq_works() {
90 let a = MarkdownExportReport::new(1, 2, 3, vec![]);
91 let b = MarkdownExportReport::new(1, 2, 3, vec![]);
92 let c = MarkdownExportReport::new(1, 2, 4, vec![]);
93 assert_eq!(a, b);
94 assert_ne!(a, c);
95 }
96
97 #[test]
98 fn debug_format() {
99 let report = MarkdownExportReport::new(1, 2, 3, vec![]);
100 let dbg = format!("{:?}", report);
101 assert!(dbg.contains("MarkdownExportReport"));
102 }
103}