功能增加
This commit is contained in:
1 parent
b340fc7ad7
commit
f1993eb388
69 files changed
+2243
-162
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { imageDimensionsForEngine, imageSizePresets, imageSizePresetFromDimensions } from "@/lib/image-size-presets";
|
||||
import { buildEvolinkImagePayload } from "@/lib/evolink/image-client";
|
||||
import { validateBailianImageSize } from "@/lib/bailian/client";
|
||||
|
||||
describe("A4 generation presets", () => {
|
||||
it("retains the five existing presets unchanged", () => {
|
||||
expect(imageSizePresets.slice(0, 5)).toEqual([
|
||||
{ label: "1:1", width: 2048, height: 2048 },
|
||||
{ label: "4:3", width: 2304, height: 1728 },
|
||||
{ label: "3:4", width: 1728, height: 2304 },
|
||||
{ label: "16:9", width: 2560, height: 1440 },
|
||||
{ label: "9:16", width: 1440, height: 2560 }
|
||||
]);
|
||||
});
|
||||
|
||||
it.each(imageSizePresets.filter((size) => size.paper === "a4"))("round trips $label through template dimensions for every regular engine", (size) => {
|
||||
expect(Math.min(size.width, size.height) / Math.max(size.width, size.height)).toBeCloseTo(210 / 297, 8);
|
||||
for (const engine of ["jimeng", "bailian", "evolink"]) {
|
||||
const dimensions = imageDimensionsForEngine(size, engine);
|
||||
expect(imageSizePresetFromDimensions(dimensions.width, dimensions.height)).toEqual(size);
|
||||
if (engine === "bailian") {
|
||||
expect(() => validateBailianImageSize(dimensions.width, dimensions.height, true)).not.toThrow();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it.each(imageSizePresets.filter((size) => size.paper === "a4"))("keeps $label on EvoLink's 1K budget rather than sending 4MP custom pixels", (size) => {
|
||||
const dimensions = imageDimensionsForEngine(size, "evolink");
|
||||
expect(dimensions.width % 16).toBe(0);
|
||||
expect(dimensions.height % 16).toBe(0);
|
||||
expect(dimensions.width * dimensions.height).toBeGreaterThanOrEqual(655360);
|
||||
expect(dimensions.width * dimensions.height).toBeLessThanOrEqual(1024 ** 2);
|
||||
expect(Math.min(dimensions.width, dimensions.height) / Math.max(dimensions.width, dimensions.height)).toBeCloseTo(210 / 297, 3);
|
||||
// Both a new frontend payload and an older template's canonical dimensions
|
||||
// are adapted before sending to the upstream.
|
||||
for (const input of [size, dimensions]) {
|
||||
const payload = buildEvolinkImagePayload("image.generate", { prompt: "A4 行程单", ...input }, { baseUrl: "https://api.evolink.ai", model: "gpt-image-2" });
|
||||
expect(payload).toMatchObject({ size: `${dimensions.width}x${dimensions.height}`, resolution: "1K" });
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user