import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
it.each([
["scale", 0, 4, "scale must be between 1 and 12."],
["scale", 13, 4, "scale must be between 1 and 12."],
["scale", Number.NaN, 4, "scale must be a finite number."],
["marginModules", 6, -1, "marginModules must be between 0 and 16."],
["marginModules", 6, 17, "marginModules must be between 0 and 16."],
["marginModules", 6, Number.POSITIVE_INFINITY, "marginModules must be a finite number."],
])("rejects invalid %s values", async (_name, scale, marginModules, message) => {
await expect(renderQrPngBase64("openclaw", { scale, marginModules })).rejects.toThrow(message);
expect(renderPngBase64).not.toHaveBeenCalled();
});
it("formats QR PNG data URLs", async () => {
expect(formatQrPngDataUrl(MOCK_PNG_BASE64)).toBe(`data:image/png;base64,${MOCK_PNG_BASE64}`);
await expect(renderQrPngDataUrl("openclaw")).resolves.toBe(
`data:image/png;base64,${MOCK_PNG_BASE64}`,
);
});
it("writes QR PNGs to a scoped temp file", async () => {
await fs.mkdir(tmpRoot, { recursive: true });
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.