Files
ST-Bionic-Memory-Ecology/tests/hide-engine.mjs
2026-04-03 13:17:29 +08:00

184 lines
5.2 KiB
JavaScript

import assert from "node:assert/strict";
import {
applyHideSettings,
getHideStateSnapshot,
resetHideState,
runIncrementalHideCheck,
unhideAll,
} from "../hide-engine.js";
function createRuntime(chat, chatId = "chat-a") {
const commands = [];
const domWrites = [];
return {
chat,
chatId,
commands,
domWrites,
async executeSlashCommands(command) {
commands.push(command);
return "";
},
$(selector) {
return {
attr(name, value) {
domWrites.push({ selector, name, value });
},
};
},
getContext() {
return {
chat: this.chat,
chatId: this.chatId,
executeSlashCommands: this.executeSlashCommands.bind(this),
};
},
};
}
async function testApplyUsesNativeHide() {
resetHideState();
const chat = [
{ mes: "user-1", is_user: true, is_system: false },
{ mes: "assistant-1", is_user: false, is_system: false },
{ mes: "user-2", is_user: true, is_system: false },
{ mes: "assistant-2", is_user: false, is_system: false },
{ mes: "user-3", is_user: true, is_system: false },
];
const runtime = createRuntime(chat);
const result = await applyHideSettings(
{ enabled: true, hide_last_n: 2 },
runtime,
);
assert.equal(result.active, true);
assert.equal(result.hiddenCount, 3);
assert.deepEqual(runtime.commands, ["/hide 0-2"]);
assert.equal(chat[0].is_system, true);
assert.equal(chat[1].is_system, true);
assert.equal(chat[2].is_system, true);
assert.equal(chat[3].is_system, false);
assert.deepEqual(getHideStateSnapshot(), {
hasManagedChat: true,
managedHiddenCount: 3,
lastProcessedLength: 5,
scheduled: false,
});
}
async function testDisableUnhidesManagedRange() {
resetHideState();
const chat = [
{ mes: "system", is_user: false, is_system: true },
{ mes: "assistant-1", is_user: false, is_system: false },
{ mes: "user-2", is_user: true, is_system: false },
{ mes: "assistant-2", is_user: false, is_system: false },
];
const runtime = createRuntime(chat);
await applyHideSettings({ enabled: true, hide_last_n: 1 }, runtime);
runtime.commands.length = 0;
const result = await unhideAll(runtime);
assert.equal(result.active, false);
assert.equal(result.shownCount, 4);
assert.deepEqual(runtime.commands, ["/unhide 0-3"]);
assert.equal(chat[0].is_system, true);
assert.equal(chat[1].is_system, false);
assert.equal(chat[2].is_system, false);
assert.equal(getHideStateSnapshot().managedHiddenCount, 0);
}
async function testIncrementalOnlyHidesOverflowDelta() {
resetHideState();
const chat = [
{ mes: "user-1", is_user: true, is_system: false },
{ mes: "assistant-1", is_user: false, is_system: false },
{ mes: "user-2", is_user: true, is_system: false },
];
const runtime = createRuntime(chat);
await applyHideSettings({ enabled: true, hide_last_n: 2 }, runtime);
runtime.commands.length = 0;
chat.push({ mes: "assistant-2", is_user: false, is_system: false });
const result = await runIncrementalHideCheck(
{ enabled: true, hide_last_n: 2 },
runtime,
);
assert.equal(result.incremental, true);
assert.equal(result.hiddenCount, 2);
assert.deepEqual(runtime.commands, ["/hide 1-1"]);
assert.equal(chat[0].is_system, true);
assert.equal(chat[1].is_system, true);
assert.equal(chat[2].is_system, false);
assert.equal(chat[3].is_system, false);
assert.equal(getHideStateSnapshot().managedHiddenCount, 2);
}
async function testResetClearsStateWithoutIssuingCommands() {
resetHideState();
const chat = [
{ mes: "user-1", is_user: true, is_system: false },
{ mes: "assistant-1", is_user: false, is_system: false },
{ mes: "user-2", is_user: true, is_system: false },
];
const runtime = createRuntime(chat);
await applyHideSettings({ enabled: true, hide_last_n: 1 }, runtime);
runtime.commands.length = 0;
resetHideState(runtime);
assert.deepEqual(runtime.commands, []);
assert.equal(chat[0].is_system, false);
assert.equal(chat[1].is_system, false);
assert.deepEqual(getHideStateSnapshot(), {
hasManagedChat: false,
managedHiddenCount: 0,
lastProcessedLength: 0,
scheduled: false,
});
}
async function testUnhideAllRecoversPersistedManagedMarkersAfterStateLoss() {
resetHideState();
const chat = [
{
mes: "user-1",
is_user: true,
is_system: true,
extra: { __st_bme_hide_managed: true },
},
{
mes: "assistant-1",
is_user: false,
is_system: true,
extra: { __st_bme_hide_managed: true },
},
{ mes: "user-2", is_user: true, is_system: false },
];
const runtime = createRuntime(chat);
const result = await unhideAll(runtime);
assert.equal(result.active, false);
assert.equal(result.shownCount, 3);
assert.deepEqual(runtime.commands, ["/unhide 0-2"]);
assert.equal(chat[0].is_system, false);
assert.equal(chat[1].is_system, false);
assert.equal(chat[0].extra, undefined);
assert.equal(chat[1].extra, undefined);
}
await testApplyUsesNativeHide();
await testDisableUnhidesManagedRange();
await testIncrementalOnlyHidesOverflowDelta();
await testResetClearsStateWithoutIssuingCommands();
await testUnhideAllRecoversPersistedManagedMarkersAfterStateLoss();
console.log("hide-engine tests passed");