1use schemars::JsonSchema;
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
12pub struct TabDef {
13 pub id: u32,
15 pub auto_tab_left: bool,
17 pub auto_tab_right: bool,
19}
20
21impl TabDef {
22 pub fn defaults() -> [Self; 3] {
30 [
31 Self { id: 0, auto_tab_left: false, auto_tab_right: false },
32 Self { id: 1, auto_tab_left: true, auto_tab_right: false },
33 Self { id: 2, auto_tab_left: false, auto_tab_right: true },
34 ]
35 }
36}
37
38#[cfg(test)]
39mod tests {
40 use super::*;
41
42 #[test]
43 fn defaults_has_3_entries() {
44 let tabs = TabDef::defaults();
45 assert_eq!(tabs.len(), 3);
46 }
47
48 #[test]
49 fn defaults_ids_sequential() {
50 let tabs = TabDef::defaults();
51 assert_eq!(tabs[0].id, 0);
52 assert_eq!(tabs[1].id, 1);
53 assert_eq!(tabs[2].id, 2);
54 }
55
56 #[test]
57 fn defaults_auto_tab_values() {
58 let tabs = TabDef::defaults();
59 assert!(!tabs[0].auto_tab_left);
61 assert!(!tabs[0].auto_tab_right);
62 assert!(tabs[1].auto_tab_left);
64 assert!(!tabs[1].auto_tab_right);
65 assert!(!tabs[2].auto_tab_left);
67 assert!(tabs[2].auto_tab_right);
68 }
69}