mirror of
https://github.com/denoland/deno.git
synced 2024-11-26 16:09:27 -05:00
529f79505d
Fixes #21660 Adds a basic `Immediate` class to mirror `NodeJS.Immediate`, and changes `setImmediate` and `clearImmediate` to return and accept (respectively) `Immediate` objects. Note that for now {ref,unref,hasRef} are effectively stubs, as deno_core doesn't really natively support immediates (they're currently modeled as timers with delay of 0). Eventually we probably want to actually implement these properly.
72 lines
1.6 KiB
TypeScript
72 lines
1.6 KiB
TypeScript
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
import { assert, fail } from "@std/assert/mod.ts";
|
|
import * as timers from "node:timers";
|
|
import * as timersPromises from "node:timers/promises";
|
|
|
|
Deno.test("[node/timers setTimeout]", () => {
|
|
{
|
|
const { clearTimeout, setTimeout } = timers;
|
|
const id = setTimeout(() => {});
|
|
clearTimeout(id);
|
|
}
|
|
|
|
{
|
|
const id = timers.setTimeout(() => {});
|
|
timers.clearTimeout(id);
|
|
}
|
|
});
|
|
|
|
Deno.test("[node/timers setInterval]", () => {
|
|
{
|
|
const { clearInterval, setInterval } = timers;
|
|
const id = setInterval(() => {});
|
|
clearInterval(id);
|
|
}
|
|
|
|
{
|
|
const id = timers.setInterval(() => {});
|
|
timers.clearInterval(id);
|
|
}
|
|
});
|
|
|
|
Deno.test("[node/timers setImmediate]", () => {
|
|
{
|
|
const { clearImmediate, setImmediate } = timers;
|
|
const imm = setImmediate(() => {});
|
|
clearImmediate(imm);
|
|
}
|
|
|
|
{
|
|
const imm = timers.setImmediate(() => {});
|
|
timers.clearImmediate(imm);
|
|
}
|
|
});
|
|
|
|
Deno.test("[node/timers/promises setTimeout]", () => {
|
|
const { setTimeout } = timersPromises;
|
|
const p = setTimeout(0);
|
|
|
|
assert(p instanceof Promise);
|
|
return p;
|
|
});
|
|
|
|
// Regression test for https://github.com/denoland/deno/issues/17981
|
|
Deno.test("[node/timers refresh cancelled timer]", () => {
|
|
const { setTimeout, clearTimeout } = timers;
|
|
const p = setTimeout(() => {
|
|
fail();
|
|
}, 1);
|
|
clearTimeout(p);
|
|
p.refresh();
|
|
});
|
|
|
|
Deno.test("[node/timers setImmediate returns Immediate object]", () => {
|
|
const { clearImmediate, setImmediate } = timers;
|
|
|
|
const imm = setImmediate(() => {});
|
|
imm.unref();
|
|
imm.ref();
|
|
imm.hasRef();
|
|
clearImmediate(imm);
|
|
});
|