css_ast/functions/
dynamic_range_limit_mix_function.rs1use css_parse::{CommaSeparated, Function, function_set};
2use csskit_derives::{Parse, Peek, ToCursors, ToSpan, Visitable};
3use csskit_proc_macro::syntax;
4
5function_set!(pub struct DynamicRangeLimitMixFunctionName "dynamic-range-limit-mix");
6
7#[derive(Parse, Peek, ToCursors, ToSpan, Visitable, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
13#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
14#[visit(self)]
15pub struct DynamicRangeLimitMixFunction<'a>(
16 Function<DynamicRangeLimitMixFunctionName, CommaSeparated<'a, DynamicRangeLimitMixFunctionParams<'a>>>,
17);
18
19#[syntax(" <'dynamic-range-limit'> && <percentage [0,100]> ")]
20#[derive(Parse, Peek, ToSpan, ToCursors, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
21#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
22pub struct DynamicRangeLimitMixFunctionParams<'a>;
23
24#[cfg(test)]
25mod tests {
26 use super::*;
27 use css_parse::{assert_parse, assert_parse_error};
28
29 #[test]
30 fn size_test() {
31 assert_eq!(std::mem::size_of::<DynamicRangeLimitMixFunction>(), 64);
32 }
33
34 #[test]
35 fn test_writes() {
36 assert_parse!(DynamicRangeLimitMixFunction, "dynamic-range-limit-mix(constrained 80%,standard 20%)");
37 assert_parse!(
38 DynamicRangeLimitMixFunction,
39 "dynamic-range-limit-mix(80% constrained,20% standard)",
40 "dynamic-range-limit-mix(constrained 80%,standard 20%)"
41 );
42 assert_parse!(DynamicRangeLimitMixFunction, "dynamic-range-limit-mix(constrained 8%,standard 2%)");
43 assert_parse!(DynamicRangeLimitMixFunction, "dynamic-range-limit-mix(constrained 8%,no-limit 2%)");
44 assert_parse!(
45 DynamicRangeLimitMixFunction,
46 "dynamic-range-limit-mix(dynamic-range-limit-mix(constrained 8%)2%,no-limit 2%)"
47 );
48 }
49
50 #[test]
51 fn test_errors() {
52 assert_parse_error!(DynamicRangeLimitMixFunction, "dynamic-range-limit-mix(constrained -1%, standard 20%)");
53 assert_parse_error!(DynamicRangeLimitMixFunction, "dynamic-range-limit-mix(constrained 200%, standard 20%)");
54 assert_parse_error!(
55 DynamicRangeLimitMixFunction,
56 "dynamic-range-limit-mix(dynamic-range-limit-mix(constrained 200%), standard 20%)"
57 );
58 }
59}