css_ast 0.0.25

CSS Abstract Syntax Trees with visitable nodes and style value types.
Documentation
// shortcuts for logical properties to resolve to 0
// impl MarginTop {
// 	#[allow(non_upper_case_globals)]
// 	pub const Zero: MarginTop = MarginTop::LengthPercentage(LengthPercentage::Zero);
// }

// impl PaddingTop {
// 	#[allow(non_upper_case_globals)]
// 	pub const Zero: PaddingTop = PaddingTop(LengthPercentage::Zero);
// }

#[cfg(test)]
mod tests {
	use super::super::*;
	use crate::CssAtomSet;
	use css_parse::{assert_parse, assert_parse_error};

	#[test]
	pub fn size_test() {
		assert_eq!(std::mem::size_of::<MarginTopStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<MarginRightStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<MarginBottomStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<MarginLeftStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<MarginStyleValue>(), 64);
		assert_eq!(std::mem::size_of::<PaddingTopStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<PaddingRightStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<PaddingBottomStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<PaddingLeftStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<PaddingStyleValue>(), 64);
		assert_eq!(std::mem::size_of::<MarginTrimStyleValue>(), 64);
	}

	#[test]
	fn test_margin_trim() {
		assert_parse!(CssAtomSet::ATOMS, MarginTrimStyleValue, "none");
		assert_parse!(CssAtomSet::ATOMS, MarginTrimStyleValue, "block");
		assert_parse!(CssAtomSet::ATOMS, MarginTrimStyleValue, "block-start");
		assert_parse!(CssAtomSet::ATOMS, MarginTrimStyleValue, "block-start block-end");
		assert_parse!(CssAtomSet::ATOMS, MarginTrimStyleValue, "inline");
		assert_parse!(CssAtomSet::ATOMS, MarginTrimStyleValue, "inline-start");
		assert_parse!(CssAtomSet::ATOMS, MarginTrimStyleValue, "inline-end");
		assert_parse!(CssAtomSet::ATOMS, MarginTrimStyleValue, "block inline");
		assert_parse_error!(CssAtomSet::ATOMS, MarginTrimStyleValue, "");
		assert_parse_error!(CssAtomSet::ATOMS, MarginTrimStyleValue, "auto");
	}

	#[test]
	fn test_writes() {
		assert_parse!(CssAtomSet::ATOMS, MarginLeftStyleValue, "auto");
		assert_parse!(CssAtomSet::ATOMS, MarginStyleValue, "1px 1px");
		assert_parse!(CssAtomSet::ATOMS, MarginStyleValue, "1px 2px");
		assert_parse!(CssAtomSet::ATOMS, MarginStyleValue, "1px 2px 3px 4px");
	}
}