File size: 1,210 Bytes
253e783
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { describe, expect, it } from "vitest";
import { resolveImageGenerationMaxInputImages } from "./capabilities.js";
import type { ImageGenerationProvider } from "./types.js";

function createProvider(): ImageGenerationProvider {
  return {
    id: "test",
    capabilities: {
      generate: {},
      edit: {
        enabled: true,
        maxInputImages: 1,
        maxInputImagesByModel: {
          "family/pro/edit": 12,
        },
        maxInputImagesByModelPrefix: {
          family: 5,
          "family/pro": 10,
        },
      },
    },
    async generateImage() {
      throw new Error("not used");
    },
  };
}

describe("resolveImageGenerationMaxInputImages", () => {
  it("prefers exact limits, then the longest prefix, then the provider default", () => {
    const provider = createProvider();

    expect(resolveImageGenerationMaxInputImages({ provider, model: "family/pro/edit" })).toBe(12);
    expect(resolveImageGenerationMaxInputImages({ provider, model: "family/pro/v2" })).toBe(10);
    expect(resolveImageGenerationMaxInputImages({ provider, model: "family/basic" })).toBe(5);
    expect(resolveImageGenerationMaxInputImages({ provider, model: "other" })).toBe(1);
  });
});