#[derive(Debug, Clone)]
pub struct AnnotionEntity {
pub page_id: String,
pub annot_xmls: Vec<String>,
}
impl AnnotionEntity {
#[must_use]
pub fn new(page_id: impl Into<String>, annot_xmls: Vec<String>) -> Self {
Self {
page_id: page_id.into(),
annot_xmls,
}
}
#[must_use]
pub fn len(&self) -> usize {
self.annot_xmls.len()
}
#[must_use]
pub fn is_empty(&self) -> bool {
self.annot_xmls.is_empty()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_annotation_entity_new() {
let entity = AnnotionEntity::new("page_0", vec!["<Annot/>".into()]);
assert_eq!(entity.page_id, "page_0");
assert_eq!(entity.len(), 1);
assert!(!entity.is_empty());
}
#[test]
fn test_annotation_entity_empty() {
let entity = AnnotionEntity::new("page_1", vec![]);
assert!(entity.is_empty());
assert_eq!(entity.len(), 0);
}
#[test]
fn test_annotation_entity_clone() {
let entity = AnnotionEntity::new("p0", vec!["a".into(), "b".into()]);
let cloned = entity.clone();
assert_eq!(cloned.page_id, entity.page_id);
assert_eq!(cloned.annot_xmls, entity.annot_xmls);
}
}