use strum::{Display, EnumString};
pub type Alignment = HorizontalAlignment;
#[derive(Debug, Default, Display, EnumString, Clone, Copy, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum HorizontalAlignment {
#[default]
Left,
Center,
Right,
}
#[derive(Debug, Default, Display, EnumString, Clone, Copy, Eq, PartialEq, Hash)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum VerticalAlignment {
#[default]
Top,
Center,
Bottom,
}
#[cfg(test)]
mod tests {
use alloc::string::ToString;
use strum::ParseError;
use super::*;
#[test]
fn alignment_to_string() {
assert_eq!(Alignment::Left.to_string(), "Left");
assert_eq!(Alignment::Center.to_string(), "Center");
assert_eq!(Alignment::Right.to_string(), "Right");
}
#[test]
fn alignment_from_str() {
assert_eq!("Left".parse::<Alignment>(), Ok(Alignment::Left));
assert_eq!("Center".parse::<Alignment>(), Ok(Alignment::Center));
assert_eq!("Right".parse::<Alignment>(), Ok(Alignment::Right));
assert_eq!("".parse::<Alignment>(), Err(ParseError::VariantNotFound));
}
#[test]
fn vertical_alignment_to_string() {
assert_eq!(VerticalAlignment::Top.to_string(), "Top");
assert_eq!(VerticalAlignment::Center.to_string(), "Center");
assert_eq!(VerticalAlignment::Bottom.to_string(), "Bottom");
}
#[test]
fn vertical_alignment_from_str() {
let top = "Top".parse::<VerticalAlignment>();
assert_eq!(top, Ok(VerticalAlignment::Top));
let center = "Center".parse::<VerticalAlignment>();
assert_eq!(center, Ok(VerticalAlignment::Center));
let bottom = "Bottom".parse::<VerticalAlignment>();
assert_eq!(bottom, Ok(VerticalAlignment::Bottom));
let invalid = "".parse::<VerticalAlignment>();
assert_eq!(invalid, Err(ParseError::VariantNotFound));
}
}