Skip to main content

css_ast/types/
line_style.rs

1use super::prelude::*;
2
3#[derive(
4	Parse, Peek, IntoCursor, ToSpan, SemanticEq, ToCursors, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash,
5)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
7#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit(self))]
8#[derive(csskit_derives::NodeWithMetadata)]
9pub enum LineStyle {
10	#[atom(CssAtomSet::None)]
11	None(T![Ident]),
12	#[atom(CssAtomSet::Hidden)]
13	Hidden(T![Ident]),
14	#[atom(CssAtomSet::Dotted)]
15	Dotted(T![Ident]),
16	#[atom(CssAtomSet::Dashed)]
17	Dashed(T![Ident]),
18	#[atom(CssAtomSet::Solid)]
19	Solid(T![Ident]),
20	#[atom(CssAtomSet::Double)]
21	Double(T![Ident]),
22	#[atom(CssAtomSet::Groove)]
23	Groove(T![Ident]),
24	#[atom(CssAtomSet::Ridge)]
25	Ridge(T![Ident]),
26	#[atom(CssAtomSet::Inset)]
27	Inset(T![Ident]),
28	#[atom(CssAtomSet::Outset)]
29	Outset(T![Ident]),
30}
31
32#[cfg(test)]
33mod tests {
34	use super::*;
35	use crate::CssAtomSet;
36	use css_parse::{assert_parse, assert_peek_false};
37
38	#[test]
39	fn size_test() {
40		assert_eq!(std::mem::size_of::<LineStyle>(), 16);
41	}
42
43	#[test]
44	fn test_writes() {
45		assert_parse!(CssAtomSet::ATOMS, LineStyle, "none");
46		assert_parse!(CssAtomSet::ATOMS, LineStyle, "hidden");
47	}
48
49	#[test]
50	fn test_errors() {
51		assert_peek_false!(CssAtomSet::ATOMS, LineStyle, "florp");
52		// Empty!
53		assert_peek_false!(CssAtomSet::ATOMS, LineStyle, "");
54	}
55}