1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- describe("basic behavior", () => {
- test("empty array", () => {
- var enteredFunction = false;
- var rejected = false;
- async function f() {
- enteredFunction = true;
- for await (const v of []) {
- expect().fail("Should not enter loop");
- }
- }
- f().then(
- () => {
- expect(enteredFunction).toBeTrue();
- },
- () => {
- rejected = true;
- }
- );
- runQueuedPromiseJobs();
- expect(enteredFunction).toBeTrue();
- expect(rejected).toBeFalse();
- });
- test("sync iterator", () => {
- var loopIterations = 0;
- var rejected = false;
- async function f() {
- for await (const v of [1]) {
- expect(v).toBe(1);
- loopIterations++;
- }
- }
- f().then(
- () => {
- expect(loopIterations).toBe(1);
- },
- () => {
- rejected = true;
- }
- );
- runQueuedPromiseJobs();
- expect(loopIterations).toBe(1);
- expect(rejected).toBeFalse();
- });
- });
- describe("only allowed in async functions", () => {
- test("async functions", () => {
- expect("async function foo() { for await (const v of []) return v; }").toEval();
- expect("(async function () { for await (const v of []) return v; })").toEval();
- expect("async () => { for await (const v of []) return v; }").toEval();
- });
- test("regular functions", () => {
- expect("function foo() { for await (const v of []) return v; }").not.toEval();
- expect("(function () { for await (const v of []) return v; })").not.toEval();
- expect("() => { for await (const v of []) return v; }").not.toEval();
- });
- test("generator functions", () => {
- expect("function* foo() { for await (const v of []) return v; }").not.toEval();
- expect("(function* () { for await (const v of []) return v; })").not.toEval();
- });
- test("async generator functions", () => {
- expect("async function* foo() { for await (const v of []) yield v; }").toEval();
- expect("(async function* () { for await (const v of []) yield v; })").toEval();
- });
- });
|