mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-21 12:11:28 -07:00
Overlay 2.0 (#12)
This commit is contained in:
@@ -1,59 +1,32 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import {
|
||||
createSetInvisibleOverlayVisibleHandler,
|
||||
createSetVisibleOverlayVisibleHandler,
|
||||
createToggleInvisibleOverlayHandler,
|
||||
createToggleVisibleOverlayHandler,
|
||||
} from './overlay-visibility-actions';
|
||||
|
||||
test('set visible overlay handler forwards dependencies to core', () => {
|
||||
const calls: string[] = [];
|
||||
let warmupStarts = 0;
|
||||
const setVisible = createSetVisibleOverlayVisibleHandler({
|
||||
setVisibleOverlayVisibleCore: (options) => {
|
||||
calls.push(`core:${options.visible}`);
|
||||
options.setVisibleOverlayVisibleState(options.visible);
|
||||
options.updateVisibleOverlayVisibility();
|
||||
options.updateInvisibleOverlayVisibility();
|
||||
options.syncInvisibleOverlayMousePassthrough();
|
||||
options.setMpvSubVisibility(!options.visible);
|
||||
},
|
||||
setVisibleOverlayVisibleState: (visible) => calls.push(`state:${visible}`),
|
||||
updateVisibleOverlayVisibility: () => calls.push('update-visible'),
|
||||
updateInvisibleOverlayVisibility: () => calls.push('update-invisible'),
|
||||
syncInvisibleOverlayMousePassthrough: () => calls.push('sync-mouse'),
|
||||
shouldBindVisibleOverlayToMpvSubVisibility: () => true,
|
||||
isMpvConnected: () => true,
|
||||
setMpvSubVisibility: (visible) => calls.push(`mpv-sub:${visible}`),
|
||||
onVisibleOverlayEnabled: () => {
|
||||
warmupStarts += 1;
|
||||
},
|
||||
});
|
||||
|
||||
setVisible(true);
|
||||
assert.deepEqual(calls, [
|
||||
'core:true',
|
||||
'state:true',
|
||||
'update-visible',
|
||||
'update-invisible',
|
||||
'sync-mouse',
|
||||
'mpv-sub:false',
|
||||
]);
|
||||
});
|
||||
assert.deepEqual(calls, ['core:true', 'state:true', 'update-visible']);
|
||||
assert.equal(warmupStarts, 1);
|
||||
|
||||
test('set invisible overlay handler forwards dependencies to core', () => {
|
||||
const calls: string[] = [];
|
||||
const setInvisible = createSetInvisibleOverlayVisibleHandler({
|
||||
setInvisibleOverlayVisibleCore: (options) => {
|
||||
calls.push(`core:${options.visible}`);
|
||||
options.setInvisibleOverlayVisibleState(options.visible);
|
||||
options.updateInvisibleOverlayVisibility();
|
||||
options.syncInvisibleOverlayMousePassthrough();
|
||||
},
|
||||
setInvisibleOverlayVisibleState: (visible) => calls.push(`state:${visible}`),
|
||||
updateInvisibleOverlayVisibility: () => calls.push('update-invisible'),
|
||||
syncInvisibleOverlayMousePassthrough: () => calls.push('sync-mouse'),
|
||||
});
|
||||
|
||||
setInvisible(false);
|
||||
assert.deepEqual(calls, ['core:false', 'state:false', 'update-invisible', 'sync-mouse']);
|
||||
setVisible(false);
|
||||
assert.equal(warmupStarts, 1);
|
||||
});
|
||||
|
||||
test('toggle visible overlay flips current visible state', () => {
|
||||
@@ -71,19 +44,3 @@ test('toggle visible overlay flips current visible state', () => {
|
||||
toggle();
|
||||
assert.deepEqual(calls, ['set:true', 'set:false']);
|
||||
});
|
||||
|
||||
test('toggle invisible overlay flips current invisible state', () => {
|
||||
const calls: string[] = [];
|
||||
let current = true;
|
||||
const toggle = createToggleInvisibleOverlayHandler({
|
||||
getInvisibleOverlayVisible: () => current,
|
||||
setInvisibleOverlayVisible: (visible) => {
|
||||
current = visible;
|
||||
calls.push(`set:${visible}`);
|
||||
},
|
||||
});
|
||||
|
||||
toggle();
|
||||
toggle();
|
||||
assert.deepEqual(calls, ['set:false', 'set:true']);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user