import { describe, it, expect } from "vitest"; import getCueBlocks from "../get_cue_blocks"; const webvtt1 = [ "WEBVTT", "", "STYLE", "::cue {", " background-image: linear-gradient(to bottom, dimgray, lightgray);", " color: papayawhip;", "}", '/* Style blocks cannot use blank lines nor "dash dash greater than" */', "", "NOTE comment blocks can be used between style blocks.", "", "STYLE", "::cue(b) {", " color: peachpuff;", "}", "", "00:00:00.000 --> 00:00:10.000", "- Hello world.", "", "NOTE style blocks cannot appear after the first cue.", "", "00:05:00.000 --> 00:06:10.000", "Rendez-vous on Champs-Elysees", "", ]; const webvtt2 = [ "WEBVTT", "", "00:00:00.000 --> 00:00:10.000", "Toussaint Louverture", "", "", "00:02:00.000 --> 00:02:10.000", "Liberte", "Egalite", "", "00:07:00.000 --> 00:07:10.000", "Fraternite", ]; const webvtt3 = [ "WEBVTT", "", "NOTE", "00:17:31.080 --> 00:17:32.200", "Je suis le petit chevalier", "Avec le ciel dessus mes yeux", "Je ne peux pas me effroyer", "", "", "00:17:55.520 --> 00:17:57.640", "Je suis le petit chevalier", "", "00:18:01.520 --> 00:18:09.640", "", "Avec la terre dessous mes pieds", "", "112", "00:18:31.080 --> 00:18:32.200", "NOTE", "TOTO", "", "113", "00:18:51.080 --> 00:18:52.200", "J'irai te visiter", "J'irai te visiter", "", ]; const webvtt4 = [ "WEBVTT", "", "STYLE", "00:17:31.080 --> 00:17:32.200", "Ce que j'ai fais, ce soir la", "Ce qu'elle a dit, ce soir la", "", "", "", "Realisant mon espoir", "", "", "", "Je me lance, vers la gloire, OK", ]; const webvtt5 = [ "WEBVTT", " Some Header", "00:15:31.080 --> 00:15:32.200", "BLALABAL", "", "", "", "REGION", "00:17:31.080 --> 00:17:32.200", "Je n'ai plus peur de perdre mon temps", "", "00:18:51.080 --> 00:18:52.200", "Je n'ai plus peur de perdre mes dents", ]; const webvtt6 = [ "", "112", "00:17:31.080 --> 00:17:32.200", "J'ai tres tres peur ca c'est certain", "", "NOTE", "", "J'ai tres tres peur mais beaucoup moins", "", "", ]; describe("parsers - webvtt - getCueBlocks", () => { it("should return only timed cue blocks from a webvtt", () => { expect(getCueBlocks(webvtt1, 1)).toEqual([ ["00:00:00.000 --> 00:00:10.000", "- Hello world."], ["00:05:00.000 --> 00:06:10.000", "Rendez-vous on Champs-Elysees"], ]); expect(getCueBlocks(webvtt2, 1)).toEqual([ ["00:00:00.000 --> 00:00:10.000", "Toussaint Louverture"], ["00:02:00.000 --> 00:02:10.000", "Liberte", "Egalite"], ["00:07:00.000 --> 00:07:10.000", "Fraternite"], ]); expect(getCueBlocks(webvtt3, 1)).toEqual([ [ "NOTE", "00:17:31.080 --> 00:17:32.200", "Je suis le petit chevalier", "Avec le ciel dessus mes yeux", "Je ne peux pas me effroyer", ], ["00:17:55.520 --> 00:17:57.640", "Je suis le petit chevalier"], ["00:18:01.520 --> 00:18:09.640"], ["112", "00:18:31.080 --> 00:18:32.200", "NOTE", "TOTO"], ["113", "00:18:51.080 --> 00:18:52.200", "J'irai te visiter", "J'irai te visiter"], ]); expect(getCueBlocks(webvtt4, 1)).toEqual([ [ "STYLE", "00:17:31.080 --> 00:17:32.200", "Ce que j'ai fais, ce soir la", "Ce qu'elle a dit, ce soir la", ], ]); expect(getCueBlocks(webvtt5, 5)).toEqual([ [ "REGION", "00:17:31.080 --> 00:17:32.200", "Je n'ai plus peur de perdre mon temps", ], ["00:18:51.080 --> 00:18:52.200", "Je n'ai plus peur de perdre mes dents"], ]); expect(getCueBlocks(webvtt6, 0)).toEqual([ ["112", "00:17:31.080 --> 00:17:32.200", "J'ai tres tres peur ca c'est certain"], ]); }); });