diff --git a/src/selector/simple.rs b/src/selector/simple.rs index 027d67d..2daac6e 100644 --- a/src/selector/simple.rs +++ b/src/selector/simple.rs @@ -541,7 +541,7 @@ impl Pseudo { } }) }), - "current" => selector_pseudos_named(compound.clone(), &self.name, false) + "current" => selector_pseudos_named(compound.clone(), &self.name, self.is_class) .iter() .any(|pseudo2| self.selector == pseudo2.selector), "nth-child" | "nth-last-child" => compound.components.iter().any(|pseudo2| { diff --git a/tests/is-superselector.rs b/tests/is-superselector.rs index 86f3723..195c719 100644 --- a/tests/is-superselector.rs +++ b/tests/is-superselector.rs @@ -226,3 +226,88 @@ test!( "a {\n color: is-superselector(\"::c\", \":c\");\n}\n", "a {\n color: false;\n}\n" ); +test!( + simple_pseudo_arg_class_equal, + "a {\n color: is-superselector(\":c(@#$)\", \":c(@#$)\");\n}\n", + "a {\n color: true;\n}\n" +); +test!( + simple_pseudo_arg_class_different_name, + "a {\n color: is-superselector(\":c(@#$)\", \":d(@#$)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + simple_pseudo_arg_class_different_arg, + "a {\n color: is-superselector(\":c(@#$)\", \":d(*&^)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + simple_pseudo_arg_class_different_no_arg, + "a {\n color: is-superselector(\":c(@#$)\", \":c\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + simple_pseudo_arg_class_and_element, + "a {\n color: is-superselector(\":c(@#$)\", \"::c(@#$)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + simple_pseudo_arg_element_and_element_equal, + "a {\n color: is-superselector(\"::c(@#$)\", \"::c(@#$)\");\n}\n", + "a {\n color: true;\n}\n" +); +test!( + simple_pseudo_arg_element_and_element_different_name, + "a {\n color: is-superselector(\"::c(@#$)\", \"::d(@#$)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + simple_pseudo_arg_element_and_element_different_arg, + "a {\n color: is-superselector(\"::c(@#$)\", \"::c(*&^)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + simple_pseudo_arg_element_and_element_different_no_arg, + "a {\n color: is-superselector(\"::c(@#$)\", \"::c\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + simple_pseudo_arg_element_and_class, + "a {\n color: is-superselector(\"::c(@#$)\", \":c(@#$)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + psuedo_current_superset, + "a {\n color: is-superselector(\":current(c d, e f, g h)\", \":current(c d.i, e j f)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + psuedo_current_subset, + "a {\n color: is-superselector(\":current(c d.i, e j f)\", \":current(c d, e f, g h)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + psuedo_current_equal, + "a {\n color: is-superselector(\":current(c d, e f)\", \":current(c d, e f)\");\n}\n", + "a {\n color: true;\n}\n" +); +test!( + psuedo_current_bare_sub, + "a {\n color: is-superselector(\":current(c d, e f)\", \"c d, e f\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + psuedo_current_prefix_superset, + "a {\n color: is-superselector(\":-pfx-current(c d, e f, g h)\", \":-pfx-current(c d.i, e j f)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + psuedo_current_prefix_subset, + "a {\n color: is-superselector(\":-pfx-current(c d.i, e j f)\", \":-pfx-current(c d, e f, g h)\");\n}\n", + "a {\n color: false;\n}\n" +); +test!( + psuedo_current_prefix_equal, + "a {\n color: is-superselector(\":-pfx-current(c d, e f)\", \":-pfx-current(c d, e f)\");\n}\n", + "a {\n color: true;\n}\n" +);