#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum GetMode {
Next,
Prev,
NextDup,
PrevDup,
NextNoDup,
PrevNoDup,
}
impl GetMode {
pub fn is_forward(&self) -> bool {
matches!(self, GetMode::Next | GetMode::NextDup | GetMode::NextNoDup)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_is_forward() {
assert!(GetMode::Next.is_forward());
assert!(GetMode::NextDup.is_forward());
assert!(GetMode::NextNoDup.is_forward());
assert!(!GetMode::Prev.is_forward());
assert!(!GetMode::PrevDup.is_forward());
assert!(!GetMode::PrevNoDup.is_forward());
}
#[test]
fn test_equality() {
assert_eq!(GetMode::Next, GetMode::Next);
assert_ne!(GetMode::Next, GetMode::Prev);
}
#[test]
fn test_all_variants() {
let modes = [
GetMode::Next,
GetMode::Prev,
GetMode::NextDup,
GetMode::PrevDup,
GetMode::NextNoDup,
GetMode::PrevNoDup,
];
assert_eq!(modes.len(), 6);
assert!(GetMode::Next.is_forward());
assert!(!GetMode::Prev.is_forward());
assert!(GetMode::NextDup.is_forward());
assert!(!GetMode::PrevDup.is_forward());
assert!(GetMode::NextNoDup.is_forward());
assert!(!GetMode::PrevNoDup.is_forward());
}
}