Initial Commit
This commit is contained in:
46
packages/media/audio/audio-core/tests/integration.test.ts
Normal file
46
packages/media/audio/audio-core/tests/integration.test.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
import { AudioDocument } from "../src/document/document.js";
|
||||
|
||||
describe("integration", () => {
|
||||
it("full round-trip: construct, run edits, stream, read, clone, toJSON", {
|
||||
timeout: 30000,
|
||||
}, async () => {
|
||||
const doc = new AudioDocument({
|
||||
sampleRate: 48000,
|
||||
channels: 2,
|
||||
sourceLength: 2048,
|
||||
pages: [
|
||||
{
|
||||
channelData: [
|
||||
new Float32Array(2048).fill(0.5),
|
||||
new Float32Array(2048).fill(0.25),
|
||||
],
|
||||
startSample: 0,
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
doc.run({ type: "trim", opts: { start: 0, end: 1024 } });
|
||||
doc.run({ type: "gain", opts: { gain: 2 } });
|
||||
|
||||
expect(doc.length).toBe(1024);
|
||||
|
||||
const readResult = await doc.read(0, 512);
|
||||
expect(readResult[0].length).toBe(512);
|
||||
|
||||
let streamTotal = 0;
|
||||
for await (const block of doc.stream({ blockSize: 256 })) {
|
||||
streamTotal += block[0].length;
|
||||
}
|
||||
expect(streamTotal).toBe(1024);
|
||||
|
||||
const cloned = doc.clone();
|
||||
expect(cloned.length).toBe(doc.length);
|
||||
expect(cloned.id).not.toBe(doc.id);
|
||||
|
||||
const json = doc.toJSON();
|
||||
const restored = AudioDocument.fromJSON(json);
|
||||
expect(restored.sampleRate).toBe(doc.sampleRate);
|
||||
expect(restored.edits.length).toBe(doc.edits.length);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user