<p>This test reports the value that document.all returns for various null-like arguments.</p>
<p>Written for <a href="http://bugs.webkit.org/show_bug.cgi?id=13106">http://bugs.webkit.org/show_bug.cgi?id=13106</a>.</p>
<hr>
<pre id="log"></pre>

<script>
function log(s)
{
    document.getElementById("log").appendChild(document.createTextNode(s));
}

function getDescription(value)
{
    if (value === undefined)
        return "undefined";
    if (value === null)
        return "null";
    if (typeof value == "number")
        return value;
    if (typeof value == "string")
        return '"' + value + '"';

    return "unknown description";
}

window.onload = function onload()
{
    if ("testRunner" in this)
        testRunner.dumpAsText();

    var arguments = [
        0,
        "",
        "0",
        undefined,
        null
    ];
    
    for (var i = 0; i < arguments.length; i++) { //>
        var value = arguments[i];
        var description = getDescription(value);
        log("document.all[" + description + "]:      " + document.all[value] + "\n");
        log("document.all(" + description + "):      " + document.all(value) + "\n");
        log("document.all.item(" + description + "): " + document.all.item(value) + "\n");
        log("\n");
    }
}

</script>
