<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<div class="one">
    Line 1
    <div class="two">Line 2</div>
    <p>Line <i>3</i></p>
</div>
<div id="test" class="one two">
    <div id="me"></div>
    <div id="dupe"></div>
    <div id="dupe"></div>
    <div id="Test2" class="one two">line 4</div>
    <p class="two">line 5</p>
</div>

<pre id="console"></pre>
<script type="text/javascript">
    if (window.testRunner)
        testRunner.dumpAsText();

    function log(message)
    {
        document.getElementById('console').appendChild(document.createTextNode(message + "\n"));
    }
    
    Element.prototype.dump = function()
    {
        return this;
    }
    
    NodeList.prototype.dump = function()
    {
        var result = "";
        var length = this.length;
        for (var i = 0; i < length; i++)
            result += this[i] + ", ";
        result += "length: " + length;
        return result;
    }

    testQuerySelectorAll = function(node, selectorString)
    {
        try {
            log(node.querySelectorAll(selectorString).dump());
        } catch (e) {
            log(e);
        }
    }

    testQuerySelector = function(node, selectorString)
    {
        try {
            log(node.querySelector(selectorString).dump());
        } catch (e) {
            log(e);
        }
    }

    var elm = document.getElementById("test");

    var tagString = elm.outerHTML;
    var range = document.createRange();
    range.selectNode(elm);
    var frag = range.createContextualFragment(tagString);

    log("Document.querySelectorAll");
    log("");

    testQuerySelectorAll(document, "#test");
    testQuerySelectorAll(document, "#notthere");
    testQuerySelectorAll(document, "#dupe");
    testQuerySelectorAll(document, ".two");
    testQuerySelectorAll(document, ".one, .two");
    testQuerySelectorAll(document, "@font-face");
    testQuerySelectorAll(document, "");
    testQuerySelectorAll(document, null);
    testQuerySelectorAll(document, undefined);
    testQuerySelectorAll(document, "#test>div");

    log("");
    log("Element.querySelectorAll");
    log("");

    testQuerySelectorAll(elm, "#test");
    testQuerySelectorAll(elm, "#Test2");
    testQuerySelectorAll(elm, "#notthere");
    testQuerySelectorAll(elm, "#dupe");
    testQuerySelectorAll(elm, ".two");
    testQuerySelectorAll(elm, ".one, .two");
    testQuerySelectorAll(elm, "@font-face");
    testQuerySelectorAll(elm, "");
    testQuerySelectorAll(elm, null);
    testQuerySelectorAll(elm, undefined);

    log("");
    log("DocumentFragment.querySelectorAll");
    log("");

    testQuerySelectorAll(frag, "#test");
    testQuerySelectorAll(frag, "#Test2");
    testQuerySelectorAll(frag, "#notthere");
    testQuerySelectorAll(frag, "#dupe");
    testQuerySelectorAll(frag, ".two");
    testQuerySelectorAll(frag, ".one, .two");
    testQuerySelectorAll(frag, "@font-face");
    testQuerySelectorAll(frag, "");
    testQuerySelectorAll(frag, null);
    testQuerySelectorAll(frag, undefined);

    log("");
    log("Document.querySelector");
    log("");

    testQuerySelector(document, "#test");
    testQuerySelector(document, "#notthere");
    testQuerySelector(document, "#dupe");
    testQuerySelector(document, ".two");
    testQuerySelector(document, ".one, .two");
    testQuerySelector(document, "@font-face");
    testQuerySelector(document, "");
    testQuerySelector(document, null);
    testQuerySelector(document, undefined);

    log("");
    log("Element.querySelector");
    log("");

    testQuerySelector(elm, "#test");
    testQuerySelector(elm, "#Test2");
    testQuerySelector(elm, "#notthere");
    testQuerySelector(elm, "#dupe");
    testQuerySelector(elm, ".two");
    testQuerySelector(elm, ".one, .two");
    testQuerySelector(elm, "@font-face");
    testQuerySelector(elm, "");
    testQuerySelector(elm, null);
    testQuerySelector(elm, undefined);

    log("");
    log("DocumentFragment.querySelector");
    log("");

    testQuerySelector(frag, "#test");
    testQuerySelector(frag, "#Test2");
    testQuerySelector(frag, "#notthere");
    testQuerySelector(frag, "#dupe");
    testQuerySelector(frag, ".two");
    testQuerySelector(frag, ".one, .two");
    testQuerySelector(frag, "@font-face");
    testQuerySelector(frag, "");
    testQuerySelector(frag, null);
    testQuerySelector(frag, undefined);
</script>
</body>
</html>
