easyofd_core/doc/
doc_body.rs1use crate::basic_type::ST_Loc;
7
8#[derive(Debug, Clone)]
14pub struct DocBody {
15 pub doc_root: ST_Loc,
17 pub doc_info: Option<String>,
19 pub signatures: Option<ST_Loc>,
21}
22
23impl DocBody {
24 #[must_use]
26 pub fn new(doc_root: ST_Loc) -> Self {
27 Self {
28 doc_root,
29 doc_info: None,
30 signatures: None,
31 }
32 }
33
34 #[must_use]
36 pub fn doc_info(mut self, info: impl Into<String>) -> Self {
37 self.doc_info = Some(info.into());
38 self
39 }
40
41 #[must_use]
43 pub fn signatures(mut self, path: ST_Loc) -> Self {
44 self.signatures = Some(path);
45 self
46 }
47
48 #[must_use]
50 pub fn doc_root(&self) -> &ST_Loc {
51 &self.doc_root
52 }
53}
54
55#[cfg(test)]
56mod tests {
57 use super::*;
58
59 #[test]
60 fn doc_body_new() {
61 let db = DocBody::new(ST_Loc::new("Doc_0/Document.xml"));
62 assert_eq!(db.doc_root.loc(), "Doc_0/Document.xml");
63 assert!(db.doc_info.is_none());
64 assert!(db.signatures.is_none());
65 }
66
67 #[test]
68 fn doc_body_builder() {
69 let db = DocBody::new(ST_Loc::new("Doc_0/Document.xml"))
70 .doc_info("test info")
71 .signatures(ST_Loc::new("Doc_0/Signs/Signatures.xml"));
72 assert!(db.doc_info.is_some());
73 assert!(db.signatures.is_some());
74 }
75
76 #[test]
77 fn doc_body_clone_debug() {
78 let db = DocBody::new(ST_Loc::new("Doc_0/Document.xml"));
79 let db2 = db.clone();
80 assert_eq!(db2.doc_root.loc(), "Doc_0/Document.xml");
81 assert!(format!("{db:?}").contains("DocBody"));
82 }
83}