blob: e331c466a5a15e8d3814c3ae9a96dadc1975d1e3 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult('Tests that evaluation with top-level await may be perfomed in console.');
await TestRunner.loadModule('console_test_runner');
await TestRunner.showPanel('console');
await TestRunner.evaluateInPagePromise(`
function foo(x) {
return x;
}
function koo() {
return Promise.resolve(4);
}
`);
var test = ConsoleTestRunner.evaluateInConsolePromise;
await test('await Promise.resolve(1)');
await test('{a:await Promise.resolve(1)}');
await test('$_');
await test('let {a,b} = await Promise.resolve({a: 1, b:2}), f = 5;');
await test('a');
await test('b');
await test('let c = await Promise.resolve(2)');
await test('c');
await test('let d;');
await test('d');
await test('let [i,{abc:{k}}] = [0,{abc:{k:1}}];');
await test('i');
await test('k');
await test('var l = await Promise.resolve(2);');
await test('l');
await test('foo(await koo());');
await test('$_');
await test('const m = foo(await koo());');
await test('m');
await test('const n = foo(await\nkoo());');
await test('n');
await test('`status: ${(await Promise.resolve({status:200})).status}`');
await test('for (let i = 0; i < 2; ++i) await i');
await test('for (let i = 0; i < 2; ++i) { await i }');
await test('await 0');
await test('await 0;function foo(){}');
await test('foo');
await test('class Foo{}; await 1;');
await test('Foo');
await test('await 0;function* gen(){}');
await test('for (var i = 0; i < 10; ++i) { await i; }')
await test('i');
await test('for (let j = 0; j < 5; ++j) { await j; }')
await test('j');
await test('gen');
await test('await 5; return 42;');
await test('let o = await 1, p');
await test('p');
await test('let q = 1, s = await 2');
await test('s');
await new Promise(resolve => ConsoleTestRunner.waitForRemoteObjectsConsoleMessages(resolve));
ConsoleTestRunner.dumpConsoleMessages();
TestRunner.completeTest();
})();