67 lines
1.7 KiB
TypeScript
67 lines
1.7 KiB
TypeScript
import { describe, expect, test } from "bun:test"
|
|
import { cycleModelVariant, getConfiguredAgentVariant, resolveModelVariant } from "./model-variant"
|
|
|
|
describe("model variant", () => {
|
|
test("resolves configured agent variant when model matches", () => {
|
|
const value = getConfiguredAgentVariant({
|
|
agent: {
|
|
model: { providerID: "openai", modelID: "gpt-5.2" },
|
|
variant: "xhigh",
|
|
},
|
|
model: {
|
|
providerID: "openai",
|
|
modelID: "gpt-5.2",
|
|
variants: { low: {}, high: {}, xhigh: {} },
|
|
},
|
|
})
|
|
|
|
expect(value).toBe("xhigh")
|
|
})
|
|
|
|
test("ignores configured variant when model does not match", () => {
|
|
const value = getConfiguredAgentVariant({
|
|
agent: {
|
|
model: { providerID: "openai", modelID: "gpt-5.2" },
|
|
variant: "xhigh",
|
|
},
|
|
model: {
|
|
providerID: "anthropic",
|
|
modelID: "claude-sonnet-4",
|
|
variants: { low: {}, high: {}, xhigh: {} },
|
|
},
|
|
})
|
|
|
|
expect(value).toBeUndefined()
|
|
})
|
|
|
|
test("prefers selected variant over configured variant", () => {
|
|
const value = resolveModelVariant({
|
|
variants: ["low", "high", "xhigh"],
|
|
selected: "high",
|
|
configured: "xhigh",
|
|
})
|
|
|
|
expect(value).toBe("high")
|
|
})
|
|
|
|
test("cycles from configured variant to next", () => {
|
|
const value = cycleModelVariant({
|
|
variants: ["low", "high", "xhigh"],
|
|
selected: undefined,
|
|
configured: "high",
|
|
})
|
|
|
|
expect(value).toBe("xhigh")
|
|
})
|
|
|
|
test("wraps from configured last variant to first", () => {
|
|
const value = cycleModelVariant({
|
|
variants: ["low", "high", "xhigh"],
|
|
selected: undefined,
|
|
configured: "xhigh",
|
|
})
|
|
|
|
expect(value).toBe("low")
|
|
})
|
|
})
|