Initial commit
This commit is contained in:
84
tests/preset.test.ts
Normal file
84
tests/preset.test.ts
Normal file
@@ -0,0 +1,84 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { assemblePresetMessages } from "../src/preset/assembler.js";
|
||||
import { listEnabledPresetEntries, countInjectingEntries } from "../src/preset/entries.js";
|
||||
import { importSillyTavernPreset } from "../src/preset/importer.js";
|
||||
|
||||
const samplePreset = {
|
||||
temperature: 1,
|
||||
top_p: 0.95,
|
||||
openai_max_tokens: 60000,
|
||||
prompts: [
|
||||
{
|
||||
identifier: "main",
|
||||
name: "主要",
|
||||
role: "system",
|
||||
content: "",
|
||||
marker: true,
|
||||
},
|
||||
{
|
||||
identifier: "custom-a",
|
||||
name: "A",
|
||||
role: "system",
|
||||
content: "instruction A",
|
||||
},
|
||||
{
|
||||
identifier: "custom-b",
|
||||
name: "B",
|
||||
role: "assistant",
|
||||
content: "prefill B",
|
||||
},
|
||||
],
|
||||
prompt_order: [
|
||||
{
|
||||
character_id: 100000,
|
||||
order: [{ identifier: "main", enabled: true }],
|
||||
},
|
||||
{
|
||||
character_id: 100001,
|
||||
order: [
|
||||
{ identifier: "custom-a", enabled: true },
|
||||
{ identifier: "custom-b", enabled: true },
|
||||
{ identifier: "main", enabled: true },
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
describe("importSillyTavernPreset", () => {
|
||||
it("picks prompt_order with most enabled content", () => {
|
||||
const report = importSillyTavernPreset(samplePreset, { name: "test" });
|
||||
expect(report.enabledCount).toBe(3);
|
||||
expect(report.preset.promptOrder.map((o) => o.promptId)).toEqual([
|
||||
"custom-a",
|
||||
"custom-b",
|
||||
"main",
|
||||
]);
|
||||
expect(report.preset.generation.temperature).toBe(1);
|
||||
expect(report.preset.generation.maxOutputTokens).toBe(60000);
|
||||
expect(report.warnings.some((w) => w.includes("prompt_order"))).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("assemblePresetMessages", () => {
|
||||
it("skips empty markers and emits enabled content in order", () => {
|
||||
const report = importSillyTavernPreset(samplePreset);
|
||||
const messages = assemblePresetMessages(report.preset);
|
||||
expect(messages).toEqual([
|
||||
{ role: "system", content: "instruction A" },
|
||||
{ role: "assistant", content: "prefill B" },
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
describe("listEnabledPresetEntries", () => {
|
||||
it("lists enabled order with inject flags", () => {
|
||||
const report = importSillyTavernPreset(samplePreset);
|
||||
const entries = listEnabledPresetEntries(report.preset);
|
||||
expect(entries.length).toBe(3);
|
||||
expect(countInjectingEntries(entries)).toBe(2);
|
||||
expect(entries.filter((e) => e.willInject).map((e) => e.content)).toEqual([
|
||||
"instruction A",
|
||||
"prefill B",
|
||||
]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user