/**
* libjass
*
* https://github.com/Arnavion/libjass
*
* Copyright 2013 Arnav Singh
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
define([
"intern!tdd",
"intern/chai!assert",
"tests/support/parser-test",
"libjass",
"intern/dojo/text!./1.ass",
"intern/dojo/text!./2.ass",
"intern/dojo/text!./3.ass",
"intern/dojo/text!./4.ass",
"intern/dojo/text!./5.ass",
"intern/dojo/text!./6.ass",
"intern/dojo/text!./7.ass"
], function (tdd, assert, parserTest, libjass, ass_1, ass_2, ass_3, ass_4, ass_5, ass_6, ass_7) {
tdd.suite("Miscellaneous", function () {
tdd.test("herkz", parserTest("{\\pos(311,4)\\blur0.8\\fs40\\bord0\\c&H3F171F&\\t(3820,3820,\\blur6}Chi{\\c&H422CB1&}tose {\\c&H3F171F&}Furu", "dialogueParts", [
new libjass.parts.Position(311, 4),
new libjass.parts.GaussianBlur(0.8),
new libjass.parts.FontSize(40),
new libjass.parts.Border(0),
new libjass.parts.PrimaryColor(new libjass.parts.Color(31, 23, 63, 1)),
new libjass.parts.Transform(3.82, 3.82, null, [new libjass.parts.GaussianBlur(6)]),
new libjass.parts.Text("Chi"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(177, 44, 66, 1)),
new libjass.parts.Text("tose "),
new libjass.parts.PrimaryColor(new libjass.parts.Color(31, 23, 63, 1)),
new libjass.parts.Text("Furu")
]));
tdd.test("herkz-fixed", parserTest("{\\pos(311,4)\\blur0.8\\fs40\\bord0\\c&H3F171F&\\t(3820,3820,\\blur6)}Chi{\\c&H422CB1&}tose {\\c&H3F171F&}Furu", "dialogueParts", [
new libjass.parts.Position(311, 4),
new libjass.parts.GaussianBlur(0.8),
new libjass.parts.FontSize(40),
new libjass.parts.Border(0),
new libjass.parts.PrimaryColor(new libjass.parts.Color(31, 23, 63, 1)),
new libjass.parts.Transform(3.82, 3.82, null, [new libjass.parts.GaussianBlur(6)]),
new libjass.parts.Text("Chi"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(177, 44, 66, 1)),
new libjass.parts.Text("tose "),
new libjass.parts.PrimaryColor(new libjass.parts.Color(31, 23, 63, 1)),
new libjass.parts.Text("Furu")
]));
tdd.test("knk-02", parserTest("{\\\\k0}{\\1c&H35C2BD&}s{\\1c&H53A2C0&}e{\\1c&H757FC4&}i{\\1c&H866EC6&}j{\\1c&H995AC8&}a{\\1c&HBC36CC&}k{\\1c&HD420C8&}u{\\1c&HB942A7&} {\\1c&HA25F8A&}w{\\1c&H799356&}a{\\1c&H63B03A&} {\\1c&H54C723&}k{\\1c&H68C126&}i{\\1c&H7BBC29&}r{\\1c&H8CB82C&}i{\\1c&HA2B230&}s{\\1c&HBEAB34&}a{\\1c&HD8A339&}k{\\1c&HB68D3B&}u{\\1c&HA4813C&} {\\1c&H88703E&}y{\\1c&H665A41&}o{\\1c&H444444&}u", "dialogueParts", [
new libjass.parts.Comment("\\"),
new libjass.parts.ColorKaraoke(0),
new libjass.parts.PrimaryColor(new libjass.parts.Color(189, 194, 53, 1)),
new libjass.parts.Text("s"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(192, 162, 83, 1)),
new libjass.parts.Text("e"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(196, 127, 117, 1)),
new libjass.parts.Text("i"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(198, 110, 134, 1)),
new libjass.parts.Text("j"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(200, 90, 153, 1)),
new libjass.parts.Text("a"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(204, 54, 188, 1)),
new libjass.parts.Text("k"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(200, 32, 212, 1)),
new libjass.parts.Text("u"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(167, 66, 185, 1)),
new libjass.parts.Text(" "),
new libjass.parts.PrimaryColor(new libjass.parts.Color(138, 95, 162, 1)),
new libjass.parts.Text("w"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(86, 147, 121, 1)),
new libjass.parts.Text("a"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(58, 176, 99, 1)),
new libjass.parts.Text(" "),
new libjass.parts.PrimaryColor(new libjass.parts.Color(35, 199, 84, 1)),
new libjass.parts.Text("k"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(38, 193, 104, 1)),
new libjass.parts.Text("i"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(41, 188, 123, 1)),
new libjass.parts.Text("r"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(44, 184, 140, 1)),
new libjass.parts.Text("i"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(48, 178, 162, 1)),
new libjass.parts.Text("s"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(52, 171, 190, 1)),
new libjass.parts.Text("a"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(57, 163, 216, 1)),
new libjass.parts.Text("k"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(59, 141, 182, 1)),
new libjass.parts.Text("u"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(60, 129, 164, 1)),
new libjass.parts.Text(" "),
new libjass.parts.PrimaryColor(new libjass.parts.Color(62, 112, 136, 1)),
new libjass.parts.Text("y"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(65, 90, 102, 1)),
new libjass.parts.Text("o"),
new libjass.parts.PrimaryColor(new libjass.parts.Color(68, 68, 68, 1)),
new libjass.parts.Text("u")
]));
tdd.test("klk-01", parserTest("{\\an5\\bord0\\blur1\\p1\\c&H97B9D6&\\pos(143.39,358.77)\\frz334.3\\fscx39\\fscy47\\iclip(m 129 338 l 121 381 110 372 110 331)}m 0 0 l 100 0 100 100 0 100", "dialogueParts", [
new libjass.parts.Alignment(5),
new libjass.parts.Border(0),
new libjass.parts.GaussianBlur(1),
new libjass.parts.DrawingMode(1),
new libjass.parts.PrimaryColor(new libjass.parts.Color(214, 185, 151, 1)),
new libjass.parts.Position(143.39, 358.77),
new libjass.parts.RotateZ(334.3),
new libjass.parts.FontScaleX(0.39),
new libjass.parts.FontScaleY(0.47),
new libjass.parts.VectorClip(1, [
new libjass.parts.drawing.MoveInstruction(129, 338),
new libjass.parts.drawing.LineInstruction(121, 381),
new libjass.parts.drawing.LineInstruction(110, 372),
new libjass.parts.drawing.LineInstruction(110, 331)
], false),
new libjass.parts.DrawingInstructions([
new libjass.parts.drawing.MoveInstruction(0, 0),
new libjass.parts.drawing.LineInstruction(100, 0),
new libjass.parts.drawing.LineInstruction(100, 100),
new libjass.parts.drawing.LineInstruction(0, 100)
])
]));
tdd.test("chihaya-16", parserTest("{\\an7\\pos(0,0)\\bord0\\blur0.5\\p1\\c&HFAFAFA&}m 88 644 l 87 681 l 255 681 l 256 643 m 311 643 l 310 681 l 482 681 l 483 641 m 562 641 l 561 679 l 730 676 l 731 640 m 800 638 l 798 677 l 968 676 l 970 639 m 1031 638 l 1028 675 l 1200 674 l 1200 640 {p0}", "dialogueParts", [
new libjass.parts.Alignment(7),
new libjass.parts.Position(0, 0),
new libjass.parts.Border(0),
new libjass.parts.GaussianBlur(0.5),
new libjass.parts.DrawingMode(1),
new libjass.parts.PrimaryColor(new libjass.parts.Color(250, 250, 250)),
new libjass.parts.DrawingInstructions([
new libjass.parts.drawing.MoveInstruction(88, 644),
new libjass.parts.drawing.LineInstruction(87, 681),
new libjass.parts.drawing.LineInstruction(255, 681),
new libjass.parts.drawing.LineInstruction(256, 643),
new libjass.parts.drawing.MoveInstruction(311, 643),
new libjass.parts.drawing.LineInstruction(310, 681),
new libjass.parts.drawing.LineInstruction(482, 681),
new libjass.parts.drawing.LineInstruction(483, 641),
new libjass.parts.drawing.MoveInstruction(562, 641),
new libjass.parts.drawing.LineInstruction(561, 679),
new libjass.parts.drawing.LineInstruction(730, 676),
new libjass.parts.drawing.LineInstruction(731, 640),
new libjass.parts.drawing.MoveInstruction(800, 638),
new libjass.parts.drawing.LineInstruction(798, 677),
new libjass.parts.drawing.LineInstruction(968, 676),
new libjass.parts.drawing.LineInstruction(970, 639),
new libjass.parts.drawing.MoveInstruction(1031, 638),
new libjass.parts.drawing.LineInstruction(1028, 675),
new libjass.parts.drawing.LineInstruction(1200, 674),
new libjass.parts.drawing.LineInstruction(1200, 640)
]),
new libjass.parts.Comment("p0")
]));
tdd.test("ASS", function () {
this.timeout = 1000;
return libjass.ASS.fromString(ass_1, libjass.Format.ASS).then(function (ass) {
assert.strictEqual(ass.properties.resolutionX, 1280);
assert.strictEqual(ass.properties.resolutionY, 720);
assert.strictEqual(ass.properties.wrappingStyle, libjass.WrappingStyle.SmartWrappingWithWiderTopLine);
assert.strictEqual(ass.properties.scaleBorderAndShadow, true);
assert.strictEqual(ass.styles.size, 2);
assert.strictEqual(ass.styles.get("Default").name, "Default");
assert.strictEqual(ass.styles.get("Default").italic, false);
assert.strictEqual(ass.styles.get("Default").bold, false);
assert.strictEqual(ass.styles.get("Default").underline, false);
assert.strictEqual(ass.styles.get("Default").strikeThrough, false);
assert.strictEqual(ass.styles.get("Default").fontName, "Arial");
assert.strictEqual(ass.styles.get("Default").fontSize, 50);
assert.strictEqual(ass.styles.get("Default").fontScaleX, 1);
assert.strictEqual(ass.styles.get("Default").fontScaleY, 1);
assert.strictEqual(ass.styles.get("Default").letterSpacing, 0);
assert.strictEqual(ass.styles.get("Default").rotationZ, 0);
assert.deepEqual(ass.styles.get("Default").primaryColor, new libjass.parts.Color(0xF9, 0xF4, 0xF1));
assert.deepEqual(ass.styles.get("Default").secondaryColor, new libjass.parts.Color(0xFF, 0x00, 0x00));
assert.deepEqual(ass.styles.get("Default").outlineColor, new libjass.parts.Color(0x15, 0x11, 0x0F));
assert.deepEqual(ass.styles.get("Default").shadowColor, new libjass.parts.Color(0x00, 0x00, 0x00, 1 - 0x96 / 255));
assert.strictEqual(ass.styles.get("Default").outlineThickness, 1.5);
assert.strictEqual(ass.styles.get("Default").borderStyle, libjass.BorderStyle.Outline);
assert.strictEqual(ass.styles.get("Default").shadowDepth, 0);
assert.strictEqual(ass.styles.get("Default").alignment, 2);
assert.strictEqual(ass.styles.get("Default").marginLeft, 80);
assert.strictEqual(ass.styles.get("Default").marginRight, 80);
assert.strictEqual(ass.styles.get("Default").marginVertical, 35);
assert.strictEqual(ass.dialogues.length, 6);
assert.strictEqual(ass.dialogues[0].start, 263.700);
assert.strictEqual(ass.dialogues[0].end, 267.950);
assert.strictEqual(ass.dialogues[0].style, ass.styles.get("sign1"));
assert.deepEqual(ass.dialogues[0].parts, [
new libjass.parts.PrimaryColor(new libjass.parts.Color(0x39, 0x2B, 0x1C)),
new libjass.parts.OutlineColor(new libjass.parts.Color(0x7A, 0x63, 0x1E)),
new libjass.parts.Border(0),
new libjass.parts.GaussianBlur(1.8),
new libjass.parts.Position(1157, 423),
new libjass.parts.Text("Sociosqu"),
new libjass.parts.Comment("...ultrices fringilla, tortor sodales interdum aliquam")
]);
assert.strictEqual(ass.dialogues[2].start, 352.830);
assert.strictEqual(ass.dialogues[2].end, 356.280);
assert.strictEqual(ass.dialogues[2].style, ass.styles.get("Default"));
assert.deepEqual(ass.dialogues[2].parts, [
new libjass.parts.Fade(0.5, 0),
new libjass.parts.RotateZ(352.385),
new libjass.parts.GaussianBlur(2),
new libjass.parts.Position(549, 501),
new libjass.parts.PrimaryColor(new libjass.parts.Color(0xBB, 0xA2, 0xAE)),
new libjass.parts.Bold(true),
new libjass.parts.Text("Laoreet vestibulum parturient aliquam per!?")
]);
assert.strictEqual(ass.dialogues[3].start, 0.000);
assert.strictEqual(ass.dialogues[3].end, 0.000);
assert.strictEqual(ass.dialogues[3].style, ass.styles.get("Default"));
assert.deepEqual(ass.dialogues[3].parts, []);
assert.strictEqual(ass.dialogues[4].start, 75.940);
assert.strictEqual(ass.dialogues[4].end, 77.280);
assert.strictEqual(ass.dialogues[4].style, ass.styles.get("Default"));
assert.deepEqual(ass.dialogues[4].parts, [
new libjass.parts.Text("Eget odio auctor pede porta?")
]);
});
});
tdd.test("Minimal ASS", function () {
this.timeout = 1000;
var stream = new libjass.parser.StringStream(ass_1);
var streamParser = new libjass.parser.StreamParser(stream);
return streamParser.minimalASS.then(function (ass) {
assert.strictEqual(ass.properties.resolutionX, 1280);
assert.strictEqual(ass.properties.resolutionY, 720);
assert.strictEqual(ass.properties.wrappingStyle, libjass.WrappingStyle.SmartWrappingWithWiderTopLine);
assert.strictEqual(ass.properties.scaleBorderAndShadow, true);
assert.strictEqual(ass.styles.size, 1);
assert.strictEqual(ass.dialogues.length, 0);
});
});
tdd.test("ASS 2", function () {
this.timeout = 1000;
return libjass.ASS.fromString(ass_2, libjass.Format.ASS).then(function (ass) {
assert.strictEqual(ass.properties.resolutionX, 1280);
assert.strictEqual(ass.properties.resolutionY, 720);
assert.strictEqual(ass.properties.wrappingStyle, libjass.WrappingStyle.SmartWrappingWithWiderTopLine);
assert.strictEqual(ass.properties.scaleBorderAndShadow, true);
assert.strictEqual(ass.styles.size, 3);
assert.strictEqual(ass.styles.get("Default").name, "Default");
assert.strictEqual(ass.styles.get("Default").italic, false);
assert.strictEqual(ass.styles.get("Default").bold, true);
assert.strictEqual(ass.styles.get("Default").underline, false);
assert.strictEqual(ass.styles.get("Default").strikeThrough, false);
assert.strictEqual(ass.styles.get("Default").fontName, "Arial");
assert.strictEqual(ass.styles.get("Default").fontSize, 51);
assert.strictEqual(ass.styles.get("Default").fontScaleX, 1);
assert.strictEqual(ass.styles.get("Default").fontScaleY, 1);
assert.strictEqual(ass.styles.get("Default").letterSpacing, 0);
assert.strictEqual(ass.styles.get("Default").rotationZ, 0);
assert.deepEqual(ass.styles.get("Default").primaryColor, new libjass.parts.Color(0xFF, 0xFF, 0xFF));
assert.deepEqual(ass.styles.get("Default").secondaryColor, new libjass.parts.Color(0xFF, 0x00, 0x00));
assert.deepEqual(ass.styles.get("Default").outlineColor, new libjass.parts.Color(0x19, 0x2D, 0x19));
assert.deepEqual(ass.styles.get("Default").shadowColor, new libjass.parts.Color(0x10, 0x22, 0x06, 1 - 0xA0 / 255));
assert.strictEqual(ass.styles.get("Default").outlineThickness, 3);
assert.strictEqual(ass.styles.get("Default").borderStyle, libjass.BorderStyle.Outline);
assert.strictEqual(ass.styles.get("Default").shadowDepth, 1);
assert.strictEqual(ass.styles.get("Default").alignment, 2);
assert.strictEqual(ass.styles.get("Default").marginLeft, 110);
assert.strictEqual(ass.styles.get("Default").marginRight, 110);
assert.strictEqual(ass.styles.get("Default").marginVertical, 40);
assert.strictEqual(ass.dialogues.length, 9);
assert.strictEqual(ass.dialogues[0].start, 646.460);
assert.strictEqual(ass.dialogues[0].end, 652.130);
assert.strictEqual(ass.dialogues[0].style, ass.styles.get("op trans"));
assert.deepEqual(ass.dialogues[0].parts, [
new libjass.parts.Fade(0.2, 0),
new libjass.parts.Text("Sapien rhoncus, suscipit posuere in nunc pellentesque")
]);
assert.strictEqual(ass.dialogues[3].start, 646.460);
assert.strictEqual(ass.dialogues[3].end, 646.660);
assert.strictEqual(ass.dialogues[3].style, ass.styles.get("op kara"));
assert.deepEqual(ass.dialogues[3].parts, [
new libjass.parts.Fade(0.2, 0),
new libjass.parts.Comment("("),
new libjass.parts.Position(640, 33),
new libjass.parts.Alpha(1 - 0x00 / 255),
new libjass.parts.GaussianBlur(2),
new libjass.parts.Text("id maecenas mi in ut varius nunc"),
]);
assert.strictEqual(ass.dialogues[6].start, 3.370);
assert.strictEqual(ass.dialogues[6].end, 7.940);
assert.strictEqual(ass.dialogues[6].style, ass.styles.get("Default"));
assert.deepEqual(ass.dialogues[6].parts, [
new libjass.parts.Text("Sed arcu non wisi sed"),
new libjass.parts.NewLine(),
new libjass.parts.Text("ante nisl pede aliquam")
]);
});
});
tdd.test("ASS with BOM", function () {
this.timeout = 1000;
if (ass_3.charCodeAt(0) !== 0xfeff) {
ass_3 = String.fromCharCode(0xfeff) + ass_3;
}
return libjass.ASS.fromString(ass_3, libjass.Format.ASS).then(function (ass) {
assert.strictEqual(ass.properties.resolutionX, 1280);
assert.strictEqual(ass.properties.resolutionY, 720);
assert.strictEqual(ass.properties.wrappingStyle, libjass.WrappingStyle.SmartWrappingWithWiderTopLine);
assert.strictEqual(ass.properties.scaleBorderAndShadow, true);
});
});
tdd.test("Reference to 'default' style should match style named 'Default'", function () {
this.timeout = 1000;
return libjass.ASS.fromString(ass_4, libjass.Format.ASS).then(function (ass) {
assert.strictEqual(ass.styles.size, 1);
assert.strictEqual(ass.styles.get("Default").name, "Default");
assert.strictEqual(ass.styles.get("Default").fontName, "Arial");
assert.strictEqual(ass.dialogues.length, 1);
assert.strictEqual(ass.dialogues[0].style, ass.styles.get("Default"));
});
});
tdd.test("Reference to style named 'default' should not match style named 'default'", function () {
this.timeout = 1000;
return libjass.ASS.fromString(ass_5, libjass.Format.ASS).then(function (ass) {
assert.strictEqual(ass.styles.size, 2);
assert.strictEqual(ass.styles.get("default").name, "default");
assert.strictEqual(ass.styles.get("default").fontName, "Arial");
assert.strictEqual(ass.styles.get("Default").name, "Default");
assert.strictEqual(ass.styles.get("Default").fontName, "sans-serif");
assert.strictEqual(ass.dialogues.length, 1);
assert.strictEqual(ass.dialogues[0].style, ass.styles.get("Default"));
});
});
tdd.test("Leading asterisks in style names are stripped", function () {
this.timeout = 1000;
return libjass.ASS.fromString(ass_6, libjass.Format.ASS).then(function (ass) {
assert.strictEqual(ass.styles.size, 2);
assert.strictEqual(ass.styles.get("Default").name, "Default");
assert.strictEqual(ass.styles.get("Default").fontName, "Arial");
assert.strictEqual(ass.styles.get("sign1").name, "sign1");
assert.strictEqual(ass.styles.get("sign1").fontName, "Times New Roman");
assert.strictEqual(ass.dialogues.length, 2);
assert.strictEqual(ass.dialogues[0].style, ass.styles.get("sign1"));
assert.strictEqual(ass.dialogues[1].style, ass.styles.get("Default"));
});
});
tdd.test("First unnamed section should be treated as Script Info", function () {
this.timeout = 1000;
return libjass.ASS.fromString(ass_7, libjass.Format.ASS).then(function (ass) {
assert.strictEqual(ass.properties.resolutionX, 1280);
assert.strictEqual(ass.properties.resolutionY, 720);
assert.strictEqual(ass.styles.size, 2);
assert.strictEqual(ass.dialogues.length, 6);
});
});
tdd.test("First unnamed section should be treated as Script Info - minimal ASS", function () {
this.timeout = 1000;
var stream = new libjass.parser.StringStream(ass_7);
var streamParser = new libjass.parser.StreamParser(stream);
return streamParser.minimalASS.then(function (ass) {
assert.strictEqual(ass.properties.resolutionX, 1280);
assert.strictEqual(ass.properties.resolutionY, 720);
assert.strictEqual(ass.styles.size, 1);
assert.strictEqual(ass.dialogues.length, 0);
});
});
tdd.test("SRT", function () {
this.timeout = 1000;
var input =
"1\n00:00:10,500 --> 00:00:13,000\nElephant's Dream\n\n2\n00:00:15,000 --> 00:00:18,000 X1:52 X2:303 Y1:438 Y2:453\nAt the left we can see...";
return libjass.ASS.fromString(input, libjass.Format.SRT).then(function (ass) {
assert.strictEqual(ass.dialogues.length, 2);
assert.strictEqual(ass.dialogues[0].start, 10.500);
assert.strictEqual(ass.dialogues[0].end, 13.000);
assert.deepEqual(ass.dialogues[0].parts, [
new libjass.parts.Text("Elephant's Dream")
]);
assert.strictEqual(ass.dialogues[1].start, 15.000);
assert.strictEqual(ass.dialogues[1].end, 18.000);
assert.deepEqual(ass.dialogues[1].parts, [
new libjass.parts.Text("At the left we can see..."),
new libjass.parts.PrimaryColor(null)
]);
});
});
tdd.test("SRT", function () {
this.timeout = 1000;
var input =
"1\n00:01:15,940 --> 00:01:17,280\nHave you secured the key?\nWhy can't people forgive each other\n\n2\n00:01:17,280 --> 00:01:17,670\nWhy can't people forgive each other";
return libjass.ASS.fromString(input, libjass.Format.SRT).then(function (ass) {
assert.strictEqual(ass.dialogues.length, 2);
assert.strictEqual(ass.dialogues[0].start, 1 * 60 + 15.940);
assert.strictEqual(ass.dialogues[0].end, 1 * 60 + 17.280);
assert.deepEqual(ass.dialogues[0].parts, [
new libjass.parts.Text("Have you secured the key?"),
new libjass.parts.NewLine(),
new libjass.parts.Text("Why can't people forgive each other")
]);
assert.strictEqual(ass.dialogues[1].start, 1 * 60 + 17.280);
assert.strictEqual(ass.dialogues[1].end, 1 * 60 + 17.670);
assert.deepEqual(ass.dialogues[1].parts, [
new libjass.parts.Text("Why can't people forgive each other")
]);
});
});
});
});