summaryrefslogtreecommitdiff
path: root/apps/web/src/retime/__tests__/split.test.ts
blob: 3c7bef63270744a173bb1bc04c3b6a3e410b0f94 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import { describe, expect, test } from "bun:test";
import {
	getSourceSpanAtClipTime,
	splitRetimeAtClipTime,
} from "@/retime";
import type { RetimeConfig } from "@/timeline";

describe("retime split", () => {
	test("measures source span at a clip time", () => {
		const retime: RetimeConfig = { rate: 2 };
		expect(getSourceSpanAtClipTime({ clipTime: 5, retime })).toBe(10);
	});

	test("returns zero for non-positive clip time", () => {
		expect(getSourceSpanAtClipTime({ clipTime: 0 })).toBe(0);
		expect(getSourceSpanAtClipTime({ clipTime: -1 })).toBe(0);
	});

	test("passes the same retime to both halves when splitting", () => {
		const retime: RetimeConfig = { rate: 1.5 };
		const result = splitRetimeAtClipTime({ retime, splitClipTime: 3 });
		expect(result.left).toBe(retime);
		expect(result.right).toBe(retime);
	});

	test("returns undefined on both sides when no retime", () => {
		const result = splitRetimeAtClipTime({ splitClipTime: 3 });
		expect(result.left).toBeUndefined();
		expect(result.right).toBeUndefined();
	});
});