/// import { describe, expect, test } from "bun:test"; import { parseDuration, toDurationStr } from "./timers"; const Nanosecond = 1n; const Microsecond = 1000n * Nanosecond; const Millisecond = 1000n * Microsecond; const Second = 1000n * Millisecond; const Minute = 60n * Second; const Hour = 60n * Minute; describe("timers", () => { test.each([ ["0s", 0n], ["1ns", 1n * Nanosecond], ["1.1µs", 1100n * Nanosecond], ["2.2ms", 2200n * Microsecond], ["3.3s", 3300n * Millisecond], ["4m5s", 4n * Minute + 5n * Second], ["4m5.001s", 4n * Minute + 5001n * Millisecond], ["5h6m7.001s", 5n * Hour + 6n * Minute + 7001n * Millisecond], ["8m0.000000001s", 8n * Minute + 1n * Nanosecond], ["9241h32m0.000000001s", 9241n * Hour + 32n * Minute + 1n * Nanosecond], ["-9241h32m0.000000001s", -(9241n * Hour + 32n * Minute + 1n * Nanosecond)], ])("toDurationStr: %s", (expected: string, input: bigint) => { const seconds = Number(input / Second); const nanoseconds = Number(input % Second); const asStr = toDurationStr([seconds, Math.abs(nanoseconds)]); expect(asStr).toEqual(expected); expect(parseDuration(asStr)).toEqual([seconds, nanoseconds]); }); });