feat: publish av-tools 0.1.0
This commit is contained in:
47
tests/unit/ffmpeg-utils.test.ts
Normal file
47
tests/unit/ffmpeg-utils.test.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import {
|
||||
getCoreAssetUrls,
|
||||
resolveFromAppBase,
|
||||
} from '../../src/ffmpeg/asset-urls';
|
||||
import { LogBuffer } from '../../src/ffmpeg/log-buffer';
|
||||
import { normalizeProgress } from '../../src/ffmpeg/progress-parser';
|
||||
|
||||
describe('FFmpeg runtime utilities', () => {
|
||||
it('resolves assets under a nested application base', () => {
|
||||
expect(
|
||||
resolveFromAppBase(
|
||||
'vendor/core.wasm',
|
||||
'https://tools.example/apps/av/index.html',
|
||||
'./'
|
||||
)
|
||||
).toBe('https://tools.example/apps/av/vendor/core.wasm');
|
||||
|
||||
const mt = getCoreAssetUrls(
|
||||
'multithread',
|
||||
(path) => `https://tools.example/deep/${path}`
|
||||
);
|
||||
expect(mt.coreURL).toContain('/0.12.10/mt/ffmpeg-core.js');
|
||||
expect(mt.workerURL).toContain('/0.12.10/mt/ffmpeg-core.worker.js');
|
||||
});
|
||||
|
||||
it('clamps experimental progress and removes invalid numbers', () => {
|
||||
expect(normalizeProgress({ progress: 3, time: -10 })).toEqual({
|
||||
progress: 1,
|
||||
time: 0,
|
||||
});
|
||||
expect(
|
||||
normalizeProgress({ progress: Number.NaN, time: Number.NaN })
|
||||
).toEqual({ progress: 0, time: 0 });
|
||||
});
|
||||
|
||||
it('bounds diagnostic log memory', () => {
|
||||
const logs = new LogBuffer(2, 100);
|
||||
logs.append({ type: 'stdout', message: 'one' });
|
||||
logs.append({ type: 'stderr', message: 'two\u0000' });
|
||||
logs.append({ type: 'stderr', message: 'three' });
|
||||
expect(logs.snapshot()).toEqual([
|
||||
{ type: 'stderr', message: 'two' },
|
||||
{ type: 'stderr', message: 'three' },
|
||||
]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user