Files
openclaw/test/scripts/numeric-options.test.ts
T
Peter Steinberger c23d66e3b5 refactor: consolidate coercion ownership (#122692)
* refactor: consolidate coercion ownership

* test: align shard check with weighted planning

* chore: refresh plugin SDK API baseline
2026-08-12 09:25:28 -07:00

51 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
parseStrictNonNegativeDecimal,
readPositiveEnvInt,
} from "../../scripts/lib/numeric-options.mjs";
describe("parseStrictNonNegativeDecimal", () => {
it.each([
["0", 0],
[" 42 ", 42],
[42, 42],
])("parses canonical decimal value %j", (raw, expected) => {
expect(parseStrictNonNegativeDecimal(raw, "limit")).toBe(expected);
});
it.each(["", "00", "01", "+1", "-1", "1.5", "1e3", "0x10"])(
"rejects non-canonical value %j",
(raw) => {
expect(() => parseStrictNonNegativeDecimal(raw, "limit")).toThrow(
"limit must be a non-negative integer",
);
},
);
it("distinguishes unsafe canonical integers", () => {
expect(() => parseStrictNonNegativeDecimal("9007199254740992", "limit")).toThrow(
"limit must be a safe integer",
);
});
});
describe("readPositiveEnvInt", () => {
it("uses the fallback for missing or blank values", () => {
expect(readPositiveEnvInt("LIMIT", {}, 42)).toBe(42);
expect(readPositiveEnvInt("LIMIT", { LIMIT: " " }, 42)).toBe(42);
});
it("reads strict positive safe integers", () => {
expect(readPositiveEnvInt("LIMIT", { LIMIT: " 123 " }, 42)).toBe(123);
});
it.each(["0", "-1", "1.5", "1e3", "0x10", "9007199254740992"])(
"rejects invalid value %s",
(raw) => {
expect(() => readPositiveEnvInt("LIMIT", { LIMIT: raw }, 42)).toThrow(
`invalid LIMIT: ${raw}`,
);
},
);
});