mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-12 21:53:00 -06:00
c23d66e3b5
* refactor: consolidate coercion ownership * test: align shard check with weighted planning * chore: refresh plugin SDK API baseline
51 lines
1.5 KiB
TypeScript
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}`,
|
|
);
|
|
},
|
|
);
|
|
});
|