19e815959Sopenharmony_ciimport { Selector, SelectorType, AttributeAction, IgnoreCaseMode } from ".."; 29e815959Sopenharmony_ci 39e815959Sopenharmony_ciexport const tests: [ 49e815959Sopenharmony_ci selector: string, 59e815959Sopenharmony_ci expected: Selector[][], 69e815959Sopenharmony_ci message: string 79e815959Sopenharmony_ci][] = [ 89e815959Sopenharmony_ci // Tag names 99e815959Sopenharmony_ci [ 109e815959Sopenharmony_ci "div", 119e815959Sopenharmony_ci [ 129e815959Sopenharmony_ci [ 139e815959Sopenharmony_ci { 149e815959Sopenharmony_ci type: SelectorType.Tag, 159e815959Sopenharmony_ci namespace: null, 169e815959Sopenharmony_ci name: "div", 179e815959Sopenharmony_ci }, 189e815959Sopenharmony_ci ], 199e815959Sopenharmony_ci ], 209e815959Sopenharmony_ci "simple tag", 219e815959Sopenharmony_ci ], 229e815959Sopenharmony_ci [ 239e815959Sopenharmony_ci "*", 249e815959Sopenharmony_ci [ 259e815959Sopenharmony_ci [ 269e815959Sopenharmony_ci { 279e815959Sopenharmony_ci type: SelectorType.Universal, 289e815959Sopenharmony_ci namespace: null, 299e815959Sopenharmony_ci }, 309e815959Sopenharmony_ci ], 319e815959Sopenharmony_ci ], 329e815959Sopenharmony_ci "universal", 339e815959Sopenharmony_ci ], 349e815959Sopenharmony_ci 359e815959Sopenharmony_ci // Traversal 369e815959Sopenharmony_ci [ 379e815959Sopenharmony_ci "div div", 389e815959Sopenharmony_ci [ 399e815959Sopenharmony_ci [ 409e815959Sopenharmony_ci { 419e815959Sopenharmony_ci type: SelectorType.Tag, 429e815959Sopenharmony_ci namespace: null, 439e815959Sopenharmony_ci name: "div", 449e815959Sopenharmony_ci }, 459e815959Sopenharmony_ci { 469e815959Sopenharmony_ci type: SelectorType.Descendant, 479e815959Sopenharmony_ci }, 489e815959Sopenharmony_ci { 499e815959Sopenharmony_ci type: SelectorType.Tag, 509e815959Sopenharmony_ci namespace: null, 519e815959Sopenharmony_ci name: "div", 529e815959Sopenharmony_ci }, 539e815959Sopenharmony_ci ], 549e815959Sopenharmony_ci ], 559e815959Sopenharmony_ci "descendant", 569e815959Sopenharmony_ci ], 579e815959Sopenharmony_ci [ 589e815959Sopenharmony_ci "div\t \n \tdiv", 599e815959Sopenharmony_ci [ 609e815959Sopenharmony_ci [ 619e815959Sopenharmony_ci { 629e815959Sopenharmony_ci type: SelectorType.Tag, 639e815959Sopenharmony_ci namespace: null, 649e815959Sopenharmony_ci name: "div", 659e815959Sopenharmony_ci }, 669e815959Sopenharmony_ci { 679e815959Sopenharmony_ci type: SelectorType.Descendant, 689e815959Sopenharmony_ci }, 699e815959Sopenharmony_ci { 709e815959Sopenharmony_ci type: SelectorType.Tag, 719e815959Sopenharmony_ci namespace: null, 729e815959Sopenharmony_ci name: "div", 739e815959Sopenharmony_ci }, 749e815959Sopenharmony_ci ], 759e815959Sopenharmony_ci ], 769e815959Sopenharmony_ci "descendant /w whitespace", 779e815959Sopenharmony_ci ], 789e815959Sopenharmony_ci [ 799e815959Sopenharmony_ci "div + div", 809e815959Sopenharmony_ci [ 819e815959Sopenharmony_ci [ 829e815959Sopenharmony_ci { 839e815959Sopenharmony_ci type: SelectorType.Tag, 849e815959Sopenharmony_ci namespace: null, 859e815959Sopenharmony_ci name: "div", 869e815959Sopenharmony_ci }, 879e815959Sopenharmony_ci { 889e815959Sopenharmony_ci type: SelectorType.Adjacent, 899e815959Sopenharmony_ci }, 909e815959Sopenharmony_ci { 919e815959Sopenharmony_ci type: SelectorType.Tag, 929e815959Sopenharmony_ci namespace: null, 939e815959Sopenharmony_ci name: "div", 949e815959Sopenharmony_ci }, 959e815959Sopenharmony_ci ], 969e815959Sopenharmony_ci ], 979e815959Sopenharmony_ci "adjacent", 989e815959Sopenharmony_ci ], 999e815959Sopenharmony_ci [ 1009e815959Sopenharmony_ci "div ~ div", 1019e815959Sopenharmony_ci [ 1029e815959Sopenharmony_ci [ 1039e815959Sopenharmony_ci { 1049e815959Sopenharmony_ci type: SelectorType.Tag, 1059e815959Sopenharmony_ci namespace: null, 1069e815959Sopenharmony_ci name: "div", 1079e815959Sopenharmony_ci }, 1089e815959Sopenharmony_ci { 1099e815959Sopenharmony_ci type: SelectorType.Sibling, 1109e815959Sopenharmony_ci }, 1119e815959Sopenharmony_ci { 1129e815959Sopenharmony_ci type: SelectorType.Tag, 1139e815959Sopenharmony_ci namespace: null, 1149e815959Sopenharmony_ci name: "div", 1159e815959Sopenharmony_ci }, 1169e815959Sopenharmony_ci ], 1179e815959Sopenharmony_ci ], 1189e815959Sopenharmony_ci "sibling", 1199e815959Sopenharmony_ci ], 1209e815959Sopenharmony_ci [ 1219e815959Sopenharmony_ci "p < div", 1229e815959Sopenharmony_ci [ 1239e815959Sopenharmony_ci [ 1249e815959Sopenharmony_ci { 1259e815959Sopenharmony_ci type: SelectorType.Tag, 1269e815959Sopenharmony_ci namespace: null, 1279e815959Sopenharmony_ci name: "p", 1289e815959Sopenharmony_ci }, 1299e815959Sopenharmony_ci { 1309e815959Sopenharmony_ci type: SelectorType.Parent, 1319e815959Sopenharmony_ci }, 1329e815959Sopenharmony_ci { 1339e815959Sopenharmony_ci type: SelectorType.Tag, 1349e815959Sopenharmony_ci namespace: null, 1359e815959Sopenharmony_ci name: "div", 1369e815959Sopenharmony_ci }, 1379e815959Sopenharmony_ci ], 1389e815959Sopenharmony_ci ], 1399e815959Sopenharmony_ci "parent", 1409e815959Sopenharmony_ci ], 1419e815959Sopenharmony_ci 1429e815959Sopenharmony_ci // Escaped whitespace 1439e815959Sopenharmony_ci [ 1449e815959Sopenharmony_ci "#\\ > a ", 1459e815959Sopenharmony_ci [ 1469e815959Sopenharmony_ci [ 1479e815959Sopenharmony_ci { 1489e815959Sopenharmony_ci type: SelectorType.Attribute, 1499e815959Sopenharmony_ci namespace: null, 1509e815959Sopenharmony_ci action: AttributeAction.Equals, 1519e815959Sopenharmony_ci name: "id", 1529e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.QuirksMode, 1539e815959Sopenharmony_ci value: " ", 1549e815959Sopenharmony_ci }, 1559e815959Sopenharmony_ci { 1569e815959Sopenharmony_ci type: SelectorType.Child, 1579e815959Sopenharmony_ci }, 1589e815959Sopenharmony_ci { 1599e815959Sopenharmony_ci type: SelectorType.Tag, 1609e815959Sopenharmony_ci namespace: null, 1619e815959Sopenharmony_ci name: "a", 1629e815959Sopenharmony_ci }, 1639e815959Sopenharmony_ci ], 1649e815959Sopenharmony_ci ], 1659e815959Sopenharmony_ci "Space between escaped space and combinator", 1669e815959Sopenharmony_ci ], 1679e815959Sopenharmony_ci [ 1689e815959Sopenharmony_ci ".\\ ", 1699e815959Sopenharmony_ci [ 1709e815959Sopenharmony_ci [ 1719e815959Sopenharmony_ci { 1729e815959Sopenharmony_ci type: SelectorType.Attribute, 1739e815959Sopenharmony_ci namespace: null, 1749e815959Sopenharmony_ci name: "class", 1759e815959Sopenharmony_ci action: AttributeAction.Element, 1769e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.QuirksMode, 1779e815959Sopenharmony_ci value: " ", 1789e815959Sopenharmony_ci }, 1799e815959Sopenharmony_ci ], 1809e815959Sopenharmony_ci ], 1819e815959Sopenharmony_ci "Space after escaped space", 1829e815959Sopenharmony_ci ], 1839e815959Sopenharmony_ci [ 1849e815959Sopenharmony_ci ".m™²³", 1859e815959Sopenharmony_ci [ 1869e815959Sopenharmony_ci [ 1879e815959Sopenharmony_ci { 1889e815959Sopenharmony_ci type: SelectorType.Attribute, 1899e815959Sopenharmony_ci namespace: null, 1909e815959Sopenharmony_ci name: "class", 1919e815959Sopenharmony_ci action: AttributeAction.Element, 1929e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.QuirksMode, 1939e815959Sopenharmony_ci value: "m™²³", 1949e815959Sopenharmony_ci }, 1959e815959Sopenharmony_ci ], 1969e815959Sopenharmony_ci ], 1979e815959Sopenharmony_ci "Special charecters in selector", 1989e815959Sopenharmony_ci ], 1999e815959Sopenharmony_ci [ 2009e815959Sopenharmony_ci "\\61 ", 2019e815959Sopenharmony_ci [ 2029e815959Sopenharmony_ci [ 2039e815959Sopenharmony_ci { 2049e815959Sopenharmony_ci type: SelectorType.Tag, 2059e815959Sopenharmony_ci namespace: null, 2069e815959Sopenharmony_ci name: "a", 2079e815959Sopenharmony_ci }, 2089e815959Sopenharmony_ci ], 2099e815959Sopenharmony_ci ], 2109e815959Sopenharmony_ci "Numeric escape with space (BMP)", 2119e815959Sopenharmony_ci ], 2129e815959Sopenharmony_ci [ 2139e815959Sopenharmony_ci "\\1d306\\01d306", 2149e815959Sopenharmony_ci [ 2159e815959Sopenharmony_ci [ 2169e815959Sopenharmony_ci { 2179e815959Sopenharmony_ci type: SelectorType.Tag, 2189e815959Sopenharmony_ci namespace: null, 2199e815959Sopenharmony_ci name: "\uD834\uDF06\uD834\uDF06", 2209e815959Sopenharmony_ci }, 2219e815959Sopenharmony_ci ], 2229e815959Sopenharmony_ci ], 2239e815959Sopenharmony_ci "Numeric escape (outside BMP)", 2249e815959Sopenharmony_ci ], 2259e815959Sopenharmony_ci [ 2269e815959Sopenharmony_ci "#\\26 B", 2279e815959Sopenharmony_ci [ 2289e815959Sopenharmony_ci [ 2299e815959Sopenharmony_ci { 2309e815959Sopenharmony_ci type: SelectorType.Attribute, 2319e815959Sopenharmony_ci namespace: null, 2329e815959Sopenharmony_ci action: AttributeAction.Equals, 2339e815959Sopenharmony_ci name: "id", 2349e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.QuirksMode, 2359e815959Sopenharmony_ci value: "&B", 2369e815959Sopenharmony_ci }, 2379e815959Sopenharmony_ci ], 2389e815959Sopenharmony_ci ], 2399e815959Sopenharmony_ci "id selector with escape sequence", 2409e815959Sopenharmony_ci ], 2419e815959Sopenharmony_ci 2429e815959Sopenharmony_ci // Attributes 2439e815959Sopenharmony_ci [ 2449e815959Sopenharmony_ci '[name^="foo["]', 2459e815959Sopenharmony_ci [ 2469e815959Sopenharmony_ci [ 2479e815959Sopenharmony_ci { 2489e815959Sopenharmony_ci type: SelectorType.Attribute, 2499e815959Sopenharmony_ci namespace: null, 2509e815959Sopenharmony_ci name: "name", 2519e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 2529e815959Sopenharmony_ci action: AttributeAction.Start, 2539e815959Sopenharmony_ci value: "foo[", 2549e815959Sopenharmony_ci }, 2559e815959Sopenharmony_ci ], 2569e815959Sopenharmony_ci ], 2579e815959Sopenharmony_ci "quoted attribute", 2589e815959Sopenharmony_ci ], 2599e815959Sopenharmony_ci [ 2609e815959Sopenharmony_ci '[name^="foo[bar]"]', 2619e815959Sopenharmony_ci [ 2629e815959Sopenharmony_ci [ 2639e815959Sopenharmony_ci { 2649e815959Sopenharmony_ci type: SelectorType.Attribute, 2659e815959Sopenharmony_ci namespace: null, 2669e815959Sopenharmony_ci name: "name", 2679e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 2689e815959Sopenharmony_ci action: AttributeAction.Start, 2699e815959Sopenharmony_ci value: "foo[bar]", 2709e815959Sopenharmony_ci }, 2719e815959Sopenharmony_ci ], 2729e815959Sopenharmony_ci ], 2739e815959Sopenharmony_ci "quoted attribute", 2749e815959Sopenharmony_ci ], 2759e815959Sopenharmony_ci [ 2769e815959Sopenharmony_ci '[name$="[bar]"]', 2779e815959Sopenharmony_ci [ 2789e815959Sopenharmony_ci [ 2799e815959Sopenharmony_ci { 2809e815959Sopenharmony_ci type: SelectorType.Attribute, 2819e815959Sopenharmony_ci namespace: null, 2829e815959Sopenharmony_ci name: "name", 2839e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 2849e815959Sopenharmony_ci action: AttributeAction.End, 2859e815959Sopenharmony_ci value: "[bar]", 2869e815959Sopenharmony_ci }, 2879e815959Sopenharmony_ci ], 2889e815959Sopenharmony_ci ], 2899e815959Sopenharmony_ci "quoted attribute", 2909e815959Sopenharmony_ci ], 2919e815959Sopenharmony_ci [ 2929e815959Sopenharmony_ci '[href *= "google"]', 2939e815959Sopenharmony_ci [ 2949e815959Sopenharmony_ci [ 2959e815959Sopenharmony_ci { 2969e815959Sopenharmony_ci type: SelectorType.Attribute, 2979e815959Sopenharmony_ci namespace: null, 2989e815959Sopenharmony_ci name: "href", 2999e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 3009e815959Sopenharmony_ci action: AttributeAction.Any, 3019e815959Sopenharmony_ci value: "google", 3029e815959Sopenharmony_ci }, 3039e815959Sopenharmony_ci ], 3049e815959Sopenharmony_ci ], 3059e815959Sopenharmony_ci "quoted attribute with spaces", 3069e815959Sopenharmony_ci ], 3079e815959Sopenharmony_ci [ 3089e815959Sopenharmony_ci '[value="\nsome text\n"]', 3099e815959Sopenharmony_ci [ 3109e815959Sopenharmony_ci [ 3119e815959Sopenharmony_ci { 3129e815959Sopenharmony_ci type: SelectorType.Attribute, 3139e815959Sopenharmony_ci namespace: null, 3149e815959Sopenharmony_ci name: "value", 3159e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 3169e815959Sopenharmony_ci action: AttributeAction.Equals, 3179e815959Sopenharmony_ci value: "\nsome text\n", 3189e815959Sopenharmony_ci }, 3199e815959Sopenharmony_ci ], 3209e815959Sopenharmony_ci ], 3219e815959Sopenharmony_ci "quoted attribute with internal newline", 3229e815959Sopenharmony_ci ], 3239e815959Sopenharmony_ci [ 3249e815959Sopenharmony_ci "[name=foo\\.baz]", 3259e815959Sopenharmony_ci [ 3269e815959Sopenharmony_ci [ 3279e815959Sopenharmony_ci { 3289e815959Sopenharmony_ci type: SelectorType.Attribute, 3299e815959Sopenharmony_ci namespace: null, 3309e815959Sopenharmony_ci name: "name", 3319e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 3329e815959Sopenharmony_ci action: AttributeAction.Equals, 3339e815959Sopenharmony_ci value: "foo.baz", 3349e815959Sopenharmony_ci }, 3359e815959Sopenharmony_ci ], 3369e815959Sopenharmony_ci ], 3379e815959Sopenharmony_ci "attribute with escaped dot", 3389e815959Sopenharmony_ci ], 3399e815959Sopenharmony_ci [ 3409e815959Sopenharmony_ci "[name=foo\\[bar\\]]", 3419e815959Sopenharmony_ci [ 3429e815959Sopenharmony_ci [ 3439e815959Sopenharmony_ci { 3449e815959Sopenharmony_ci type: SelectorType.Attribute, 3459e815959Sopenharmony_ci namespace: null, 3469e815959Sopenharmony_ci name: "name", 3479e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 3489e815959Sopenharmony_ci action: AttributeAction.Equals, 3499e815959Sopenharmony_ci value: "foo[bar]", 3509e815959Sopenharmony_ci }, 3519e815959Sopenharmony_ci ], 3529e815959Sopenharmony_ci ], 3539e815959Sopenharmony_ci "attribute with escaped square brackets", 3549e815959Sopenharmony_ci ], 3559e815959Sopenharmony_ci [ 3569e815959Sopenharmony_ci "[xml\\:test]", 3579e815959Sopenharmony_ci [ 3589e815959Sopenharmony_ci [ 3599e815959Sopenharmony_ci { 3609e815959Sopenharmony_ci type: SelectorType.Attribute, 3619e815959Sopenharmony_ci namespace: null, 3629e815959Sopenharmony_ci name: "xml:test", 3639e815959Sopenharmony_ci action: AttributeAction.Exists, 3649e815959Sopenharmony_ci value: "", 3659e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 3669e815959Sopenharmony_ci }, 3679e815959Sopenharmony_ci ], 3689e815959Sopenharmony_ci ], 3699e815959Sopenharmony_ci "escaped attribute", 3709e815959Sopenharmony_ci ], 3719e815959Sopenharmony_ci [ 3729e815959Sopenharmony_ci "[name='foo ~ < > , bar' i]", 3739e815959Sopenharmony_ci [ 3749e815959Sopenharmony_ci [ 3759e815959Sopenharmony_ci { 3769e815959Sopenharmony_ci type: SelectorType.Attribute, 3779e815959Sopenharmony_ci namespace: null, 3789e815959Sopenharmony_ci name: "name", 3799e815959Sopenharmony_ci action: AttributeAction.Equals, 3809e815959Sopenharmony_ci value: "foo ~ < > , bar", 3819e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.IgnoreCase, 3829e815959Sopenharmony_ci }, 3839e815959Sopenharmony_ci ], 3849e815959Sopenharmony_ci ], 3859e815959Sopenharmony_ci "attribute with previously normalized characters", 3869e815959Sopenharmony_ci ], 3879e815959Sopenharmony_ci 3889e815959Sopenharmony_ci // ID starting with a dot 3899e815959Sopenharmony_ci [ 3909e815959Sopenharmony_ci "#.identifier", 3919e815959Sopenharmony_ci [ 3929e815959Sopenharmony_ci [ 3939e815959Sopenharmony_ci { 3949e815959Sopenharmony_ci type: SelectorType.Attribute, 3959e815959Sopenharmony_ci namespace: null, 3969e815959Sopenharmony_ci action: AttributeAction.Equals, 3979e815959Sopenharmony_ci name: "id", 3989e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.QuirksMode, 3999e815959Sopenharmony_ci value: ".identifier", 4009e815959Sopenharmony_ci }, 4019e815959Sopenharmony_ci ], 4029e815959Sopenharmony_ci ], 4039e815959Sopenharmony_ci "ID starting with a dot", 4049e815959Sopenharmony_ci ], 4059e815959Sopenharmony_ci 4069e815959Sopenharmony_ci // Pseudo elements 4079e815959Sopenharmony_ci [ 4089e815959Sopenharmony_ci "::foo", 4099e815959Sopenharmony_ci [ 4109e815959Sopenharmony_ci [ 4119e815959Sopenharmony_ci { 4129e815959Sopenharmony_ci type: SelectorType.PseudoElement, 4139e815959Sopenharmony_ci name: "foo", 4149e815959Sopenharmony_ci data: null, 4159e815959Sopenharmony_ci }, 4169e815959Sopenharmony_ci ], 4179e815959Sopenharmony_ci ], 4189e815959Sopenharmony_ci "pseudo-element", 4199e815959Sopenharmony_ci ], 4209e815959Sopenharmony_ci [ 4219e815959Sopenharmony_ci "::foo()", 4229e815959Sopenharmony_ci [ 4239e815959Sopenharmony_ci [ 4249e815959Sopenharmony_ci { 4259e815959Sopenharmony_ci type: SelectorType.PseudoElement, 4269e815959Sopenharmony_ci name: "foo", 4279e815959Sopenharmony_ci data: "", 4289e815959Sopenharmony_ci }, 4299e815959Sopenharmony_ci ], 4309e815959Sopenharmony_ci ], 4319e815959Sopenharmony_ci "pseudo-element", 4329e815959Sopenharmony_ci ], 4339e815959Sopenharmony_ci [ 4349e815959Sopenharmony_ci "::foo(bar())", 4359e815959Sopenharmony_ci [ 4369e815959Sopenharmony_ci [ 4379e815959Sopenharmony_ci { 4389e815959Sopenharmony_ci type: SelectorType.PseudoElement, 4399e815959Sopenharmony_ci name: "foo", 4409e815959Sopenharmony_ci data: "bar()", 4419e815959Sopenharmony_ci }, 4429e815959Sopenharmony_ci ], 4439e815959Sopenharmony_ci ], 4449e815959Sopenharmony_ci "pseudo-element", 4459e815959Sopenharmony_ci ], 4469e815959Sopenharmony_ci 4479e815959Sopenharmony_ci // Pseudo selectors 4489e815959Sopenharmony_ci [ 4499e815959Sopenharmony_ci ":foo", 4509e815959Sopenharmony_ci [ 4519e815959Sopenharmony_ci [ 4529e815959Sopenharmony_ci { 4539e815959Sopenharmony_ci type: SelectorType.Pseudo, 4549e815959Sopenharmony_ci name: "foo", 4559e815959Sopenharmony_ci data: null, 4569e815959Sopenharmony_ci }, 4579e815959Sopenharmony_ci ], 4589e815959Sopenharmony_ci ], 4599e815959Sopenharmony_ci "pseudo selector without any data", 4609e815959Sopenharmony_ci ], 4619e815959Sopenharmony_ci [ 4629e815959Sopenharmony_ci ":bar(baz)", 4639e815959Sopenharmony_ci [ 4649e815959Sopenharmony_ci [ 4659e815959Sopenharmony_ci { 4669e815959Sopenharmony_ci type: SelectorType.Pseudo, 4679e815959Sopenharmony_ci name: "bar", 4689e815959Sopenharmony_ci data: "baz", 4699e815959Sopenharmony_ci }, 4709e815959Sopenharmony_ci ], 4719e815959Sopenharmony_ci ], 4729e815959Sopenharmony_ci "pseudo selector with data", 4739e815959Sopenharmony_ci ], 4749e815959Sopenharmony_ci [ 4759e815959Sopenharmony_ci ':contains("(foo)")', 4769e815959Sopenharmony_ci [ 4779e815959Sopenharmony_ci [ 4789e815959Sopenharmony_ci { 4799e815959Sopenharmony_ci type: SelectorType.Pseudo, 4809e815959Sopenharmony_ci name: "contains", 4819e815959Sopenharmony_ci data: "(foo)", 4829e815959Sopenharmony_ci }, 4839e815959Sopenharmony_ci ], 4849e815959Sopenharmony_ci ], 4859e815959Sopenharmony_ci "pseudo selector with data", 4869e815959Sopenharmony_ci ], 4879e815959Sopenharmony_ci [ 4889e815959Sopenharmony_ci ":where(a)", 4899e815959Sopenharmony_ci [ 4909e815959Sopenharmony_ci [ 4919e815959Sopenharmony_ci { 4929e815959Sopenharmony_ci type: SelectorType.Pseudo, 4939e815959Sopenharmony_ci name: "where", 4949e815959Sopenharmony_ci data: [ 4959e815959Sopenharmony_ci [ 4969e815959Sopenharmony_ci { 4979e815959Sopenharmony_ci type: SelectorType.Tag, 4989e815959Sopenharmony_ci namespace: null, 4999e815959Sopenharmony_ci name: "a", 5009e815959Sopenharmony_ci }, 5019e815959Sopenharmony_ci ], 5029e815959Sopenharmony_ci ], 5039e815959Sopenharmony_ci }, 5049e815959Sopenharmony_ci ], 5059e815959Sopenharmony_ci ], 5069e815959Sopenharmony_ci "pseudo selector with data", 5079e815959Sopenharmony_ci ], 5089e815959Sopenharmony_ci [ 5099e815959Sopenharmony_ci ':contains("(a((foo\\\\\\))))")', 5109e815959Sopenharmony_ci [ 5119e815959Sopenharmony_ci [ 5129e815959Sopenharmony_ci { 5139e815959Sopenharmony_ci type: SelectorType.Pseudo, 5149e815959Sopenharmony_ci name: "contains", 5159e815959Sopenharmony_ci data: "(a((foo))))", 5169e815959Sopenharmony_ci }, 5179e815959Sopenharmony_ci ], 5189e815959Sopenharmony_ci ], 5199e815959Sopenharmony_ci "pseudo selector with escaped data", 5209e815959Sopenharmony_ci ], 5219e815959Sopenharmony_ci [ 5229e815959Sopenharmony_ci ":icontains('')", 5239e815959Sopenharmony_ci [ 5249e815959Sopenharmony_ci [ 5259e815959Sopenharmony_ci { 5269e815959Sopenharmony_ci type: SelectorType.Pseudo, 5279e815959Sopenharmony_ci name: "icontains", 5289e815959Sopenharmony_ci data: "", 5299e815959Sopenharmony_ci }, 5309e815959Sopenharmony_ci ], 5319e815959Sopenharmony_ci ], 5329e815959Sopenharmony_ci "pseudo selector with quote-stripped data", 5339e815959Sopenharmony_ci ], 5349e815959Sopenharmony_ci [ 5359e815959Sopenharmony_ci ':contains("(foo)")', 5369e815959Sopenharmony_ci [ 5379e815959Sopenharmony_ci [ 5389e815959Sopenharmony_ci { 5399e815959Sopenharmony_ci type: SelectorType.Pseudo, 5409e815959Sopenharmony_ci name: "contains", 5419e815959Sopenharmony_ci data: "(foo)", 5429e815959Sopenharmony_ci }, 5439e815959Sopenharmony_ci ], 5449e815959Sopenharmony_ci ], 5459e815959Sopenharmony_ci "pseudo selector with data", 5469e815959Sopenharmony_ci ], 5479e815959Sopenharmony_ci 5489e815959Sopenharmony_ci // Multiple selectors 5499e815959Sopenharmony_ci [ 5509e815959Sopenharmony_ci "a , b", 5519e815959Sopenharmony_ci [ 5529e815959Sopenharmony_ci [ 5539e815959Sopenharmony_ci { 5549e815959Sopenharmony_ci type: SelectorType.Tag, 5559e815959Sopenharmony_ci namespace: null, 5569e815959Sopenharmony_ci name: "a", 5579e815959Sopenharmony_ci }, 5589e815959Sopenharmony_ci ], 5599e815959Sopenharmony_ci [ 5609e815959Sopenharmony_ci { 5619e815959Sopenharmony_ci type: SelectorType.Tag, 5629e815959Sopenharmony_ci namespace: null, 5639e815959Sopenharmony_ci name: "b", 5649e815959Sopenharmony_ci }, 5659e815959Sopenharmony_ci ], 5669e815959Sopenharmony_ci ], 5679e815959Sopenharmony_ci "multiple selectors", 5689e815959Sopenharmony_ci ], 5699e815959Sopenharmony_ci 5709e815959Sopenharmony_ci [ 5719e815959Sopenharmony_ci ":host(h1, p)", 5729e815959Sopenharmony_ci [ 5739e815959Sopenharmony_ci [ 5749e815959Sopenharmony_ci { 5759e815959Sopenharmony_ci type: SelectorType.Pseudo, 5769e815959Sopenharmony_ci name: "host", 5779e815959Sopenharmony_ci data: [ 5789e815959Sopenharmony_ci [ 5799e815959Sopenharmony_ci { 5809e815959Sopenharmony_ci type: SelectorType.Tag, 5819e815959Sopenharmony_ci namespace: null, 5829e815959Sopenharmony_ci name: "h1", 5839e815959Sopenharmony_ci }, 5849e815959Sopenharmony_ci ], 5859e815959Sopenharmony_ci [ 5869e815959Sopenharmony_ci { 5879e815959Sopenharmony_ci type: SelectorType.Tag, 5889e815959Sopenharmony_ci namespace: null, 5899e815959Sopenharmony_ci name: "p", 5909e815959Sopenharmony_ci }, 5919e815959Sopenharmony_ci ], 5929e815959Sopenharmony_ci ], 5939e815959Sopenharmony_ci }, 5949e815959Sopenharmony_ci ], 5959e815959Sopenharmony_ci ], 5969e815959Sopenharmony_ci "pseudo selector with data", 5979e815959Sopenharmony_ci ], 5989e815959Sopenharmony_ci 5999e815959Sopenharmony_ci /* 6009e815959Sopenharmony_ci * Bad attributes (taken from Sizzle) 6019e815959Sopenharmony_ci * https://github.com/jquery/sizzle/blob/af163873d7cdfc57f18b16c04b1915209533f0b1/test/unit/selector.js#L602-L651 6029e815959Sopenharmony_ci */ 6039e815959Sopenharmony_ci [ 6049e815959Sopenharmony_ci "[id=types_all]", 6059e815959Sopenharmony_ci [ 6069e815959Sopenharmony_ci [ 6079e815959Sopenharmony_ci { 6089e815959Sopenharmony_ci type: SelectorType.Attribute, 6099e815959Sopenharmony_ci namespace: null, 6109e815959Sopenharmony_ci action: AttributeAction.Equals, 6119e815959Sopenharmony_ci name: "id", 6129e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 6139e815959Sopenharmony_ci value: "types_all", 6149e815959Sopenharmony_ci }, 6159e815959Sopenharmony_ci ], 6169e815959Sopenharmony_ci ], 6179e815959Sopenharmony_ci "Underscores don't need escaping", 6189e815959Sopenharmony_ci ], 6199e815959Sopenharmony_ci [ 6209e815959Sopenharmony_ci "[name=foo\\ bar]", 6219e815959Sopenharmony_ci [ 6229e815959Sopenharmony_ci [ 6239e815959Sopenharmony_ci { 6249e815959Sopenharmony_ci type: SelectorType.Attribute, 6259e815959Sopenharmony_ci namespace: null, 6269e815959Sopenharmony_ci action: AttributeAction.Equals, 6279e815959Sopenharmony_ci name: "name", 6289e815959Sopenharmony_ci value: "foo bar", 6299e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 6309e815959Sopenharmony_ci }, 6319e815959Sopenharmony_ci ], 6329e815959Sopenharmony_ci ], 6339e815959Sopenharmony_ci "Escaped space", 6349e815959Sopenharmony_ci ], 6359e815959Sopenharmony_ci [ 6369e815959Sopenharmony_ci "[name=foo\\.baz]", 6379e815959Sopenharmony_ci [ 6389e815959Sopenharmony_ci [ 6399e815959Sopenharmony_ci { 6409e815959Sopenharmony_ci type: SelectorType.Attribute, 6419e815959Sopenharmony_ci namespace: null, 6429e815959Sopenharmony_ci action: AttributeAction.Equals, 6439e815959Sopenharmony_ci name: "name", 6449e815959Sopenharmony_ci value: "foo.baz", 6459e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 6469e815959Sopenharmony_ci }, 6479e815959Sopenharmony_ci ], 6489e815959Sopenharmony_ci ], 6499e815959Sopenharmony_ci "Escaped dot", 6509e815959Sopenharmony_ci ], 6519e815959Sopenharmony_ci [ 6529e815959Sopenharmony_ci "[name=foo\\[baz\\]]", 6539e815959Sopenharmony_ci [ 6549e815959Sopenharmony_ci [ 6559e815959Sopenharmony_ci { 6569e815959Sopenharmony_ci type: SelectorType.Attribute, 6579e815959Sopenharmony_ci namespace: null, 6589e815959Sopenharmony_ci action: AttributeAction.Equals, 6599e815959Sopenharmony_ci name: "name", 6609e815959Sopenharmony_ci value: "foo[baz]", 6619e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 6629e815959Sopenharmony_ci }, 6639e815959Sopenharmony_ci ], 6649e815959Sopenharmony_ci ], 6659e815959Sopenharmony_ci "Escaped brackets", 6669e815959Sopenharmony_ci ], 6679e815959Sopenharmony_ci [ 6689e815959Sopenharmony_ci "[data-attr='foo_baz\\']']", 6699e815959Sopenharmony_ci [ 6709e815959Sopenharmony_ci [ 6719e815959Sopenharmony_ci { 6729e815959Sopenharmony_ci type: SelectorType.Attribute, 6739e815959Sopenharmony_ci namespace: null, 6749e815959Sopenharmony_ci action: AttributeAction.Equals, 6759e815959Sopenharmony_ci name: "data-attr", 6769e815959Sopenharmony_ci value: "foo_baz']", 6779e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 6789e815959Sopenharmony_ci }, 6799e815959Sopenharmony_ci ], 6809e815959Sopenharmony_ci ], 6819e815959Sopenharmony_ci "Escaped quote + right bracket", 6829e815959Sopenharmony_ci ], 6839e815959Sopenharmony_ci [ 6849e815959Sopenharmony_ci "[data-attr='\\'']", 6859e815959Sopenharmony_ci [ 6869e815959Sopenharmony_ci [ 6879e815959Sopenharmony_ci { 6889e815959Sopenharmony_ci type: SelectorType.Attribute, 6899e815959Sopenharmony_ci namespace: null, 6909e815959Sopenharmony_ci action: AttributeAction.Equals, 6919e815959Sopenharmony_ci name: "data-attr", 6929e815959Sopenharmony_ci value: "'", 6939e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 6949e815959Sopenharmony_ci }, 6959e815959Sopenharmony_ci ], 6969e815959Sopenharmony_ci ], 6979e815959Sopenharmony_ci "Quoted quote", 6989e815959Sopenharmony_ci ], 6999e815959Sopenharmony_ci [ 7009e815959Sopenharmony_ci "[data-attr='\\\\']", 7019e815959Sopenharmony_ci [ 7029e815959Sopenharmony_ci [ 7039e815959Sopenharmony_ci { 7049e815959Sopenharmony_ci type: SelectorType.Attribute, 7059e815959Sopenharmony_ci namespace: null, 7069e815959Sopenharmony_ci action: AttributeAction.Equals, 7079e815959Sopenharmony_ci name: "data-attr", 7089e815959Sopenharmony_ci value: "\\", 7099e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 7109e815959Sopenharmony_ci }, 7119e815959Sopenharmony_ci ], 7129e815959Sopenharmony_ci ], 7139e815959Sopenharmony_ci "Quoted backslash", 7149e815959Sopenharmony_ci ], 7159e815959Sopenharmony_ci [ 7169e815959Sopenharmony_ci "[data-attr='\\\\\\'']", 7179e815959Sopenharmony_ci [ 7189e815959Sopenharmony_ci [ 7199e815959Sopenharmony_ci { 7209e815959Sopenharmony_ci type: SelectorType.Attribute, 7219e815959Sopenharmony_ci namespace: null, 7229e815959Sopenharmony_ci action: AttributeAction.Equals, 7239e815959Sopenharmony_ci name: "data-attr", 7249e815959Sopenharmony_ci value: "\\'", 7259e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 7269e815959Sopenharmony_ci }, 7279e815959Sopenharmony_ci ], 7289e815959Sopenharmony_ci ], 7299e815959Sopenharmony_ci "Quoted backslash quote", 7309e815959Sopenharmony_ci ], 7319e815959Sopenharmony_ci [ 7329e815959Sopenharmony_ci "[data-attr='\\\\\\\\']", 7339e815959Sopenharmony_ci [ 7349e815959Sopenharmony_ci [ 7359e815959Sopenharmony_ci { 7369e815959Sopenharmony_ci type: SelectorType.Attribute, 7379e815959Sopenharmony_ci namespace: null, 7389e815959Sopenharmony_ci action: AttributeAction.Equals, 7399e815959Sopenharmony_ci name: "data-attr", 7409e815959Sopenharmony_ci value: "\\\\", 7419e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 7429e815959Sopenharmony_ci }, 7439e815959Sopenharmony_ci ], 7449e815959Sopenharmony_ci ], 7459e815959Sopenharmony_ci "Quoted backslash backslash", 7469e815959Sopenharmony_ci ], 7479e815959Sopenharmony_ci [ 7489e815959Sopenharmony_ci "[data-attr='\\5C\\\\']", 7499e815959Sopenharmony_ci [ 7509e815959Sopenharmony_ci [ 7519e815959Sopenharmony_ci { 7529e815959Sopenharmony_ci type: SelectorType.Attribute, 7539e815959Sopenharmony_ci namespace: null, 7549e815959Sopenharmony_ci action: AttributeAction.Equals, 7559e815959Sopenharmony_ci name: "data-attr", 7569e815959Sopenharmony_ci value: "\\\\", 7579e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 7589e815959Sopenharmony_ci }, 7599e815959Sopenharmony_ci ], 7609e815959Sopenharmony_ci ], 7619e815959Sopenharmony_ci "Quoted backslash backslash (numeric escape)", 7629e815959Sopenharmony_ci ], 7639e815959Sopenharmony_ci [ 7649e815959Sopenharmony_ci "[data-attr='\\5C \\\\']", 7659e815959Sopenharmony_ci [ 7669e815959Sopenharmony_ci [ 7679e815959Sopenharmony_ci { 7689e815959Sopenharmony_ci type: SelectorType.Attribute, 7699e815959Sopenharmony_ci namespace: null, 7709e815959Sopenharmony_ci action: AttributeAction.Equals, 7719e815959Sopenharmony_ci name: "data-attr", 7729e815959Sopenharmony_ci value: "\\\\", 7739e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 7749e815959Sopenharmony_ci }, 7759e815959Sopenharmony_ci ], 7769e815959Sopenharmony_ci ], 7779e815959Sopenharmony_ci "Quoted backslash backslash (numeric escape with trailing space)", 7789e815959Sopenharmony_ci ], 7799e815959Sopenharmony_ci [ 7809e815959Sopenharmony_ci "[data-attr='\\5C\t\\\\']", 7819e815959Sopenharmony_ci [ 7829e815959Sopenharmony_ci [ 7839e815959Sopenharmony_ci { 7849e815959Sopenharmony_ci type: SelectorType.Attribute, 7859e815959Sopenharmony_ci namespace: null, 7869e815959Sopenharmony_ci action: AttributeAction.Equals, 7879e815959Sopenharmony_ci name: "data-attr", 7889e815959Sopenharmony_ci value: "\\\\", 7899e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 7909e815959Sopenharmony_ci }, 7919e815959Sopenharmony_ci ], 7929e815959Sopenharmony_ci ], 7939e815959Sopenharmony_ci "Quoted backslash backslash (numeric escape with trailing tab)", 7949e815959Sopenharmony_ci ], 7959e815959Sopenharmony_ci [ 7969e815959Sopenharmony_ci "[data-attr='\\04e00']", 7979e815959Sopenharmony_ci [ 7989e815959Sopenharmony_ci [ 7999e815959Sopenharmony_ci { 8009e815959Sopenharmony_ci type: SelectorType.Attribute, 8019e815959Sopenharmony_ci namespace: null, 8029e815959Sopenharmony_ci action: AttributeAction.Equals, 8039e815959Sopenharmony_ci name: "data-attr", 8049e815959Sopenharmony_ci value: "\u4e00", 8059e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 8069e815959Sopenharmony_ci }, 8079e815959Sopenharmony_ci ], 8089e815959Sopenharmony_ci ], 8099e815959Sopenharmony_ci "Long numeric escape (BMP)", 8109e815959Sopenharmony_ci ], 8119e815959Sopenharmony_ci [ 8129e815959Sopenharmony_ci "[data-attr='\\01D306A']", 8139e815959Sopenharmony_ci [ 8149e815959Sopenharmony_ci [ 8159e815959Sopenharmony_ci { 8169e815959Sopenharmony_ci type: SelectorType.Attribute, 8179e815959Sopenharmony_ci namespace: null, 8189e815959Sopenharmony_ci action: AttributeAction.Equals, 8199e815959Sopenharmony_ci name: "data-attr", 8209e815959Sopenharmony_ci value: "\uD834\uDF06A", 8219e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 8229e815959Sopenharmony_ci }, 8239e815959Sopenharmony_ci ], 8249e815959Sopenharmony_ci ], 8259e815959Sopenharmony_ci "Long numeric escape (non-BMP)", 8269e815959Sopenharmony_ci ], 8279e815959Sopenharmony_ci [ 8289e815959Sopenharmony_ci "fOo[baR]", 8299e815959Sopenharmony_ci [ 8309e815959Sopenharmony_ci [ 8319e815959Sopenharmony_ci { 8329e815959Sopenharmony_ci name: "fOo", 8339e815959Sopenharmony_ci type: SelectorType.Tag, 8349e815959Sopenharmony_ci namespace: null, 8359e815959Sopenharmony_ci }, 8369e815959Sopenharmony_ci { 8379e815959Sopenharmony_ci action: AttributeAction.Exists, 8389e815959Sopenharmony_ci name: "baR", 8399e815959Sopenharmony_ci type: SelectorType.Attribute, 8409e815959Sopenharmony_ci namespace: null, 8419e815959Sopenharmony_ci value: "", 8429e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 8439e815959Sopenharmony_ci }, 8449e815959Sopenharmony_ci ], 8459e815959Sopenharmony_ci ], 8469e815959Sopenharmony_ci "Mixed case tag and attribute name", 8479e815959Sopenharmony_ci ], 8489e815959Sopenharmony_ci 8499e815959Sopenharmony_ci // Namespaces 8509e815959Sopenharmony_ci [ 8519e815959Sopenharmony_ci "foo|bar", 8529e815959Sopenharmony_ci [ 8539e815959Sopenharmony_ci [ 8549e815959Sopenharmony_ci { 8559e815959Sopenharmony_ci name: "bar", 8569e815959Sopenharmony_ci type: SelectorType.Tag, 8579e815959Sopenharmony_ci namespace: "foo", 8589e815959Sopenharmony_ci }, 8599e815959Sopenharmony_ci ], 8609e815959Sopenharmony_ci ], 8619e815959Sopenharmony_ci "basic tag namespace", 8629e815959Sopenharmony_ci ], 8639e815959Sopenharmony_ci [ 8649e815959Sopenharmony_ci "*|bar", 8659e815959Sopenharmony_ci [ 8669e815959Sopenharmony_ci [ 8679e815959Sopenharmony_ci { 8689e815959Sopenharmony_ci name: "bar", 8699e815959Sopenharmony_ci type: SelectorType.Tag, 8709e815959Sopenharmony_ci namespace: "*", 8719e815959Sopenharmony_ci }, 8729e815959Sopenharmony_ci ], 8739e815959Sopenharmony_ci ], 8749e815959Sopenharmony_ci "star tag namespace", 8759e815959Sopenharmony_ci ], 8769e815959Sopenharmony_ci [ 8779e815959Sopenharmony_ci "|bar", 8789e815959Sopenharmony_ci [ 8799e815959Sopenharmony_ci [ 8809e815959Sopenharmony_ci { 8819e815959Sopenharmony_ci name: "bar", 8829e815959Sopenharmony_ci type: SelectorType.Tag, 8839e815959Sopenharmony_ci namespace: "", 8849e815959Sopenharmony_ci }, 8859e815959Sopenharmony_ci ], 8869e815959Sopenharmony_ci ], 8879e815959Sopenharmony_ci "without namespace", 8889e815959Sopenharmony_ci ], 8899e815959Sopenharmony_ci [ 8909e815959Sopenharmony_ci "*|*", 8919e815959Sopenharmony_ci [ 8929e815959Sopenharmony_ci [ 8939e815959Sopenharmony_ci { 8949e815959Sopenharmony_ci type: SelectorType.Universal, 8959e815959Sopenharmony_ci namespace: "*", 8969e815959Sopenharmony_ci }, 8979e815959Sopenharmony_ci ], 8989e815959Sopenharmony_ci ], 8999e815959Sopenharmony_ci "universal with namespace", 9009e815959Sopenharmony_ci ], 9019e815959Sopenharmony_ci [ 9029e815959Sopenharmony_ci "[foo|bar]", 9039e815959Sopenharmony_ci [ 9049e815959Sopenharmony_ci [ 9059e815959Sopenharmony_ci { 9069e815959Sopenharmony_ci action: AttributeAction.Exists, 9079e815959Sopenharmony_ci name: "bar", 9089e815959Sopenharmony_ci type: SelectorType.Attribute, 9099e815959Sopenharmony_ci namespace: "foo", 9109e815959Sopenharmony_ci value: "", 9119e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 9129e815959Sopenharmony_ci }, 9139e815959Sopenharmony_ci ], 9149e815959Sopenharmony_ci ], 9159e815959Sopenharmony_ci "basic attribute namespace, existential", 9169e815959Sopenharmony_ci ], 9179e815959Sopenharmony_ci [ 9189e815959Sopenharmony_ci "[|bar]", 9199e815959Sopenharmony_ci [ 9209e815959Sopenharmony_ci [ 9219e815959Sopenharmony_ci { 9229e815959Sopenharmony_ci action: AttributeAction.Exists, 9239e815959Sopenharmony_ci name: "bar", 9249e815959Sopenharmony_ci type: SelectorType.Attribute, 9259e815959Sopenharmony_ci namespace: null, 9269e815959Sopenharmony_ci value: "", 9279e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.Unknown, 9289e815959Sopenharmony_ci }, 9299e815959Sopenharmony_ci ], 9309e815959Sopenharmony_ci ], 9319e815959Sopenharmony_ci "without namespace, existential", 9329e815959Sopenharmony_ci ], 9339e815959Sopenharmony_ci [ 9349e815959Sopenharmony_ci "[foo|bar='baz' i]", 9359e815959Sopenharmony_ci [ 9369e815959Sopenharmony_ci [ 9379e815959Sopenharmony_ci { 9389e815959Sopenharmony_ci action: AttributeAction.Equals, 9399e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.IgnoreCase, 9409e815959Sopenharmony_ci name: "bar", 9419e815959Sopenharmony_ci type: SelectorType.Attribute, 9429e815959Sopenharmony_ci namespace: "foo", 9439e815959Sopenharmony_ci value: "baz", 9449e815959Sopenharmony_ci }, 9459e815959Sopenharmony_ci ], 9469e815959Sopenharmony_ci ], 9479e815959Sopenharmony_ci "basic attribute namespace, equality", 9489e815959Sopenharmony_ci ], 9499e815959Sopenharmony_ci [ 9509e815959Sopenharmony_ci "[*|bar='baz' i]", 9519e815959Sopenharmony_ci [ 9529e815959Sopenharmony_ci [ 9539e815959Sopenharmony_ci { 9549e815959Sopenharmony_ci action: AttributeAction.Equals, 9559e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.IgnoreCase, 9569e815959Sopenharmony_ci name: "bar", 9579e815959Sopenharmony_ci type: SelectorType.Attribute, 9589e815959Sopenharmony_ci namespace: "*", 9599e815959Sopenharmony_ci value: "baz", 9609e815959Sopenharmony_ci }, 9619e815959Sopenharmony_ci ], 9629e815959Sopenharmony_ci ], 9639e815959Sopenharmony_ci "star attribute namespace", 9649e815959Sopenharmony_ci ], 9659e815959Sopenharmony_ci [ 9669e815959Sopenharmony_ci "[type='a' S]", 9679e815959Sopenharmony_ci [ 9689e815959Sopenharmony_ci [ 9699e815959Sopenharmony_ci { 9709e815959Sopenharmony_ci action: AttributeAction.Equals, 9719e815959Sopenharmony_ci ignoreCase: IgnoreCaseMode.CaseSensitive, 9729e815959Sopenharmony_ci name: "type", 9739e815959Sopenharmony_ci type: SelectorType.Attribute, 9749e815959Sopenharmony_ci value: "a", 9759e815959Sopenharmony_ci namespace: null, 9769e815959Sopenharmony_ci }, 9779e815959Sopenharmony_ci ], 9789e815959Sopenharmony_ci ], 9799e815959Sopenharmony_ci "case-sensitive attribute selector", 9809e815959Sopenharmony_ci ], 9819e815959Sopenharmony_ci [ 9829e815959Sopenharmony_ci "foo || bar", 9839e815959Sopenharmony_ci [ 9849e815959Sopenharmony_ci [ 9859e815959Sopenharmony_ci { 9869e815959Sopenharmony_ci name: "foo", 9879e815959Sopenharmony_ci namespace: null, 9889e815959Sopenharmony_ci type: SelectorType.Tag, 9899e815959Sopenharmony_ci }, 9909e815959Sopenharmony_ci { 9919e815959Sopenharmony_ci type: SelectorType.ColumnCombinator, 9929e815959Sopenharmony_ci }, 9939e815959Sopenharmony_ci { 9949e815959Sopenharmony_ci name: "bar", 9959e815959Sopenharmony_ci namespace: null, 9969e815959Sopenharmony_ci type: SelectorType.Tag, 9979e815959Sopenharmony_ci }, 9989e815959Sopenharmony_ci ], 9999e815959Sopenharmony_ci ], 10009e815959Sopenharmony_ci "column combinator", 10019e815959Sopenharmony_ci ], 10029e815959Sopenharmony_ci [ 10039e815959Sopenharmony_ci "foo||bar", 10049e815959Sopenharmony_ci [ 10059e815959Sopenharmony_ci [ 10069e815959Sopenharmony_ci { 10079e815959Sopenharmony_ci name: "foo", 10089e815959Sopenharmony_ci namespace: null, 10099e815959Sopenharmony_ci type: SelectorType.Tag, 10109e815959Sopenharmony_ci }, 10119e815959Sopenharmony_ci { 10129e815959Sopenharmony_ci type: SelectorType.ColumnCombinator, 10139e815959Sopenharmony_ci }, 10149e815959Sopenharmony_ci { 10159e815959Sopenharmony_ci name: "bar", 10169e815959Sopenharmony_ci namespace: null, 10179e815959Sopenharmony_ci type: SelectorType.Tag, 10189e815959Sopenharmony_ci }, 10199e815959Sopenharmony_ci ], 10209e815959Sopenharmony_ci ], 10219e815959Sopenharmony_ci "column combinator without whitespace", 10229e815959Sopenharmony_ci ], 10239e815959Sopenharmony_ci]; 1024