css_ast 0.0.25

CSS Abstract Syntax Trees with visitable nodes and style value types.
Documentation
#[cfg(test)]
mod tests {
	use super::super::*;
	use crate::CssAtomSet;
	use css_parse::{assert_parse, assert_parse_error};

	#[test]
	fn size_test() {
		assert_eq!(std::mem::size_of::<ImageRenderingStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<ObjectPositionStyleValue>(), 68);
		assert_eq!(std::mem::size_of::<ObjectViewBoxStyleValue>(), 16);
		assert_eq!(std::mem::size_of::<ImageOrientationStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<ObjectFitStyleValue>(), 36);
	}

	#[test]
	fn test_writes() {
		assert_parse!(CssAtomSet::ATOMS, ImageRenderingStyleValue, "auto");
		assert_parse!(CssAtomSet::ATOMS, ImageRenderingStyleValue, "smooth");
		assert_parse!(CssAtomSet::ATOMS, ImageRenderingStyleValue, "high-quality");
		assert_parse!(CssAtomSet::ATOMS, ImageRenderingStyleValue, "crisp-edges");
		assert_parse!(CssAtomSet::ATOMS, ImageRenderingStyleValue, "pixelated");

		assert_parse!(CssAtomSet::ATOMS, ObjectPositionStyleValue, "-20% -30px");
		assert_parse!(CssAtomSet::ATOMS, ObjectPositionStyleValue, "left center");
		assert_parse!(CssAtomSet::ATOMS, ObjectPositionStyleValue, "center center");
	}

	#[test]
	fn test_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, ImageRenderingStyleValue, "none");
		assert_parse_error!(CssAtomSet::ATOMS, ImageRenderingStyleValue, "high-quality crisp-edges");

		assert_parse_error!(CssAtomSet::ATOMS, ObjectPositionStyleValue, "auto");
		assert_parse_error!(CssAtomSet::ATOMS, ObjectPositionStyleValue, "1px 2px 3px");
		assert_parse_error!(CssAtomSet::ATOMS, ObjectPositionStyleValue, "left right");
	}

	#[test]
	fn test_image_orientation() {
		assert_parse!(CssAtomSet::ATOMS, ImageOrientationStyleValue, "from-image");
		assert_parse!(CssAtomSet::ATOMS, ImageOrientationStyleValue, "none");
		assert_parse!(CssAtomSet::ATOMS, ImageOrientationStyleValue, "90deg");
		assert_parse!(CssAtomSet::ATOMS, ImageOrientationStyleValue, "flip");
		assert_parse!(CssAtomSet::ATOMS, ImageOrientationStyleValue, "90deg flip");
		assert_parse_error!(CssAtomSet::ATOMS, ImageOrientationStyleValue, "");
		assert_parse_error!(CssAtomSet::ATOMS, ImageOrientationStyleValue, "auto");
	}

	#[test]
	fn test_object_fit() {
		assert_parse!(CssAtomSet::ATOMS, ObjectFitStyleValue, "fill");
		assert_parse!(CssAtomSet::ATOMS, ObjectFitStyleValue, "none");
		assert_parse!(CssAtomSet::ATOMS, ObjectFitStyleValue, "contain");
		assert_parse!(CssAtomSet::ATOMS, ObjectFitStyleValue, "cover");
		assert_parse!(CssAtomSet::ATOMS, ObjectFitStyleValue, "scale-down");
		assert_parse!(CssAtomSet::ATOMS, ObjectFitStyleValue, "contain scale-down");
		assert_parse!(CssAtomSet::ATOMS, ObjectFitStyleValue, "cover scale-down");
		assert_parse_error!(CssAtomSet::ATOMS, ObjectFitStyleValue, "");
		assert_parse_error!(CssAtomSet::ATOMS, ObjectFitStyleValue, "auto");
		assert_parse_error!(CssAtomSet::ATOMS, ObjectFitStyleValue, "contain cover");
	}
}