import { Command } from "commander"; import { describe, expect, it } from "vitest"; import { collectOption, parsePositiveIntOrUndefined, resolveActionArgs } from "./helpers.js"; describe("program helpers", () => { it("collectOption appends values in order", () => { expect(collectOption("a")).toEqual(["a"]); expect(collectOption("b", ["a"])).toEqual(["a", "b"]); }); it.each([ { value: undefined, expected: undefined }, { value: null, expected: undefined }, { value: "", expected: undefined }, { value: 5, expected: 5 }, { value: 5.9, expected: 5 }, { value: 0, expected: undefined }, { value: -1, expected: undefined }, { value: Number.NaN, expected: undefined }, { value: "10", expected: 10 }, { value: "10ms", expected: 10 }, { value: "0", expected: undefined }, { value: "nope", expected: undefined }, { value: true, expected: undefined }, ])("parsePositiveIntOrUndefined(%j)", ({ value, expected }) => { expect(parsePositiveIntOrUndefined(value)).toBe(expected); }); it("resolveActionArgs returns args when command has arg array", () => { const command = new Command(); (command as Command & { args?: string[] }).args = ["one", "two"]; expect(resolveActionArgs(command)).toEqual(["one", "two"]); }); it("resolveActionArgs returns empty array for missing/invalid args", () => { const command = new Command(); (command as unknown as { args?: unknown }).args = "not-an-array"; expect(resolveActionArgs(command)).toEqual([]); expect(resolveActionArgs(undefined)).toEqual([]); }); });