1#[derive(Debug, Clone)]
4pub struct SlideGroup {
5 pub logical_index: usize,
7 pub pages: Vec<usize>,
9 pub notes: Option<String>,
11}
12
13#[derive(Debug, Clone, Copy, PartialEq, Eq)]
15pub enum GroupingSource {
16 EmbeddedMetadata,
18 SidecarFile,
20 Manual,
22 None,
24}
25
26pub fn default_grouping(page_count: usize) -> Vec<SlideGroup> {
28 (0..page_count).map(|i| SlideGroup { logical_index: i, pages: vec![i], notes: None }).collect()
29}
30
31#[cfg(test)]
32mod tests {
33 use super::*;
34
35 #[test]
36 fn default_grouping_creates_one_group_per_page() {
37 let groups = default_grouping(5);
38 assert_eq!(groups.len(), 5);
39 for (i, group) in groups.iter().enumerate() {
40 assert_eq!(group.logical_index, i);
41 assert_eq!(group.pages, vec![i]);
42 assert!(group.notes.is_none());
43 }
44 }
45
46 #[test]
47 fn default_grouping_empty_document() {
48 let groups = default_grouping(0);
49 assert!(groups.is_empty());
50 }
51}