import { $ } from "zx"; import { BlankEntry, MediaEntry } from "./entry"; import { Project } from "./kdenlive"; describe("Kdenlive", () => { describe("example", () => { it("should equal 'example'", async () => { const project = new Project(30); project.addProducer("/home/kuba/Videos/5min.mp4"); project.addProducer("/home/kuba/Videos/5min.wav"); await $`echo ${await project.toXML()} > project-generated.kdenlive`; }); }); describe("tracks", () => { it("should generate a project with three audio tracks", async () => { const project = new Project(30); for (let i = 1; i <= 3; i++) { project.addAudioTractor(); } await $`echo ${await project.toXML()} > three-audio-tracks.kdenlive`; }); it("should generate a project with one video track", async () => { const project = new Project(30); project.addVideoTractor(); await $`echo ${await project.toXML()} > 1v-tracks.kdenlive`; }); it("should generate a project with one video track and one audio track", async () => { const project = new Project(30); project.addVideoTractor(); project.addAudioTractor(); await $`echo ${await project.toXML()} > 1a1v-tracks.kdenlive`; }); it("should generate a project with three audio and video tracks", async () => { const project = new Project(30); for (let i = 1; i <= 3; i++) { project.addVideoTractor(); project.addAudioTractor(); } await $`echo ${await project.toXML()} > 3a3v-tracks.kdenlive`; }); it("should generate a project with 20 audio and video tracks", async () => { const project = new Project(30); for (let i = 1; i <= 20; i++) { project.addVideoTractor(); project.addAudioTractor(); } await $`echo ${await project.toXML()} > 20a20v-tracks.kdenlive`; }); }); describe("clips", () => { it("should generate a 1a1v project with one clip", async () => { const project = new Project(30); const producer = project.addProducer("/home/kuba/Videos/5min.mp4"); const video_track = project.addVideoTractor(); const audio_track = project.addAudioTractor(); const entry = new MediaEntry( producer, "00:00:00.000", "00:00:01.000" ); video_track.addEntry(entry); audio_track.addEntry(entry); await $`echo ${await project.toXML()} > 1s-clip.kdenlive`; }); it("should generate a 1a1v project with two contingent clips", async () => { const project = new Project(30); const producer = project.addProducer("/home/kuba/Videos/5min.mp4"); const video_track = project.addVideoTractor(); const audio_track = project.addAudioTractor(); const entry = new MediaEntry( producer, "00:00:00.000", "00:00:01.000" ); video_track.addEntry(entry); audio_track.addEntry(entry); const entry2 = new MediaEntry( producer, "00:00:01.000", "00:00:02.000" ); video_track.addEntry(entry2); audio_track.addEntry(entry2); await $`echo ${await project.toXML()} > 2x1s-clip.kdenlive`; }); it("should generate a 1a1v project with 20 contingent clips", async () => { const project = new Project(30); const producer = project.addProducer("/home/kuba/Videos/5min.mp4"); const video_track = project.addVideoTractor(); const audio_track = project.addAudioTractor(); for (let i = 0; i <= 20; i++) { let entry = new MediaEntry( producer, `00:00:${i.toString().padStart(2, "0")}.000`, `00:00:${(i + 1).toString().padStart(2, "0")}.000` ); video_track.addEntry(entry); audio_track.addEntry(entry); } await $`echo ${await project.toXML()} > 20x1s-clip.kdenlive`; }); it("should generate a 1a1v project with 10 clips with 1s pauses", async () => { const project = new Project(30); const producer = project.addProducer("/home/kuba/Videos/5min.mp4"); const video_track = project.addVideoTractor(); const audio_track = project.addAudioTractor(); for (let i = 0; i <= 20; i++) { let entry = new MediaEntry( producer, `00:00:${i.toString().padStart(2, "0")}.000`, `00:00:${(i + 1).toString().padStart(2, "0")}.000` ); video_track.addEntry(entry); audio_track.addEntry(entry); video_track.addEntry(new BlankEntry("00:00:01.000")); audio_track.addEntry(new BlankEntry("00:00:01.000")); } await $`echo ${await project.toXML()} > 10x1s-clip-with-breaks.kdenlive`; }); }); });