#[derive(Debug, Clone)]
pub struct SlideGroup {
pub logical_index: usize,
pub pages: Vec<usize>,
pub notes: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum GroupingSource {
EmbeddedMetadata,
SidecarFile,
Manual,
None,
}
pub fn default_grouping(page_count: usize) -> Vec<SlideGroup> {
(0..page_count).map(|i| SlideGroup { logical_index: i, pages: vec![i], notes: None }).collect()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_grouping_creates_one_group_per_page() {
let groups = default_grouping(5);
assert_eq!(groups.len(), 5);
for (i, group) in groups.iter().enumerate() {
assert_eq!(group.logical_index, i);
assert_eq!(group.pages, vec![i]);
assert!(group.notes.is_none());
}
}
#[test]
fn default_grouping_empty_document() {
let groups = default_grouping(0);
assert!(groups.is_empty());
}
}