mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-29 01:01:34 -07:00
refactor(main): eliminate local pass-through wrappers in main.ts (#168)
This commit is contained in:
@@ -446,7 +446,10 @@ test('Linux visible overlay recreation avoids display fallback before tracked ge
|
||||
)?.groups?.body;
|
||||
|
||||
assert.ok(actionBlock);
|
||||
assert.match(actionBlock, /const trackedGeometry = getCurrentTrackedOverlayGeometry\(\);/);
|
||||
assert.match(
|
||||
actionBlock,
|
||||
/const trackedGeometry = overlayGeometryRuntime\.getCurrentTrackedOverlayGeometry\(\);/,
|
||||
);
|
||||
assert.match(actionBlock, /if \(trackedGeometry\) \{/);
|
||||
assert.match(actionBlock, /overlayManager\.setOverlayWindowBounds\(trackedGeometry\);/);
|
||||
assert.doesNotMatch(actionBlock, /setOverlayWindowBounds\(getCurrentOverlayGeometry\(\)\)/);
|
||||
@@ -556,11 +559,60 @@ test('YouTube media cache lifecycle routes through configured status notificatio
|
||||
);
|
||||
assert.match(cacheBlock, /variant:\s*'success'/);
|
||||
assert.match(cacheBlock, /notifyNoQueued:\s*false/);
|
||||
assert.match(startCacheBlock, /mode:\s*getResolvedConfig\(\)\.youtube\.mediaCache\.mode/);
|
||||
assert.match(
|
||||
startCacheBlock,
|
||||
/maxHeight:\s*getResolvedConfig\(\)\.youtube\.mediaCache\.maxHeight/,
|
||||
/const mediaCacheConfig = configService\.getConfig\(\)\.youtube\.mediaCache;/,
|
||||
);
|
||||
assert.match(startCacheBlock, /mode:\s*mediaCacheConfig\.mode/);
|
||||
assert.match(startCacheBlock, /maxHeight:\s*mediaCacheConfig\.maxHeight/);
|
||||
});
|
||||
|
||||
test('subtitle broadcasts share one frequency options snapshot per emitted payload', () => {
|
||||
const source = readMainSource();
|
||||
const emitBlock = source.match(
|
||||
/function emitSubtitlePayload\(payload: SubtitleData\): void \{(?<body>[\s\S]*?)\n\}/,
|
||||
)?.groups?.body;
|
||||
const frequencyOptionsSnapshot = emitBlock?.match(
|
||||
/const frequencyDictionary = configService\.getConfig\(\)\.subtitleStyle\.frequencyDictionary;(?<body>[\s\S]*?)\n \};/,
|
||||
)?.[0];
|
||||
|
||||
assert.ok(emitBlock);
|
||||
assert.ok(frequencyOptionsSnapshot);
|
||||
assert.match(frequencyOptionsSnapshot, /const frequencyOptions = \{/);
|
||||
assert.match(frequencyOptionsSnapshot, /enabled:\s*frequencyDictionary\.enabled/);
|
||||
assert.match(frequencyOptionsSnapshot, /topX:\s*frequencyDictionary\.topX/);
|
||||
assert.match(frequencyOptionsSnapshot, /mode:\s*frequencyDictionary\.mode/);
|
||||
assert.equal((frequencyOptionsSnapshot.match(/configService\.getConfig\(\)/g) ?? []).length, 1);
|
||||
assert.match(emitBlock, /subtitleWsService\.broadcast\(timedPayload, frequencyOptions\);/);
|
||||
assert.match(
|
||||
emitBlock,
|
||||
/annotationSubtitleWsService\.broadcast\(timedPayload, frequencyOptions\);/,
|
||||
);
|
||||
});
|
||||
|
||||
test('websocket frequency options callbacks each read one configuration snapshot', () => {
|
||||
const source = readMainSource();
|
||||
const subtitleBlock = source.match(
|
||||
/startSubtitleWebsocket:\s*\(port: number\)\s*=>\s*\{(?<body>[\s\S]*?)\n \},\n startAnnotationWebsocket:/,
|
||||
)?.groups?.body;
|
||||
const annotationBlock = source.match(
|
||||
/startAnnotationWebsocket:\s*\(port: number\)\s*=>\s*\{(?<body>[\s\S]*?)\n \},\n startTexthooker:/,
|
||||
)?.groups?.body;
|
||||
const subtitleFrequencyOptionsCallback = subtitleBlock?.match(
|
||||
/(?<body>\(\) => \{\s+const frequencyDictionary = configService\.getConfig\(\)\.subtitleStyle\.frequencyDictionary;[\s\S]*?\s+return \{[\s\S]*?\s+\};\s+\})/,
|
||||
)?.groups?.body;
|
||||
const annotationFrequencyOptionsCallback = annotationBlock?.match(
|
||||
/(?<body>\(\) => \{\s+const frequencyDictionary = configService\.getConfig\(\)\.subtitleStyle\.frequencyDictionary;[\s\S]*?\s+return \{[\s\S]*?\s+\};\s+\})/,
|
||||
)?.groups?.body;
|
||||
|
||||
assert.ok(subtitleFrequencyOptionsCallback);
|
||||
assert.ok(annotationFrequencyOptionsCallback);
|
||||
for (const callback of [subtitleFrequencyOptionsCallback, annotationFrequencyOptionsCallback]) {
|
||||
assert.match(callback, /return \{[\s\S]*enabled:\s*frequencyDictionary\.enabled/);
|
||||
assert.match(callback, /topX:\s*frequencyDictionary\.topX/);
|
||||
assert.match(callback, /mode:\s*frequencyDictionary\.mode/);
|
||||
assert.equal((callback.match(/configService\.getConfig\(\)/g) ?? []).length, 1);
|
||||
}
|
||||
});
|
||||
|
||||
test('mpv connection flushes queued configured OSD notifications', () => {
|
||||
@@ -587,11 +639,11 @@ test('manual visible overlay show primes current subtitle from mpv before relyin
|
||||
assert.ok(toggleBlock);
|
||||
assert.match(
|
||||
setBlock,
|
||||
/if \(visible\) \{\s+maybeStartOverlayLoadingOsd\(\);\s+resetLinuxVisibleOverlayStartupInputPrimer\(\);\s+startLinuxVisibleOverlayStartupInputGrace\(\);\s+restoreVisibleOverlayWindowShapeForShow\(\);\s+void ensureOverlayMpvSubtitlesHidden\(\);\s+void primeCurrentSubtitleForVisibleOverlay\(\);/,
|
||||
/if \(visible\) \{\s+maybeStartOverlayLoadingOsd\(\);\s+visibleOverlayInteractionRuntime\.resetLinuxVisibleOverlayStartupInputPrimer\(\);\s+visibleOverlayInteractionRuntime\.startLinuxVisibleOverlayStartupInputGrace\(\);\s+visibleOverlayInteractionRuntime\.restoreVisibleOverlayWindowShapeForShow\(\);\s+void ensureOverlayMpvSubtitlesHidden\(\);\s+void autoplaySubtitlePrimingRuntime\.primeCurrentSubtitleForVisibleOverlay\(\);/,
|
||||
);
|
||||
assert.match(
|
||||
toggleBlock,
|
||||
/else \{\s+maybeStartOverlayLoadingOsd\(\);\s+resetLinuxVisibleOverlayStartupInputPrimer\(\);\s+startLinuxVisibleOverlayStartupInputGrace\(\);\s+restoreVisibleOverlayWindowShapeForShow\(\);\s+void ensureOverlayMpvSubtitlesHidden\(\);\s+void primeCurrentSubtitleForVisibleOverlay\(\);/,
|
||||
/else \{\s+maybeStartOverlayLoadingOsd\(\);\s+visibleOverlayInteractionRuntime\.resetLinuxVisibleOverlayStartupInputPrimer\(\);\s+visibleOverlayInteractionRuntime\.startLinuxVisibleOverlayStartupInputGrace\(\);\s+visibleOverlayInteractionRuntime\.restoreVisibleOverlayWindowShapeForShow\(\);\s+void ensureOverlayMpvSubtitlesHidden\(\);\s+void autoplaySubtitlePrimingRuntime\.primeCurrentSubtitleForVisibleOverlay\(\);/,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -612,7 +664,7 @@ test('Linux visible overlay show/reset does not leave an empty X11 window shape'
|
||||
assert.doesNotMatch(runtimeSource, /setShape\?\.\(\[\]\)|setShape\(\[\]\)/);
|
||||
assert.match(
|
||||
setBlock,
|
||||
/if \(visible\) \{\s+maybeStartOverlayLoadingOsd\(\);\s+resetLinuxVisibleOverlayStartupInputPrimer\(\);\s+startLinuxVisibleOverlayStartupInputGrace\(\);\s+restoreVisibleOverlayWindowShapeForShow\(\);\s+void ensureOverlayMpvSubtitlesHidden\(\);/,
|
||||
/if \(visible\) \{\s+maybeStartOverlayLoadingOsd\(\);\s+visibleOverlayInteractionRuntime\.resetLinuxVisibleOverlayStartupInputPrimer\(\);\s+visibleOverlayInteractionRuntime\.startLinuxVisibleOverlayStartupInputGrace\(\);\s+visibleOverlayInteractionRuntime\.restoreVisibleOverlayWindowShapeForShow\(\);\s+void ensureOverlayMpvSubtitlesHidden\(\);/,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -663,14 +715,20 @@ test('Linux visible overlay show starts input grace before first measurement', (
|
||||
|
||||
for (const block of [setVisibleBlock, toggleBlock, setOverlayBlock]) {
|
||||
assert.ok(block);
|
||||
assert.ok(
|
||||
block.indexOf('resetLinuxVisibleOverlayStartupInputPrimer();') <
|
||||
block.indexOf('startLinuxVisibleOverlayStartupInputGrace();'),
|
||||
const resetIndex = block.indexOf(
|
||||
'visibleOverlayInteractionRuntime.resetLinuxVisibleOverlayStartupInputPrimer();',
|
||||
);
|
||||
assert.ok(
|
||||
block.indexOf('startLinuxVisibleOverlayStartupInputGrace();') <
|
||||
block.indexOf('void primeCurrentSubtitleForVisibleOverlay();'),
|
||||
const graceIndex = block.indexOf(
|
||||
'visibleOverlayInteractionRuntime.startLinuxVisibleOverlayStartupInputGrace();',
|
||||
);
|
||||
const primeIndex = block.indexOf(
|
||||
'void autoplaySubtitlePrimingRuntime.primeCurrentSubtitleForVisibleOverlay();',
|
||||
);
|
||||
assert.ok(resetIndex >= 0);
|
||||
assert.ok(graceIndex >= 0);
|
||||
assert.ok(primeIndex >= 0);
|
||||
assert.ok(resetIndex < graceIndex);
|
||||
assert.ok(graceIndex < primeIndex);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user