css_ast/functions/
dynamic_range_limit_mix_function.rs1use super::prelude::*;
2
3#[derive(Parse, Peek, ToCursors, ToSpan, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
10#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit(self))]
11pub struct DynamicRangeLimitMixFunction<'a> {
12 #[atom(CssAtomSet::DynamicRangeLimitMix)]
13 pub name: T![Function],
14 pub params: CommaSeparated<'a, DynamicRangeLimitMixFunctionParams<'a>>,
15 pub close: T![')'],
16}
17
18#[syntax(" <'dynamic-range-limit'> && <percentage [0,100]> ")]
19#[derive(Parse, Peek, ToSpan, ToCursors, SemanticEq, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
20#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
21pub struct DynamicRangeLimitMixFunctionParams<'a>;
22
23#[cfg(test)]
24mod tests {
25 use super::*;
26 use crate::CssAtomSet;
27 use css_parse::{assert_parse, assert_parse_error};
28
29 #[test]
30 fn size_test() {
31 assert_eq!(std::mem::size_of::<DynamicRangeLimitMixFunction>(), 56);
32 }
33
34 #[test]
35 fn test_writes() {
36 assert_parse!(
37 CssAtomSet::ATOMS,
38 DynamicRangeLimitMixFunction,
39 "dynamic-range-limit-mix(constrained 80%,standard 20%)"
40 );
41 assert_parse!(
42 CssAtomSet::ATOMS,
43 DynamicRangeLimitMixFunction,
44 "dynamic-range-limit-mix(80% constrained,20% standard)"
45 );
46 assert_parse!(
47 CssAtomSet::ATOMS,
48 DynamicRangeLimitMixFunction,
49 "dynamic-range-limit-mix(constrained 8%,standard 2%)"
50 );
51 assert_parse!(
52 CssAtomSet::ATOMS,
53 DynamicRangeLimitMixFunction,
54 "dynamic-range-limit-mix(constrained 8%,no-limit 2%)"
55 );
56 assert_parse!(
57 CssAtomSet::ATOMS,
58 DynamicRangeLimitMixFunction,
59 "dynamic-range-limit-mix(dynamic-range-limit-mix(constrained 8%)2%,no-limit 2%)"
60 );
61 }
62
63 #[test]
64 fn test_errors() {
65 assert_parse_error!(
66 CssAtomSet::ATOMS,
67 DynamicRangeLimitMixFunction,
68 "dynamic-range-limit-mix(constrained -1%, standard 20%)"
69 );
70 assert_parse_error!(
71 CssAtomSet::ATOMS,
72 DynamicRangeLimitMixFunction,
73 "dynamic-range-limit-mix(constrained 200%, standard 20%)"
74 );
75 assert_parse_error!(
76 CssAtomSet::ATOMS,
77 DynamicRangeLimitMixFunction,
78 "dynamic-range-limit-mix(dynamic-range-limit-mix(constrained 200%), standard 20%)"
79 );
80 }
81}