39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
describeEngineMode,
|
|
selectEngineMode,
|
|
supportsMultithread,
|
|
} from '../../src/ffmpeg/engine-mode';
|
|
import type { EngineEnvironment } from '../../src/ffmpeg/ffmpeg.types';
|
|
|
|
const isolated: EngineEnvironment = {
|
|
secureContext: true,
|
|
crossOriginIsolated: true,
|
|
sharedArrayBuffer: true,
|
|
hardwareConcurrency: 8,
|
|
};
|
|
|
|
describe('engine mode selection', () => {
|
|
it('selects multithread only when every required capability is present', () => {
|
|
expect(supportsMultithread(isolated)).toBe(true);
|
|
expect(selectEngineMode(isolated, 'automatic')).toBe('multithread');
|
|
|
|
for (const missing of [
|
|
'secureContext',
|
|
'crossOriginIsolated',
|
|
'sharedArrayBuffer',
|
|
] as const) {
|
|
expect(
|
|
selectEngineMode({ ...isolated, [missing]: false }, 'automatic')
|
|
).toBe('single-thread');
|
|
}
|
|
});
|
|
|
|
it('honours the safe single-thread preference', () => {
|
|
expect(selectEngineMode(isolated, 'force-single-thread')).toBe(
|
|
'single-thread'
|
|
);
|
|
expect(describeEngineMode('single-thread')).toMatch(/compatibility/);
|
|
});
|
|
});
|