From 5dceb279505eda652b185cb1d64d6d4f2f93e2de Mon Sep 17 00:00:00 2001
From: ConnorSkees <39542938+ConnorSkees@users.noreply.github.com>
Date: Sun, 7 Jun 2020 21:34:34 -0400
Subject: [PATCH] test special case :current in is-superselector

---
 src/selector/simple.rs    |  2 +-
 tests/is-superselector.rs | 85 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+), 1 deletion(-)

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"
+);