easyofd_reader/model/
annotation_entity.rs1#[derive(Debug, Clone)]
14pub struct AnnotionEntity {
15 pub page_id: String,
17 pub annot_xmls: Vec<String>,
22}
23
24impl AnnotionEntity {
25 #[must_use]
27 pub fn new(page_id: impl Into<String>, annot_xmls: Vec<String>) -> Self {
28 Self {
29 page_id: page_id.into(),
30 annot_xmls,
31 }
32 }
33
34 #[must_use]
36 pub fn len(&self) -> usize {
37 self.annot_xmls.len()
38 }
39
40 #[must_use]
42 pub fn is_empty(&self) -> bool {
43 self.annot_xmls.is_empty()
44 }
45}
46
47#[cfg(test)]
48mod tests {
49 use super::*;
50
51 #[test]
52 fn test_annotation_entity_new() {
53 let entity = AnnotionEntity::new("page_0", vec!["<Annot/>".into()]);
54 assert_eq!(entity.page_id, "page_0");
55 assert_eq!(entity.len(), 1);
56 assert!(!entity.is_empty());
57 }
58
59 #[test]
60 fn test_annotation_entity_empty() {
61 let entity = AnnotionEntity::new("page_1", vec![]);
62 assert!(entity.is_empty());
63 assert_eq!(entity.len(), 0);
64 }
65
66 #[test]
67 fn test_annotation_entity_clone() {
68 let entity = AnnotionEntity::new("p0", vec!["a".into(), "b".into()]);
69 let cloned = entity.clone();
70 assert_eq!(cloned.page_id, entity.page_id);
71 assert_eq!(cloned.annot_xmls, entity.annot_xmls);
72 }
73}