summary refs log tree commit diff
path: root/src/extensions/Stopwatch.test.ts
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-06-12 16:27:38 +0200
committerRory& <root@rory.gay>2026-06-12 17:58:18 +0200
commit03ecae4348182885b8aa06d2b42c2e7da88923b2 (patch)
treed6101462a387ff6523fce39fa0bdb58789a797ef /src/extensions/Stopwatch.test.ts
parentMove migrations to database (diff)
downloadserver-ts-03ecae4348182885b8aa06d2b42c2e7da88923b2.tar.xz
Move more extensions to extensions
Diffstat (limited to 'src/extensions/Stopwatch.test.ts')
-rw-r--r--src/extensions/Stopwatch.test.ts54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/extensions/Stopwatch.test.ts b/src/extensions/Stopwatch.test.ts
new file mode 100644

index 00000000..35618314 --- /dev/null +++ b/src/extensions/Stopwatch.test.ts
@@ -0,0 +1,54 @@ +import { describe, test } from "node:test"; +import assert from "node:assert/strict"; +import { Stopwatch, timePromise } from "./Stopwatch"; + +describe("Stopwatch", () => { + test("should be able to be initialised", () => { + const sw = new Stopwatch(); + assert.equal(sw != null, true); + }); + + test("should measure elapsed time", async () => { + const sw = Stopwatch.startNew(); + await new Promise((resolve) => void setTimeout(resolve, 101)); + sw.stop(); + const elapsed = sw.elapsed(); + assert(elapsed.totalMilliseconds >= 100, `Elapsed time was ${elapsed.totalMilliseconds} ms`); + }); + + test("should reset correctly", async () => { + const sw = Stopwatch.startNew(); + await new Promise((resolve) => void setTimeout(resolve, 101)); + sw.stop(); + let elapsed = sw.elapsed(); + assert(elapsed.totalMilliseconds >= 100, `Elapsed time was ${elapsed.totalMilliseconds} ms`); + + sw.reset(); + await new Promise((resolve) => void setTimeout(resolve, 50)); + sw.stop(); + elapsed = sw.elapsed(); + assert(elapsed.totalMilliseconds >= 49 && elapsed.totalMilliseconds < 100, `Elapsed time after reset was ${elapsed.totalMilliseconds} ms`); + }); + + test("getElapsedAndReset should work correctly", async () => { + const sw = Stopwatch.startNew(); + await new Promise((resolve) => void setTimeout(resolve, 101)); + sw.stop(); + let elapsed = sw.getElapsedAndReset(); + assert(elapsed.totalMilliseconds >= 100, `Elapsed time was ${elapsed.totalMilliseconds} ms`); + + await new Promise((resolve) => void setTimeout(resolve, 50)); + sw.stop(); + elapsed = sw.elapsed(); + assert(elapsed.totalMilliseconds >= 50 && elapsed.totalMilliseconds < 100, `Elapsed time after getElapsedAndReset was ${elapsed.totalMilliseconds} ms`); + }); + + test("timePromise should measure promise execution time", async () => { + const { result, elapsed } = await timePromise(async () => { + await new Promise((resolve) => void setTimeout(resolve, 101)); + return 42; + }); + assert.equal(result, 42); + assert(elapsed.totalMilliseconds >= 100, `Elapsed time was ${elapsed.totalMilliseconds} ms`); + }); +});