polished_css/data_type/
dimension.rs

1use super::{Frequency, Length, Resolution, Time};
2
3/// [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/dimension)
4#[derive(
5    Clone,
6    Debug,
7    PartialEq,
8    strum_macros::EnumIs,
9    polished_css_macros::Display,
10    polished_css_macros::DataTypeFromDataTypes,
11)]
12#[display(on_enum = true)]
13pub enum Dimension {
14    Frequency(Frequency),
15    Length(Length),
16    Resolution(Resolution),
17    Time(Time),
18}
19
20#[polished_css_macros::create_trait_from_enum_impl()]
21impl Dimension {
22    // TODO: Add conversion methods?
23}
24
25#[cfg(test)]
26mod test {
27    use crate::prelude::*;
28
29    #[test]
30    fn display() {
31        assert_eq!(super::Dimension::hz(1.0).to_string(), String::from("1Hz"));
32
33        assert_eq!(super::Dimension::px(1).to_string(), String::from("1px"));
34        assert_eq!(super::Dimension::cqh(1.0).to_string(), String::from("1cqh"));
35        assert_eq!(super::Dimension::em(1.0).to_string(), String::from("1em"));
36        assert_eq!(super::Dimension::vh(1.0).to_string(), String::from("1vh"));
37
38        assert_eq!(super::Dimension::dpi(1.0).to_string(), String::from("1dpi"));
39
40        assert_eq!(super::Dimension::ms(250).to_string(), String::from("250ms"));
41    }
42}