mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-20 12:11:28 -07:00
81 lines
2.0 KiB
TypeScript
81 lines
2.0 KiB
TypeScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {
|
|
playNextSubtitleRuntime,
|
|
replayCurrentSubtitleRuntime,
|
|
sendMpvCommandRuntime,
|
|
setMpvSubVisibilityRuntime,
|
|
showMpvOsdRuntime,
|
|
} from './mpv';
|
|
|
|
test('showMpvOsdRuntime sends show-text when connected', () => {
|
|
const commands: (string | number)[][] = [];
|
|
showMpvOsdRuntime(
|
|
{
|
|
connected: true,
|
|
send: ({ command }) => {
|
|
commands.push(command);
|
|
},
|
|
},
|
|
'hello',
|
|
);
|
|
assert.deepEqual(commands, [['show-text', 'hello', '3000']]);
|
|
});
|
|
|
|
test('showMpvOsdRuntime enables property expansion for placeholder-based messages', () => {
|
|
const commands: (string | number)[][] = [];
|
|
showMpvOsdRuntime(
|
|
{
|
|
connected: true,
|
|
send: ({ command }) => {
|
|
commands.push(command);
|
|
},
|
|
},
|
|
'Subtitle delay: ${sub-delay}',
|
|
);
|
|
assert.deepEqual(commands, [
|
|
['expand-properties', 'show-text', 'Subtitle delay: ${sub-delay}', '3000'],
|
|
]);
|
|
});
|
|
|
|
test('showMpvOsdRuntime logs fallback when disconnected', () => {
|
|
const logs: string[] = [];
|
|
showMpvOsdRuntime(
|
|
{
|
|
connected: false,
|
|
send: () => {},
|
|
},
|
|
'hello',
|
|
(line) => {
|
|
logs.push(line);
|
|
},
|
|
);
|
|
assert.deepEqual(logs, ['OSD (MPV not connected): hello']);
|
|
});
|
|
|
|
test('mpv runtime command wrappers call expected client methods', () => {
|
|
const calls: string[] = [];
|
|
const client = {
|
|
connected: true,
|
|
send: ({ command }: { command: (string | number)[] }) => {
|
|
calls.push(`send:${command.join(',')}`);
|
|
},
|
|
replayCurrentSubtitle: () => {
|
|
calls.push('replay');
|
|
},
|
|
playNextSubtitle: () => {
|
|
calls.push('next');
|
|
},
|
|
setSubVisibility: (visible: boolean) => {
|
|
calls.push(`subVisible:${visible}`);
|
|
},
|
|
};
|
|
|
|
replayCurrentSubtitleRuntime(client);
|
|
playNextSubtitleRuntime(client);
|
|
sendMpvCommandRuntime(client, ['script-message', 'x']);
|
|
setMpvSubVisibilityRuntime(client, false);
|
|
|
|
assert.deepEqual(calls, ['replay', 'next', 'send:script-message,x', 'subVisible:false']);
|
|
});
|