css_ast/units/
frequency.rs1use super::prelude::*;
2
3#[derive(Parse, Peek, ToCursors, IntoCursor, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
10pub enum Frequency {
11 #[atom(CssAtomSet::Hz)]
12 Hz(T![Dimension]),
13 #[atom(CssAtomSet::Khz)]
14 Khz(T![Dimension]),
15}
16
17impl From<Frequency> for f32 {
18 fn from(frequency: Frequency) -> Self {
19 match frequency {
20 Frequency::Hz(f) => f.into(),
21 Frequency::Khz(f) => f.into(),
22 }
23 }
24}
25
26#[cfg(test)]
27mod tests {
28 use super::*;
29 use crate::CssAtomSet;
30 use css_parse::{assert_parse, assert_parse_error};
31
32 #[test]
33 fn size_test() {
34 assert_eq!(std::mem::size_of::<Frequency>(), 16);
35 }
36
37 #[test]
38 fn test_writes() {
39 assert_parse!(CssAtomSet::ATOMS, Frequency, "40hz");
40 assert_parse!(CssAtomSet::ATOMS, Frequency, "40khz");
41 }
42
43 #[test]
44 fn test_errors() {
45 assert_parse_error!(CssAtomSet::ATOMS, Frequency, "40w");
46 assert_parse_error!(CssAtomSet::ATOMS, Frequency, "40kw");
47 }
48}