mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-07-29 19:21:33 -07:00
feat(anki): mirror mpv software volume into generated sentence audio (#155)
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
|
||||
import { resolveMpvVolumeScale } from './mpv-volume';
|
||||
|
||||
test('resolveMpvVolumeScale converts numeric mpv volume with mpv software volume curve', async () => {
|
||||
const requested: string[] = [];
|
||||
|
||||
const scale = await resolveMpvVolumeScale(
|
||||
{
|
||||
requestProperty: async (name) => {
|
||||
requested.push(name);
|
||||
return 75;
|
||||
},
|
||||
},
|
||||
true,
|
||||
);
|
||||
|
||||
assert.equal(scale, 0.421875);
|
||||
assert.deepEqual(requested, ['volume']);
|
||||
});
|
||||
|
||||
test('resolveMpvVolumeScale skips mpv when mirroring is disabled', async () => {
|
||||
let requested = false;
|
||||
|
||||
const scale = await resolveMpvVolumeScale(
|
||||
{
|
||||
requestProperty: async () => {
|
||||
requested = true;
|
||||
return 50;
|
||||
},
|
||||
},
|
||||
false,
|
||||
);
|
||||
|
||||
assert.equal(scale, undefined);
|
||||
assert.equal(requested, false);
|
||||
});
|
||||
|
||||
test('resolveMpvVolumeScale falls back to unity for missing, failed, or invalid values', async () => {
|
||||
assert.equal(await resolveMpvVolumeScale({}, true), 1);
|
||||
assert.equal(
|
||||
await resolveMpvVolumeScale(
|
||||
{
|
||||
requestProperty: async () => {
|
||||
throw new Error('disconnected');
|
||||
},
|
||||
},
|
||||
true,
|
||||
),
|
||||
1,
|
||||
);
|
||||
assert.equal(await resolveMpvVolumeScale({ requestProperty: async () => '50' }, true), 1);
|
||||
assert.equal(await resolveMpvVolumeScale({ requestProperty: async () => Number.NaN }, true), 1);
|
||||
assert.equal(await resolveMpvVolumeScale({ requestProperty: async () => -1 }, true), 1);
|
||||
});
|
||||
Reference in New Issue
Block a user