use super::DocVersion;
#[derive(Debug, Clone)]
pub struct Version {
pub version: String,
pub doc_versions: Vec<DocVersion>,
}
impl Version {
#[must_use]
pub fn new(version: impl Into<String>) -> Self {
Self {
version: version.into(),
doc_versions: Vec::new(),
}
}
pub fn push_doc_version(&mut self, doc_version: DocVersion) {
self.doc_versions.push(doc_version);
}
#[must_use]
pub fn to_xml_string(&self) -> String {
let inner: String = self
.doc_versions
.iter()
.map(DocVersion::to_xml_string)
.collect();
format!("<Version Version=\"{}\">{inner}</Version>", self.version)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version_new() {
let v = Version::new("1.0");
assert_eq!(v.version, "1.0");
assert!(v.doc_versions.is_empty());
}
#[test]
fn test_version_xml() {
let mut v = Version::new("2.0");
v.push_doc_version(DocVersion::new("doc1"));
let xml = v.to_xml_string();
assert!(xml.contains("Version=\"2.0\""));
assert!(xml.contains("doc1"));
}
}