easyofd_reader/model/
template_page_entity.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
9pub enum TemplateZOrder {
10 Background,
12 Body,
14 Foreground,
16}
17
18impl TemplateZOrder {
19 #[must_use]
21 pub fn order(&self) -> i32 {
22 match self {
23 Self::Background => 0,
24 Self::Body => 1,
25 Self::Foreground => 2,
26 }
27 }
28}
29
30#[derive(Debug, Clone)]
34pub struct TemplatePageEntity {
35 pub id: String,
37 pub name: Option<String>,
39 pub z_order: TemplateZOrder,
41 pub base_loc: String,
43}
44
45impl TemplatePageEntity {
46 #[must_use]
48 pub fn new(
49 id: impl Into<String>,
50 z_order: TemplateZOrder,
51 base_loc: impl Into<String>,
52 ) -> Self {
53 Self {
54 id: id.into(),
55 name: None,
56 z_order,
57 base_loc: base_loc.into(),
58 }
59 }
60
61 #[must_use]
63 pub fn with_name(mut self, name: impl Into<String>) -> Self {
64 self.name = Some(name.into());
65 self
66 }
67
68 pub fn set_z_order(&mut self, z_order: TemplateZOrder) {
70 self.z_order = z_order;
71 }
72}
73
74#[cfg(test)]
75mod tests {
76 use super::*;
77
78 #[test]
79 fn test_template_z_order_ordering() {
80 assert!(TemplateZOrder::Background.order() < TemplateZOrder::Body.order());
81 assert!(TemplateZOrder::Body.order() < TemplateZOrder::Foreground.order());
82 }
83
84 #[test]
85 fn test_template_page_entity_new() {
86 let entity =
87 TemplatePageEntity::new("tpl_0", TemplateZOrder::Body, "Pages/Page_0/Content.xml");
88 assert_eq!(entity.id, "tpl_0");
89 assert_eq!(entity.z_order, TemplateZOrder::Body);
90 assert_eq!(entity.base_loc, "Pages/Page_0/Content.xml");
91 assert!(entity.name.is_none());
92 }
93
94 #[test]
95 fn test_template_page_entity_with_name() {
96 let entity = TemplatePageEntity::new("tpl_1", TemplateZOrder::Background, "tpl.xml")
97 .with_name("Header Template");
98 assert_eq!(entity.name.as_deref(), Some("Header Template"));
99 }
100
101 #[test]
102 fn test_template_page_entity_set_z_order() {
103 let mut entity = TemplatePageEntity::new("tpl_0", TemplateZOrder::Body, "tpl.xml");
104 entity.set_z_order(TemplateZOrder::Foreground);
105 assert_eq!(entity.z_order, TemplateZOrder::Foreground);
106 }
107}