easyofd_core/versions/
version.rs1use super::DocVersion;
4
5#[derive(Debug, Clone)]
9pub struct Version {
10 pub version: String,
12 pub doc_versions: Vec<DocVersion>,
14}
15
16impl Version {
17 #[must_use]
19 pub fn new(version: impl Into<String>) -> Self {
20 Self {
21 version: version.into(),
22 doc_versions: Vec::new(),
23 }
24 }
25
26 pub fn push_doc_version(&mut self, doc_version: DocVersion) {
28 self.doc_versions.push(doc_version);
29 }
30
31 #[must_use]
33 pub fn to_xml_string(&self) -> String {
34 let inner: String = self
35 .doc_versions
36 .iter()
37 .map(DocVersion::to_xml_string)
38 .collect();
39 format!("<Version Version=\"{}\">{inner}</Version>", self.version)
40 }
41}
42
43#[cfg(test)]
44mod tests {
45 use super::*;
46
47 #[test]
48 fn test_version_new() {
49 let v = Version::new("1.0");
50 assert_eq!(v.version, "1.0");
51 assert!(v.doc_versions.is_empty());
52 }
53
54 #[test]
55 fn test_version_xml() {
56 let mut v = Version::new("2.0");
57 v.push_doc_version(DocVersion::new("doc1"));
58 let xml = v.to_xml_string();
59 assert!(xml.contains("Version=\"2.0\""));
60 assert!(xml.contains("doc1"));
61 }
62}