import test from 'node:test'; import assert from 'node:assert/strict'; import { applyRuntimeOptionResultRuntime, cycleRuntimeOptionFromIpcRuntime, setRuntimeOptionFromIpcRuntime, } from './runtime-options-ipc'; test('applyRuntimeOptionResultRuntime emits success OSD message', () => { const osd: string[] = []; const result = applyRuntimeOptionResultRuntime({ ok: true, osdMessage: 'Updated' }, (text) => { osd.push(text); }); assert.equal(result.ok, true); assert.deepEqual(osd, ['Updated']); }); test('setRuntimeOptionFromIpcRuntime returns unavailable when manager missing', () => { const osd: string[] = []; const result = setRuntimeOptionFromIpcRuntime(null, 'anki.autoUpdateNewCards', true, (text) => { osd.push(text); }); assert.equal(result.ok, false); assert.equal(result.error, 'Runtime options manager unavailable'); assert.deepEqual(osd, []); }); test('cycleRuntimeOptionFromIpcRuntime reports errors once', () => { const osd: string[] = []; const result = cycleRuntimeOptionFromIpcRuntime( { setOptionValue: () => ({ ok: true }), cycleOption: () => ({ ok: false, error: 'bad option' }), }, 'anki.kikuFieldGrouping', 1, (text) => { osd.push(text); }, ); assert.equal(result.ok, false); assert.equal(result.error, 'bad option'); assert.deepEqual(osd, ['bad option']); });