diff options
Diffstat (limited to 'integration/bunjs-only-snippets/process-nexttick.test.js')
| -rw-r--r-- | integration/bunjs-only-snippets/process-nexttick.test.js | 93 | 
1 files changed, 93 insertions, 0 deletions
| diff --git a/integration/bunjs-only-snippets/process-nexttick.test.js b/integration/bunjs-only-snippets/process-nexttick.test.js new file mode 100644 index 000000000..ac53399c0 --- /dev/null +++ b/integration/bunjs-only-snippets/process-nexttick.test.js @@ -0,0 +1,93 @@ +import { it } from "bun:test"; + +it("process.nextTick", async () => { +  // You can verify this test is correct by copy pasting this into a browser's console and checking it doesn't throw an error. +  var run = 0; +  var queueMicrotask = process.nextTick; + +  await new Promise((resolve, reject) => { +    queueMicrotask(() => { +      if (run++ != 0) { +        reject(new Error("Microtask execution order is wrong: " + run)); +      } +      queueMicrotask(() => { +        if (run++ != 3) { +          reject(new Error("Microtask execution order is wrong: " + run)); +        } +      }); +    }); +    queueMicrotask(() => { +      if (run++ != 1) { +        reject(new Error("Microtask execution order is wrong: " + run)); +      } +      queueMicrotask(() => { +        if (run++ != 4) { +          reject(new Error("Microtask execution order is wrong: " + run)); +        } + +        queueMicrotask(() => { +          if (run++ != 6) { +            reject(new Error("Microtask execution order is wrong: " + run)); +          } +        }); +      }); +    }); +    queueMicrotask(() => { +      if (run++ != 2) { +        reject(new Error("Microtask execution order is wrong: " + run)); +      } +      queueMicrotask(() => { +        if (run++ != 5) { +          reject(new Error("Microtask execution order is wrong: " + run)); +        } + +        queueMicrotask(() => { +          if (run++ != 7) { +            reject(new Error("Microtask execution order is wrong: " + run)); +          } +          resolve(true); +        }); +      }); +    }); +  }); + +  { +    var passed = false; +    try { +      queueMicrotask(1234); +    } catch (exception) { +      passed = exception instanceof TypeError; +    } + +    if (!passed) +      throw new Error( +        "queueMicrotask should throw a TypeError if the argument is not a function" +      ); +  } + +  { +    var passed = false; +    try { +      queueMicrotask(); +    } catch (exception) { +      passed = exception instanceof TypeError; +    } + +    if (!passed) +      throw new Error( +        "queueMicrotask should throw a TypeError if the argument is empty" +      ); +  } + +  await new Promise((resolve, reject) => { +    process.nextTick( +      (first, second) => { +        if (first !== 12345 || second !== "hello") +          reject(new Error("process.nextTick called with wrong arguments")); +        resolve(true); +      }, +      12345, +      "hello" +    ); +  }); +}); | 
