use crate::basic_type::ST_Loc;
#[derive(Debug, Clone, Default)]
pub struct Res {
pub base_loc: Option<ST_Loc>,
pub resources: Vec<String>,
}
impl Res {
#[must_use]
pub fn new() -> Self {
Self::default()
}
#[must_use]
pub fn base_loc(mut self, loc: ST_Loc) -> Self {
self.base_loc = Some(loc);
self
}
pub fn add_resource(&mut self, resource: impl Into<String>) {
self.resources.push(resource.into());
}
#[must_use]
pub fn resource_count(&self) -> usize {
self.resources.len()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn res_new() {
let r = Res::new();
assert!(r.base_loc.is_none());
assert_eq!(r.resource_count(), 0);
}
#[test]
fn res_builder() {
let r = Res::new().base_loc(ST_Loc::new("./Res"));
assert!(r.base_loc.is_some());
}
#[test]
fn res_add_resource() {
let mut r = Res::new();
r.add_resource("<ofd:Font/>");
r.add_resource("<ofd:ColorSpace/>");
assert_eq!(r.resource_count(), 2);
}
}