1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- describe("parsing freestanding async functions", () => {
- test("simple", () => {
- expect(`async function foo() {}`).toEval();
- expect(`async
- function foo() {}`).not.toEval();
- });
- test("await expression", () => {
- expect(`async function foo() { await bar(); }`).toEval();
- expect(`async function foo() { await; }`).not.toEval();
- expect(`function foo() { await bar(); }`).not.toEval();
- expect(`function foo() { await; }`).toEval();
- });
- });
- describe("parsing object literal async functions", () => {
- test("simple", () => {
- expect(`x = { async foo() { } }`).toEval();
- expect(`x = { async
- foo() { } }`).not.toEval();
- });
- test("await expression", () => {
- expect(`x = { foo() { await bar(); } }`).not.toEval();
- expect(`x = { foo() { await; } }`).toEval();
- expect(`x = { async foo() { await bar(); } }`).toEval();
- expect(`x = { async foo() { await; } }`).not.toEval();
- });
- });
- describe("parsing classes with async methods", () => {
- test("simple", () => {
- expect(`class Foo { async foo() {} }`).toEval();
- expect(`class Foo { static async foo() {} }`).toEval();
- expect(`class Foo { async foo() { await bar(); } }`).toEval();
- expect(`class Foo { async foo() { await; } }`).not.toEval();
- expect(`class Foo { async constructor() {} }`).not.toEval();
- });
- });
- test("function expression names equal to 'await'", () => {
- expect(`async function foo() { (function await() {}); }`).toEval();
- expect(`async function foo() { function await() {} }`).not.toEval();
- });
- test("basic functionality", () => {
- test("simple", () => {
- let executionValue = null;
- let resultValue = null;
- async function foo() {
- executionValue = "someValue";
- return "otherValue";
- }
- const returnValue = foo();
- expect(returnValue).toBeInstanceOf(Promise);
- returnValue.then(result => {
- resultValue = result;
- });
- runQueuedPromiseJobs();
- expect(executionValue).toBe("someValue");
- expect(resultValue).toBe("otherValue");
- });
- test("await", () => {
- let resultValue = null;
- async function foo() {
- return "someValue";
- }
- async function bar() {
- resultValue = await foo();
- }
- bar();
- runQueuedPromiseJobs();
- expect(resultValue).toBe("someValue");
- });
- });
|