#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum HaCloneMode {
Start,
Restart,
AddTask,
Version,
Max,
}
impl HaCloneMode {
#[must_use]
pub const fn from_raw(value: u32) -> Self {
match value {
1 => Self::Restart,
2 => Self::AddTask,
3 => Self::Version,
4 => Self::Max,
_ => Self::Start,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub enum HaCloneType {
Blocking,
Redo,
Page,
Hybrid,
MultiTask,
Restart,
Unknown,
}
impl HaCloneType {
#[must_use]
pub const fn from_raw(value: usize) -> Self {
match value {
0 => Self::Blocking,
1 => Self::Redo,
2 => Self::Page,
3 => Self::Hybrid,
4 => Self::MultiTask,
5 => Self::Restart,
_ => Self::Unknown,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn clone_mode_known_values() {
assert_eq!(HaCloneMode::from_raw(0), HaCloneMode::Start);
assert_eq!(HaCloneMode::from_raw(1), HaCloneMode::Restart);
assert_eq!(HaCloneMode::from_raw(2), HaCloneMode::AddTask);
assert_eq!(HaCloneMode::from_raw(3), HaCloneMode::Version);
assert_eq!(HaCloneMode::from_raw(4), HaCloneMode::Max);
assert_eq!(HaCloneMode::from_raw(99), HaCloneMode::Start);
}
#[test]
fn clone_type_known_values() {
assert_eq!(HaCloneType::from_raw(0), HaCloneType::Blocking);
assert_eq!(HaCloneType::from_raw(1), HaCloneType::Redo);
assert_eq!(HaCloneType::from_raw(2), HaCloneType::Page);
assert_eq!(HaCloneType::from_raw(3), HaCloneType::Hybrid);
assert_eq!(HaCloneType::from_raw(4), HaCloneType::MultiTask);
assert_eq!(HaCloneType::from_raw(5), HaCloneType::Restart);
assert_eq!(HaCloneType::from_raw(99), HaCloneType::Unknown);
}
}