<p>
This page tests the empty string used as a property name. If the test passes,
you'll see a PASS message below.
</p>

<pre id="console"></pre>

<script>
if (window.testRunner)
    testRunner.dumpAsText();

(function() {
    function log(s)
    {
        if (this.document)
            document.getElementById("console").appendChild(document.createTextNode(s));
        else
            print(s);
    }
    
    function shouldBe(a, aDescription, b)
    {
        if (a === b) {
            log("PASS: " + aDescription + " should be " + b + " and is.\n");
        } else {
            log("FAIL: " + aDescription + " should be " + b + " but instead is " + a + ".\n");
        }
    }
    
    var o = { x: 1 };
    o[""] = 1;
    shouldBe(o[""], 'o[""]', 1);
})();
</script>
