Initial Commit
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
import { describe, expect, it } from "@suaveplan/testing/runner";
|
||||
import { BeatDetector } from "../src/detector/beat-detector.js";
|
||||
import { makeMetronome } from "./fixtures.js";
|
||||
|
||||
describe("integration — full analyse round-trip", () => {
|
||||
it("recovers BPM across a range of synthetic tempi", {
|
||||
timeout: 30000,
|
||||
}, async () => {
|
||||
for (const bpm of [100, 120, 140]) {
|
||||
const doc = makeMetronome({ bpm, durationSeconds: 6 });
|
||||
const r = await new BeatDetector().analyze(doc);
|
||||
expect(r.bpm).toBeGreaterThanOrEqual(60);
|
||||
expect(r.bpm).toBeLessThanOrEqual(200);
|
||||
}
|
||||
});
|
||||
|
||||
it("end-to-end matches independent runs", { timeout: 30000 }, async () => {
|
||||
const doc = makeMetronome({ bpm: 120, durationSeconds: 6 });
|
||||
const d = new BeatDetector();
|
||||
const a = await d.analyze(doc);
|
||||
const b = await d.analyze(doc);
|
||||
expect(a.bpm).toBe(b.bpm);
|
||||
expect(a.beats.length).toBe(b.beats.length);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user