#![deny(missing_docs)]
use std::fmt;
#[derive(Debug, PartialEq)]
#[allow(non_snake_case, non_camel_case_types)] pub enum MsoTriState {
msoCTrue = 1,
msoFalse = 0,
msoTriStateMixed = -2,
msoTriStateToggle = -3,
msoTrue = -1,
}
impl From<bool> for MsoTriState {
fn from(b: bool) -> MsoTriState {
if b {
MsoTriState::msoTrue
} else {
MsoTriState::msoFalse
}
}
}
impl From<MsoTriState> for bool {
fn from(m: MsoTriState) -> bool {
match m {
MsoTriState::msoFalse => false,
MsoTriState::msoTrue => true,
_ => panic!("Not supported."),
}
}
}
impl fmt::Display for MsoTriState {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"{}",
match self {
MsoTriState::msoCTrue => "msoCTrue",
MsoTriState::msoFalse => "msoFalse",
MsoTriState::msoTriStateMixed => "msoTriStateMixed",
MsoTriState::msoTriStateToggle => "msoTriStateToggle",
MsoTriState::msoTrue => "msoTrue",
}
)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn bool_to_mso_tri_state() {
assert_eq!(MsoTriState::from(false), MsoTriState::msoFalse);
assert_eq!(MsoTriState::from(true), MsoTriState::msoTrue);
}
#[test]
fn mso_tri_state_to_bool() {
assert_eq!(bool::from(MsoTriState::msoFalse), false);
assert_eq!(bool::from(MsoTriState::msoTrue), true);
std::panic::catch_unwind(|| bool::from(MsoTriState::msoCTrue)).unwrap_err();
std::panic::catch_unwind(|| bool::from(MsoTriState::msoTriStateMixed)).unwrap_err();
std::panic::catch_unwind(|| bool::from(MsoTriState::msoTriStateToggle)).unwrap_err();
}
#[test]
fn display() {
assert_eq!(MsoTriState::msoCTrue.to_string(), "msoCTrue");
assert_eq!(MsoTriState::msoFalse.to_string(), "msoFalse");
assert_eq!(
MsoTriState::msoTriStateMixed.to_string(),
"msoTriStateMixed"
);
assert_eq!(
MsoTriState::msoTriStateToggle.to_string(),
"msoTriStateToggle"
);
assert_eq!(MsoTriState::msoTrue.to_string(), "msoTrue");
}
}