whisker_css/data_type/
time.rs1use core::fmt;
17
18use crate::to_css::{write_number, ToCss};
19
20#[derive(Copy, Clone, Debug, PartialEq)]
22pub enum Time {
23 S(f32),
25 Ms(f32),
27}
28
29impl ToCss for Time {
30 fn to_css(&self, dest: &mut dyn fmt::Write) -> fmt::Result {
31 let (v, unit) = match *self {
32 Time::S(v) => (v, "s"),
33 Time::Ms(v) => (v, "ms"),
34 };
35 write_number(dest, v)?;
36 dest.write_str(unit)
37 }
38}
39
40#[cfg(test)]
41mod tests {
42 use super::*;
43
44 #[test]
45 fn each_unit_serializes() {
46 assert_eq!(Time::S(1.5).to_css_string(), "1.5s");
47 assert_eq!(Time::Ms(300.0).to_css_string(), "300ms");
48 }
49
50 #[test]
51 fn negative_time() {
52 assert_eq!(Time::Ms(-100.0).to_css_string(), "-100ms");
54 }
55
56 #[test]
57 fn zero_keeps_unit() {
58 assert_eq!(Time::S(0.0).to_css_string(), "0s");
60 assert_eq!(Time::Ms(0.0).to_css_string(), "0ms");
61 }
62}