<p>This tests verifies that the Function constructor creates functions
    with the correct 'this' and 'window' in scope.
</p>
<pre id="console"></pre>

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

function shouldBe(a, aDescription, b)
{
    if (a == b) {
        log("PASS: " + aDescription + " should be " + b + " and is.");
        return;
    }
    log("FAIL: " + aDescription + " should be " + b + " but instead is " + a + ".");
}

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

var target = open("about:blank");
var result = (target.Function("", "return { 'this': this, 'window': window };"))();
target.close();

shouldBe(result['this'].location.href, "result['this'].location.href", "about:blank");
shouldBe(result['window'].location.href, "result['window'].location.href", "about:blank");

if (window.testRunner)
    testRunner.notifyDone();
</script>
