use core::fmt;
use crate::to_css::{write_number, ToCss};
#[derive(Copy, Clone, Debug, PartialEq)]
pub enum Time {
S(f32),
Ms(f32),
}
impl ToCss for Time {
fn to_css(&self, dest: &mut dyn fmt::Write) -> fmt::Result {
let (v, unit) = match *self {
Time::S(v) => (v, "s"),
Time::Ms(v) => (v, "ms"),
};
write_number(dest, v)?;
dest.write_str(unit)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn each_unit_serializes() {
assert_eq!(Time::S(1.5).to_css_string(), "1.5s");
assert_eq!(Time::Ms(300.0).to_css_string(), "300ms");
}
#[test]
fn negative_time() {
assert_eq!(Time::Ms(-100.0).to_css_string(), "-100ms");
}
#[test]
fn zero_keeps_unit() {
assert_eq!(Time::S(0.0).to_css_string(), "0s");
assert_eq!(Time::Ms(0.0).to_css_string(), "0ms");
}
}