mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-01 18:22:41 -08:00
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { SecondarySubMode } from '../../types';
|
|
import { cycleSecondarySubMode } from './subtitle-position';
|
|
|
|
test('cycleSecondarySubMode cycles and emits broadcast + OSD', () => {
|
|
let mode: SecondarySubMode = 'hover';
|
|
let lastToggleAt = 0;
|
|
const broadcasts: SecondarySubMode[] = [];
|
|
const osd: string[] = [];
|
|
|
|
cycleSecondarySubMode({
|
|
getSecondarySubMode: () => mode,
|
|
setSecondarySubMode: (next) => {
|
|
mode = next;
|
|
},
|
|
getLastSecondarySubToggleAtMs: () => lastToggleAt,
|
|
setLastSecondarySubToggleAtMs: (value) => {
|
|
lastToggleAt = value;
|
|
},
|
|
broadcastSecondarySubMode: (next) => {
|
|
broadcasts.push(next);
|
|
},
|
|
showMpvOsd: (text) => {
|
|
osd.push(text);
|
|
},
|
|
now: () => 1000,
|
|
});
|
|
|
|
assert.equal(mode, 'hidden');
|
|
assert.deepEqual(broadcasts, ['hidden']);
|
|
assert.deepEqual(osd, ['Secondary subtitle: hidden']);
|
|
assert.equal(lastToggleAt, 1000);
|
|
});
|
|
|
|
test('cycleSecondarySubMode obeys debounce window', () => {
|
|
let mode: SecondarySubMode = 'visible';
|
|
let lastToggleAt = 950;
|
|
let broadcasted = false;
|
|
let osdShown = false;
|
|
|
|
cycleSecondarySubMode({
|
|
getSecondarySubMode: () => mode,
|
|
setSecondarySubMode: (next) => {
|
|
mode = next;
|
|
},
|
|
getLastSecondarySubToggleAtMs: () => lastToggleAt,
|
|
setLastSecondarySubToggleAtMs: (value) => {
|
|
lastToggleAt = value;
|
|
},
|
|
broadcastSecondarySubMode: () => {
|
|
broadcasted = true;
|
|
},
|
|
showMpvOsd: () => {
|
|
osdShown = true;
|
|
},
|
|
now: () => 1000,
|
|
});
|
|
|
|
assert.equal(mode, 'visible');
|
|
assert.equal(lastToggleAt, 950);
|
|
assert.equal(broadcasted, false);
|
|
assert.equal(osdShown, false);
|
|
});
|