css_ast 0.0.22

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::<AnimationRangeEndStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<AnimationRangeStartStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<AnimationRangeStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<ScrollTimelineAxisStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<ScrollTimelineNameStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<ScrollTimelineStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<TimelineScopeStyleValue>(), 40);
		assert_eq!(std::mem::size_of::<ViewTimelineAxisStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<ViewTimelineInsetStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<ViewTimelineNameStyleValue>(), 32);
	}

	#[test]
	fn test_animation_range_start_writes() {
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "normal");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "cover");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "contain");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "entry");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "exit");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "120%");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "120px");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "cover 100%");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "cover -42%");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "contain 42%");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "exit 42%");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "entry 42%");
	}

	#[test]
	fn test_animation_range_start_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "peek 50%");
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "none");
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "50% contain");
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "normal 10px");
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeStartStyleValue, "contain contain");
	}

	#[test]
	fn test_animation_range_end_writes() {
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "normal");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "cover");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "contain");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "120%");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "120px");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "cover 100%");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "exit 42%");
		assert_parse!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "entry 42px");
	}

	#[test]
	fn test_animation_range_end_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "infinite");
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "peek 50%");
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "none");
		assert_parse_error!(CssAtomSet::ATOMS, AnimationRangeEndStyleValue, "normal 10px");
	}

	#[test]
	fn test_scroll_timeline_axis_writes() {
		assert_parse!(CssAtomSet::ATOMS, ScrollTimelineAxisStyleValue, "block");
		assert_parse!(CssAtomSet::ATOMS, ScrollTimelineAxisStyleValue, "inline");
		assert_parse!(CssAtomSet::ATOMS, ScrollTimelineAxisStyleValue, "x");
		assert_parse!(CssAtomSet::ATOMS, ScrollTimelineAxisStyleValue, "y");
	}

	#[test]
	fn test_scroll_timeline_axis_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, ScrollTimelineAxisStyleValue, "auto");
		assert_parse_error!(CssAtomSet::ATOMS, ScrollTimelineAxisStyleValue, "horizontal");
		assert_parse_error!(CssAtomSet::ATOMS, ScrollTimelineAxisStyleValue, "block inline");
	}

	#[test]
	fn test_scroll_timeline_name_writes() {
		assert_parse!(CssAtomSet::ATOMS, ScrollTimelineNameStyleValue, "none");
		assert_parse!(CssAtomSet::ATOMS, ScrollTimelineNameStyleValue, "--my-timeline");
		assert_parse!(CssAtomSet::ATOMS, ScrollTimelineNameStyleValue, "--foo, --bar");
	}

	#[test]
	fn test_scroll_timeline_name_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, ScrollTimelineNameStyleValue, "auto");
		assert_parse_error!(CssAtomSet::ATOMS, ScrollTimelineNameStyleValue, "foo");
	}

	#[test]
	fn test_view_timeline_axis_writes() {
		assert_parse!(CssAtomSet::ATOMS, ViewTimelineAxisStyleValue, "block");
		assert_parse!(CssAtomSet::ATOMS, ViewTimelineAxisStyleValue, "inline");
		assert_parse!(CssAtomSet::ATOMS, ViewTimelineAxisStyleValue, "x");
		assert_parse!(CssAtomSet::ATOMS, ViewTimelineAxisStyleValue, "y");
	}

	#[test]
	fn test_view_timeline_name_writes() {
		assert_parse!(CssAtomSet::ATOMS, ViewTimelineNameStyleValue, "none");
		assert_parse!(CssAtomSet::ATOMS, ViewTimelineNameStyleValue, "--my-timeline");
	}

	#[test]
	fn test_timeline_scope_writes() {
		assert_parse!(CssAtomSet::ATOMS, TimelineScopeStyleValue, "none");
		assert_parse!(CssAtomSet::ATOMS, TimelineScopeStyleValue, "all");
		assert_parse!(CssAtomSet::ATOMS, TimelineScopeStyleValue, "--my-scope");
		assert_parse!(CssAtomSet::ATOMS, TimelineScopeStyleValue, "--a, --b");
	}

	#[test]
	fn test_timeline_scope_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, TimelineScopeStyleValue, "foo");
		assert_parse_error!(CssAtomSet::ATOMS, TimelineScopeStyleValue, "auto");
	}
}