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