<!doctype html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
    <div id="with-renderer">
        <!-- With renderer -->
        <rect class="target1"></rect>
        <Rect class="target2"></Rect>
        <RECT class="target3"></RECT>
        <xml xmlns="https://www.webkit.org/awesome">
            <rect class="target4"></rect>
            <Rect class="target5"></Rect>
            <RECT class="target6"></RECT>
        </xml>
    </div>
    <div id="without-renderer" style="display:none;">
        <!-- Without renderer -->
        <rect class="target1"></rect>
        <Rect class="target2"></Rect>
        <RECT class="target3"></RECT>
        <xml xmlns="https://www.webkit.org/awesome">
            <rect class="target4"></rect>
            <Rect class="target5"></Rect>
            <RECT class="target6"></RECT>
        </xml>
    </div>
</body>
<script>
description("Test tagname's case-sensitivity when matching XML-in-HTML with querySelector.");

var withRenderer = document.getElementById("with-renderer");
var withoutRenderer = document.getElementById("without-renderer");

var xmlDocument = new DOMParser().parseFromString('<xml xmlns="https://www.webkit.org/awesome"><rect class="target7"></rect><Rect class="target8"></Rect><RECT class="target9"></RECT></xml>', 'text/xml');
withRenderer.appendChild(document.importNode(xmlDocument.documentElement, true));
withoutRenderer.appendChild(document.importNode(xmlDocument.documentElement, true));

function testSelector(selector, expectedClasses)
{
    shouldBe("document.getElementById('with-renderer').querySelectorAll('" + selector + "').length", '' + expectedClasses.length);
    shouldBe("document.getElementById('without-renderer').querySelectorAll('" + selector + "').length", '' + expectedClasses.length);
    for (var i = 0; i < expectedClasses.length; ++i) {
        shouldBeEqualToString("document.getElementById(\"with-renderer\").querySelectorAll('" + selector + "')[" + i + "].getAttribute('class')", "target" + expectedClasses[i]);
        shouldBeEqualToString("document.getElementById(\"without-renderer\").querySelectorAll('" + selector + "')[" + i + "].getAttribute('class')", "target" + expectedClasses[i]);
    }
}

debug("Basic cases, tagname alone.");
testSelector("rect", [1, 2, 3, 4, 5, 6, 7]);
testSelector("Rect", [1, 2, 3, 4, 5, 6, 8]);
testSelector("RECT", [1, 2, 3, 4, 5, 6, 9]);

debug("");
debug("Compound selectors.");
testSelector("rect[class]", [1, 2, 3, 4, 5, 6, 7]);
testSelector("Rect[class]", [1, 2, 3, 4, 5, 6, 8]);
testSelector("RECT[class]", [1, 2, 3, 4, 5, 6, 9]);
testSelector("rect[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 7]);
testSelector("Rect[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 8]);
testSelector("RECT[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 9]);

debug("");
debug("Complex selectors.");
testSelector("xml > rect[class]", [4, 5, 6, 7]);
testSelector("xml > Rect[class]", [4, 5, 6, 8]);
testSelector("xml > RECT[class]", [4, 5, 6, 9]);
testSelector("xml > rect[class^=\"target\"]", [4, 5, 6, 7]);
testSelector("xml > Rect[class^=\"target\"]", [4, 5, 6, 8]);
testSelector("xml > RECT[class^=\"target\"]", [4, 5, 6, 9]);

testSelector("div rect[class]", [1, 2, 3, 4, 5, 6, 7]);
testSelector("div Rect[class]", [1, 2, 3, 4, 5, 6, 8]);
testSelector("div RECT[class]", [1, 2, 3, 4, 5, 6, 9]);
testSelector("div rect[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 7]);
testSelector("div Rect[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 8]);
testSelector("div RECT[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 9]);

testSelector(":root div rect[class]", [1, 2, 3, 4, 5, 6, 7]);
testSelector(":root div Rect[class]", [1, 2, 3, 4, 5, 6, 8]);
testSelector(":root div RECT[class]", [1, 2, 3, 4, 5, 6, 9]);
testSelector(":root div rect[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 7]);
testSelector(":root div Rect[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 8]);
testSelector(":root div RECT[class^=\"target\"]", [1, 2, 3, 4, 5, 6, 9]);

debug("");
debug("With functional pseudo classes.");
testSelector(":root div :matches(not-there, rect[class])", [1, 2, 3, 4, 5, 6, 7]);
testSelector(":root div :matches(not-there, Rect[class])", [1, 2, 3, 4, 5, 6, 8]);
testSelector(":root div :matches(not-there, RECT[class])", [1, 2, 3, 4, 5, 6, 9]);
testSelector(":root div :matches(not-there, rect[class^=\"target\"])", [1, 2, 3, 4, 5, 6, 7]);
testSelector(":root div :matches(not-there, Rect[class^=\"target\"])", [1, 2, 3, 4, 5, 6, 8]);
testSelector(":root div :matches(not-there, RECT[class^=\"target\"])", [1, 2, 3, 4, 5, 6, 9]);

testSelector(":root div :nth-child(n of not-there, rect[class])", [1, 2, 3, 4, 5, 6, 7]);
testSelector(":root div :nth-child(n of not-there, Rect[class])", [1, 2, 3, 4, 5, 6, 8]);
testSelector(":root div :nth-child(n of not-there, RECT[class])", [1, 2, 3, 4, 5, 6, 9]);
testSelector(":root div :nth-child(n of not-there, rect[class^=\"target\"])", [1, 2, 3, 4, 5, 6, 7]);
testSelector(":root div :nth-child(n of not-there, Rect[class^=\"target\"])", [1, 2, 3, 4, 5, 6, 8]);
testSelector(":root div :nth-child(n of not-there, RECT[class^=\"target\"])", [1, 2, 3, 4, 5, 6, 9]);

// Remove the content otherwise it will appear in the results.
withRenderer.style.display = 'none';
</script>
<script src="../../resources/js-test-post.js"></script>
</html>
