| <!DOCTYPE html> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| </head> |
| <body> |
| <div id="test-cases" style="display:none;"> |
| <CONTAINER class="container1"> |
| <container class="container2"> |
| <Container class="container3"> |
| <target id="target1"></target> |
| </Container> |
| </container> |
| </CONTAINER> |
| <svg xmlns="http://www.w3.org/2000/svg"> |
| <CONTAINER class="container1"> |
| <container class="container2"> |
| <Container class="container3"> |
| <target id="target2"></target> |
| </Container> |
| </container> |
| </CONTAINER> |
| </svg> |
| </div> |
| </body> |
| <script><![CDATA[ |
| description("Test tagname's case-sensitivity when matching SVG-in-XHTML with Element.closest()."); |
| |
| var testCases = document.getElementById("test-cases"); |
| |
| var svgDocument = new DOMParser().parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><CONTAINER class="container1"><container class="container2"><Container class="container3"><target id="target3"></target></Container></container></CONTAINER></svg>', 'text/xml'); |
| testCases.appendChild(document.importNode(svgDocument.documentElement, true)); |
| |
| function testSelector(sourceID, selector, expectedClass) |
| { |
| if (expectedClass) |
| shouldBeEqualToString("document.getElementById('" + sourceID + "').closest('" + selector + "').getAttribute('class')", '' + expectedClass); |
| else |
| shouldBe("document.getElementById('" + sourceID + "').closest('" + selector + "')", "null"); |
| } |
| |
| debug("Basic cases, tagname alone."); |
| testSelector("target1", "Container", "container3"); |
| testSelector("target1", "container", "container2"); |
| testSelector("target1", "CONTAINER", "container1"); |
| |
| testSelector("target2", "Container", "container3"); |
| testSelector("target2", "container", "container2"); |
| testSelector("target2", "CONTAINER", "container1"); |
| |
| testSelector("target3", "Container", "container3"); |
| testSelector("target3", "container", "container2"); |
| testSelector("target3", "CONTAINER", "container1"); |
| |
| debug(""); |
| debug("Compound selectors."); |
| testSelector("target1", "Container[class^=\"container\"]", "container3"); |
| testSelector("target1", "container[class^=\"container\"]", "container2"); |
| testSelector("target1", "CONTAINER[class^=\"container\"]", "container1"); |
| |
| testSelector("target2", "Container[class^=\"container\"]", "container3"); |
| testSelector("target2", "container[class^=\"container\"]", "container2"); |
| testSelector("target2", "CONTAINER[class^=\"container\"]", "container1"); |
| |
| testSelector("target3", "Container[class^=\"container\"]", "container3"); |
| testSelector("target3", "container[class^=\"container\"]", "container2"); |
| testSelector("target3", "CONTAINER[class^=\"container\"]", "container1"); |
| |
| debug(""); |
| debug("Complex selectors."); |
| testSelector("target1", "div Container", "container3"); |
| testSelector("target1", "div container", "container2"); |
| testSelector("target1", "div CONTAINER", "container1"); |
| |
| testSelector("target2", "div Container", "container3"); |
| testSelector("target2", "div container", "container2"); |
| testSelector("target2", "div CONTAINER", "container1"); |
| |
| testSelector("target3", "div Container", "container3"); |
| testSelector("target3", "div container", "container2"); |
| testSelector("target3", "div CONTAINER", "container1"); |
| |
| testSelector("target3", "container > Container", "container3"); |
| testSelector("target3", "CONTAINER > Container"); |
| testSelector("target3", "Container > Container"); |
| testSelector("target3", "CONTAINER > container", "container2"); |
| testSelector("target3", "Container > container"); |
| testSelector("target3", "container > container"); |
| |
| ]]></script> |
| <script src="../../resources/js-test-post.js"></script> |
| </html> |