Files
SubMiner/src/main/runtime/mpv-subtitle-render-metrics-main-deps.test.ts

46 lines
1.4 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import type { MpvSubtitleRenderMetrics } from '../../types';
import { createBuildUpdateMpvSubtitleRenderMetricsMainDepsHandler } from './mpv-subtitle-render-metrics-main-deps';
const BASE_METRICS: MpvSubtitleRenderMetrics = {
subPos: 100,
subFontSize: 36,
subScale: 1,
subMarginY: 0,
subMarginX: 0,
subFont: '',
subSpacing: 0,
subBold: false,
subItalic: false,
subBorderSize: 0,
subShadowOffset: 0,
subAssOverride: 'yes',
subScaleByWindow: true,
subUseMargins: true,
osdHeight: 0,
osdDimensions: null,
};
test('mpv subtitle render metrics main deps builder maps callbacks', () => {
const calls: string[] = [];
const deps = createBuildUpdateMpvSubtitleRenderMetricsMainDepsHandler({
getCurrentMetrics: () => BASE_METRICS,
setCurrentMetrics: () => calls.push('set'),
applyPatch: (current, patch) => {
calls.push('apply');
return { next: { ...current, ...patch }, changed: true };
},
broadcastMetrics: () => calls.push('broadcast'),
})();
assert.equal(deps.getCurrentMetrics().subPos, 100);
deps.setCurrentMetrics(BASE_METRICS);
const patched = deps.applyPatch(BASE_METRICS, { subPos: 90 });
deps.broadcastMetrics(BASE_METRICS);
assert.equal(patched.changed, true);
assert.equal(patched.next.subPos, 90);
assert.deepEqual(calls, ['set', 'apply', 'broadcast']);
});