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"],
]);
});
});