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::<TransitionPropertyStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<TransitionDurationStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<TransitionTimingFunctionStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<TransitionDelayStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<TransitionStyleValue>(), 32);
		assert_eq!(std::mem::size_of::<TransitionBehaviorStyleValue>(), 32);
	}

	#[test]
	fn test_transition_delay() {
		assert_parse!(CssAtomSet::ATOMS, TransitionDelayStyleValue, "-5ms");
		assert_parse!(CssAtomSet::ATOMS, TransitionDelayStyleValue, "0s");
		assert_parse!(CssAtomSet::ATOMS, TransitionDelayStyleValue, "10s");
		assert_parse!(CssAtomSet::ATOMS, TransitionDelayStyleValue, "20s, 10s");
	}

	#[test]
	fn test_transition_delay_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDelayStyleValue, "0");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDelayStyleValue, "0px");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDelayStyleValue, "infinite");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDelayStyleValue, "1s 2s 3s");
	}

	#[test]
	fn test_transition_duration() {
		assert_parse!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "0s");
		assert_parse!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "3s");
		assert_parse!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "500ms");
		assert_parse!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "1s, 2s, 3s");
	}

	#[test]
	fn test_transition_duration_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "0");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "0px");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "-3s");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "infinite");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "1s 2s");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionDurationStyleValue, "auto");
	}

	#[test]
	fn test_transition_property() {
		assert_parse!(CssAtomSet::ATOMS, TransitionPropertyStyleValue, "none");
		assert_parse!(CssAtomSet::ATOMS, TransitionPropertyStyleValue, "all");
		assert_parse!(CssAtomSet::ATOMS, TransitionPropertyStyleValue, "opacity");
		assert_parse!(CssAtomSet::ATOMS, TransitionPropertyStyleValue, "color");
		assert_parse!(CssAtomSet::ATOMS, TransitionPropertyStyleValue, "background-color");
		assert_parse!(CssAtomSet::ATOMS, TransitionPropertyStyleValue, "opacity, color");
	}

	#[test]
	fn test_transition_property_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, TransitionPropertyStyleValue, "12");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionPropertyStyleValue, "opacity color");
	}

	#[test]
	fn test_transition_timing_function() {
		assert_parse!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "ease");
		assert_parse!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "linear");
		assert_parse!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "ease-in");
		assert_parse!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "ease-out");
		assert_parse!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "ease-in-out");
		assert_parse!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "steps(2, start)");
		assert_parse!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "cubic-bezier(0.1, 0.7, 1, 0.1)");
		assert_parse!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "ease, linear, ease-in");
	}

	#[test]
	fn test_transition_timing_function_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "steps(2,()start)");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "steps(2())");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionTimingFunctionStyleValue, "steps(2,())");
	}

	#[test]
	fn test_transition_behavior() {
		assert_parse!(CssAtomSet::ATOMS, TransitionBehaviorStyleValue, "normal");
		assert_parse!(CssAtomSet::ATOMS, TransitionBehaviorStyleValue, "allow-discrete");
		assert_parse!(CssAtomSet::ATOMS, TransitionBehaviorStyleValue, "allow-discrete, normal");
	}

	#[test]
	fn test_transition_behavior_errors() {
		assert_parse_error!(CssAtomSet::ATOMS, TransitionBehaviorStyleValue, "auto");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionBehaviorStyleValue, "discrete");
		assert_parse_error!(CssAtomSet::ATOMS, TransitionBehaviorStyleValue, "allow-discrete normal");
	}
}