<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/console-test.js"></script>
<script src="../../http/tests/inspector/elements-test.js"></script>
<script>

var test = function()
{
    var expressions = [
        "String($0)",
        "$3",
        "String(keys([3,4]))",
        "String(values([3,4]))",
        "String($('#foo'))",
        "String($('#foo', document.body))",
        "String($('#foo', 'non-node'))",
        "String($('#foo', $('#bar')))",
        "String($$('p#foo'))",
        "String($$('p#foo', document.body))",
        "String($('foo'))"
    ];

    InspectorTest.selectNodeWithId("foo", step1);

    function step1(node)
    {
        if (!expressions.length) {
            InspectorTest.dumpConsoleMessages();
            InspectorTest.completeTest();
            return;
        }
        var expression = expressions[0];
        expressions.splice(0, 1);
        WebInspector.log("\n");
        InspectorTest.evaluateInConsole(expression, step1);
    }
}

</script>
</head>

<body onload="runTest()">
<p id="foo">
Tests that command line api works.
</p><p id="bar"></p>

</body>
</html>
