Add tests for CuesWithTiming.endTimeUs

#minor-release

PiperOrigin-RevId: 570988195
This commit is contained in:
ibaker 2023-10-05 05:47:45 -07:00 committed by Copybara-Service
parent 9cc75ca52e
commit 6057b59723
8 changed files with 101 additions and 0 deletions

View File

@ -76,22 +76,26 @@ public class SubtitleExtractorTest {
CuesWithTiming cues0 = decodeSample(trackOutput, 0); CuesWithTiming cues0 = decodeSample(trackOutput, 0);
assertThat(cues0.startTimeUs).isEqualTo(0); assertThat(cues0.startTimeUs).isEqualTo(0);
assertThat(cues0.durationUs).isEqualTo(1_234_000); assertThat(cues0.durationUs).isEqualTo(1_234_000);
assertThat(cues0.endTimeUs).isEqualTo(1_234_000);
assertThat(cues0.cues).hasSize(1); assertThat(cues0.cues).hasSize(1);
assertThat(cues0.cues.get(0).text.toString()).isEqualTo("This is the first subtitle."); assertThat(cues0.cues.get(0).text.toString()).isEqualTo("This is the first subtitle.");
CuesWithTiming cues1 = decodeSample(trackOutput, 1); CuesWithTiming cues1 = decodeSample(trackOutput, 1);
assertThat(cues1.startTimeUs).isEqualTo(2_345_000); assertThat(cues1.startTimeUs).isEqualTo(2_345_000);
assertThat(cues1.durationUs).isEqualTo(2_600_000 - 2_345_000); assertThat(cues1.durationUs).isEqualTo(2_600_000 - 2_345_000);
assertThat(cues1.endTimeUs).isEqualTo(2_600_000);
assertThat(cues1.cues).hasSize(1); assertThat(cues1.cues).hasSize(1);
assertThat(cues1.cues.get(0).text.toString()).isEqualTo("This is the second subtitle."); assertThat(cues1.cues.get(0).text.toString()).isEqualTo("This is the second subtitle.");
CuesWithTiming cues2 = decodeSample(trackOutput, 2); CuesWithTiming cues2 = decodeSample(trackOutput, 2);
assertThat(cues2.startTimeUs).isEqualTo(2_600_000); assertThat(cues2.startTimeUs).isEqualTo(2_600_000);
assertThat(cues2.durationUs).isEqualTo(3_456_000 - 2_600_000); assertThat(cues2.durationUs).isEqualTo(3_456_000 - 2_600_000);
assertThat(cues2.endTimeUs).isEqualTo(3_456_000);
assertThat(cues2.cues).hasSize(2); assertThat(cues2.cues).hasSize(2);
assertThat(cues2.cues.get(0).text.toString()).isEqualTo("This is the second subtitle."); assertThat(cues2.cues.get(0).text.toString()).isEqualTo("This is the second subtitle.");
assertThat(cues2.cues.get(1).text.toString()).isEqualTo("This is the third subtitle."); assertThat(cues2.cues.get(1).text.toString()).isEqualTo("This is the third subtitle.");
CuesWithTiming cues3 = decodeSample(trackOutput, 3); CuesWithTiming cues3 = decodeSample(trackOutput, 3);
assertThat(cues3.startTimeUs).isEqualTo(3_456_000); assertThat(cues3.startTimeUs).isEqualTo(3_456_000);
assertThat(cues3.durationUs).isEqualTo(4_567_000 - 3_456_000); assertThat(cues3.durationUs).isEqualTo(4_567_000 - 3_456_000);
assertThat(cues3.endTimeUs).isEqualTo(4_567_000);
assertThat(cues3.cues).hasSize(1); assertThat(cues3.cues).hasSize(1);
assertThat(cues3.cues.get(0).text.toString()).isEqualTo("This is the third subtitle."); assertThat(cues3.cues.get(0).text.toString()).isEqualTo("This is the third subtitle.");
} }
@ -122,17 +126,20 @@ public class SubtitleExtractorTest {
CuesWithTiming cues0 = decodeSample(trackOutput, 0); CuesWithTiming cues0 = decodeSample(trackOutput, 0);
assertThat(cues0.startTimeUs).isEqualTo(2_345_000L); assertThat(cues0.startTimeUs).isEqualTo(2_345_000L);
assertThat(cues0.durationUs).isEqualTo(2_600_000 - 2_345_000L); assertThat(cues0.durationUs).isEqualTo(2_600_000 - 2_345_000L);
assertThat(cues0.endTimeUs).isEqualTo(2_600_000);
assertThat(cues0.cues).hasSize(1); assertThat(cues0.cues).hasSize(1);
assertThat(cues0.cues.get(0).text.toString()).isEqualTo("This is the second subtitle."); assertThat(cues0.cues.get(0).text.toString()).isEqualTo("This is the second subtitle.");
CuesWithTiming cues1 = decodeSample(trackOutput, 1); CuesWithTiming cues1 = decodeSample(trackOutput, 1);
assertThat(cues1.startTimeUs).isEqualTo(2_600_000); assertThat(cues1.startTimeUs).isEqualTo(2_600_000);
assertThat(cues1.durationUs).isEqualTo(3_456_000 - 2_600_000); assertThat(cues1.durationUs).isEqualTo(3_456_000 - 2_600_000);
assertThat(cues1.endTimeUs).isEqualTo(3_456_000);
assertThat(cues1.cues).hasSize(2); assertThat(cues1.cues).hasSize(2);
assertThat(cues1.cues.get(0).text.toString()).isEqualTo("This is the second subtitle."); assertThat(cues1.cues.get(0).text.toString()).isEqualTo("This is the second subtitle.");
assertThat(cues1.cues.get(1).text.toString()).isEqualTo("This is the third subtitle."); assertThat(cues1.cues.get(1).text.toString()).isEqualTo("This is the third subtitle.");
CuesWithTiming cues2 = decodeSample(trackOutput, 2); CuesWithTiming cues2 = decodeSample(trackOutput, 2);
assertThat(cues2.startTimeUs).isEqualTo(3_456_000); assertThat(cues2.startTimeUs).isEqualTo(3_456_000);
assertThat(cues2.durationUs).isEqualTo(4_567_000L - 3_456_000); assertThat(cues2.durationUs).isEqualTo(4_567_000L - 3_456_000);
assertThat(cues2.endTimeUs).isEqualTo(4_567_000L);
assertThat(cues2.cues).hasSize(1); assertThat(cues2.cues).hasSize(1);
assertThat(cues2.cues.get(0).text.toString()).isEqualTo("This is the third subtitle."); assertThat(cues2.cues.get(0).text.toString()).isEqualTo("This is the third subtitle.");
} }
@ -163,17 +170,20 @@ public class SubtitleExtractorTest {
CuesWithTiming cues0 = decodeSample(trackOutput, 0); CuesWithTiming cues0 = decodeSample(trackOutput, 0);
assertThat(cues0.startTimeUs).isEqualTo(2_345_000L); assertThat(cues0.startTimeUs).isEqualTo(2_345_000L);
assertThat(cues0.durationUs).isEqualTo(2_600_000 - 2_345_000L); assertThat(cues0.durationUs).isEqualTo(2_600_000 - 2_345_000L);
assertThat(cues0.endTimeUs).isEqualTo(2_600_000);
assertThat(cues0.cues).hasSize(1); assertThat(cues0.cues).hasSize(1);
assertThat(cues0.cues.get(0).text.toString()).isEqualTo("This is the second subtitle."); assertThat(cues0.cues.get(0).text.toString()).isEqualTo("This is the second subtitle.");
CuesWithTiming cues1 = decodeSample(trackOutput, 1); CuesWithTiming cues1 = decodeSample(trackOutput, 1);
assertThat(cues1.startTimeUs).isEqualTo(2_600_000); assertThat(cues1.startTimeUs).isEqualTo(2_600_000);
assertThat(cues1.durationUs).isEqualTo(3_456_000 - 2_600_000); assertThat(cues1.durationUs).isEqualTo(3_456_000 - 2_600_000);
assertThat(cues1.endTimeUs).isEqualTo(3_456_000);
assertThat(cues1.cues).hasSize(2); assertThat(cues1.cues).hasSize(2);
assertThat(cues1.cues.get(0).text.toString()).isEqualTo("This is the second subtitle."); assertThat(cues1.cues.get(0).text.toString()).isEqualTo("This is the second subtitle.");
assertThat(cues1.cues.get(1).text.toString()).isEqualTo("This is the third subtitle."); assertThat(cues1.cues.get(1).text.toString()).isEqualTo("This is the third subtitle.");
CuesWithTiming cues2 = decodeSample(trackOutput, 2); CuesWithTiming cues2 = decodeSample(trackOutput, 2);
assertThat(cues2.startTimeUs).isEqualTo(3_456_000); assertThat(cues2.startTimeUs).isEqualTo(3_456_000);
assertThat(cues2.durationUs).isEqualTo(4_567_000L - 3_456_000); assertThat(cues2.durationUs).isEqualTo(4_567_000L - 3_456_000);
assertThat(cues2.endTimeUs).isEqualTo(4_567_000L);
assertThat(cues2.cues).hasSize(1); assertThat(cues2.cues).hasSize(1);
assertThat(cues2.cues.get(0).text.toString()).isEqualTo("This is the third subtitle."); assertThat(cues2.cues.get(0).text.toString()).isEqualTo("This is the third subtitle.");
} }

View File

@ -164,6 +164,7 @@ public final class SsaParserTest {
// Because of the length restriction, we only partially parse the third line of dialogue // Because of the length restriction, we only partially parse the third line of dialogue
assertThat(allCues.get(1).startTimeUs).isEqualTo(4560000); assertThat(allCues.get(1).startTimeUs).isEqualTo(4560000);
assertThat(allCues.get(1).durationUs).isEqualTo(8900000 - 4560000); assertThat(allCues.get(1).durationUs).isEqualTo(8900000 - 4560000);
assertThat(allCues.get(1).endTimeUs).isEqualTo(8900000);
assertThat(allCues.get(1).cues.get(0).text.toString()).isEqualTo("This is the third subt"); assertThat(allCues.get(1).cues.get(0).text.toString()).isEqualTo("This is the third subt");
} }
@ -237,41 +238,49 @@ public final class SsaParserTest {
assertThat(allCues).hasSize(8); assertThat(allCues).hasSize(8);
assertThat(allCues.get(0).startTimeUs).isEqualTo(1_000_000); assertThat(allCues.get(0).startTimeUs).isEqualTo(1_000_000);
assertThat(allCues.get(0).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(0).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(0).endTimeUs).isEqualTo(2_000_000);
assertThat(Iterables.transform(allCues.get(0).cues, cue -> cue.text.toString())) assertThat(Iterables.transform(allCues.get(0).cues, cue -> cue.text.toString()))
.containsExactly(firstSubtitleText); .containsExactly(firstSubtitleText);
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_000_000); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_000_000);
assertThat(allCues.get(1).durationUs).isEqualTo(2_230_000); assertThat(allCues.get(1).durationUs).isEqualTo(2_230_000);
assertThat(allCues.get(1).endTimeUs).isEqualTo(4_230_000);
assertThat(Iterables.transform(allCues.get(1).cues, cue -> cue.text.toString())) assertThat(Iterables.transform(allCues.get(1).cues, cue -> cue.text.toString()))
.containsExactly(firstSubtitleText, secondSubtitleText); .containsExactly(firstSubtitleText, secondSubtitleText);
assertThat(allCues.get(2).startTimeUs).isEqualTo(4_230_000); assertThat(allCues.get(2).startTimeUs).isEqualTo(4_230_000);
assertThat(allCues.get(2).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(2).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(2).endTimeUs).isEqualTo(5_230_000);
assertThat(Iterables.transform(allCues.get(2).cues, cue -> cue.text.toString())) assertThat(Iterables.transform(allCues.get(2).cues, cue -> cue.text.toString()))
.containsExactly(secondSubtitleText); .containsExactly(secondSubtitleText);
assertThat(allCues.get(3).startTimeUs).isEqualTo(6_000_000); assertThat(allCues.get(3).startTimeUs).isEqualTo(6_000_000);
assertThat(allCues.get(3).durationUs).isEqualTo(2_440_000); assertThat(allCues.get(3).durationUs).isEqualTo(2_440_000);
assertThat(allCues.get(3).endTimeUs).isEqualTo(8_440_000);
assertThat(Iterables.transform(allCues.get(3).cues, cue -> cue.text.toString())) assertThat(Iterables.transform(allCues.get(3).cues, cue -> cue.text.toString()))
.containsExactly(thirdSubtitleText); .containsExactly(thirdSubtitleText);
assertThat(allCues.get(4).startTimeUs).isEqualTo(8_440_000); assertThat(allCues.get(4).startTimeUs).isEqualTo(8_440_000);
assertThat(allCues.get(4).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(4).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(4).endTimeUs).isEqualTo(9_440_000);
assertThat(Iterables.transform(allCues.get(4).cues, cue -> cue.text.toString())) assertThat(Iterables.transform(allCues.get(4).cues, cue -> cue.text.toString()))
.containsExactly(fourthSubtitleText, fifthSubtitleText); .containsExactly(fourthSubtitleText, fifthSubtitleText);
assertThat(allCues.get(5).startTimeUs).isEqualTo(10_720_000); assertThat(allCues.get(5).startTimeUs).isEqualTo(10_720_000);
assertThat(allCues.get(5).durationUs).isEqualTo(2_500_000); assertThat(allCues.get(5).durationUs).isEqualTo(2_500_000);
assertThat(allCues.get(5).endTimeUs).isEqualTo(13_220_000);
assertThat(Iterables.transform(allCues.get(5).cues, cue -> cue.text.toString())) assertThat(Iterables.transform(allCues.get(5).cues, cue -> cue.text.toString()))
.containsExactly(sixthSubtitleText); .containsExactly(sixthSubtitleText);
assertThat(allCues.get(6).startTimeUs).isEqualTo(13_220_000); assertThat(allCues.get(6).startTimeUs).isEqualTo(13_220_000);
assertThat(allCues.get(6).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(6).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(6).endTimeUs).isEqualTo(14_220_000);
assertThat(Iterables.transform(allCues.get(6).cues, cue -> cue.text.toString())) assertThat(Iterables.transform(allCues.get(6).cues, cue -> cue.text.toString()))
.containsExactly(sixthSubtitleText, seventhSubtitleText); .containsExactly(sixthSubtitleText, seventhSubtitleText);
assertThat(allCues.get(7).startTimeUs).isEqualTo(14_220_000); assertThat(allCues.get(7).startTimeUs).isEqualTo(14_220_000);
assertThat(allCues.get(7).durationUs).isEqualTo(1_430_000); assertThat(allCues.get(7).durationUs).isEqualTo(1_430_000);
assertThat(allCues.get(7).endTimeUs).isEqualTo(15_650_000);
assertThat(Iterables.transform(allCues.get(7).cues, cue -> cue.text.toString())) assertThat(Iterables.transform(allCues.get(7).cues, cue -> cue.text.toString()))
.containsExactly(sixthSubtitleText); .containsExactly(sixthSubtitleText);
} }
@ -517,6 +526,7 @@ public final class SsaParserTest {
private static void assertTypicalCue1(CuesWithTiming cuesWithTiming) { private static void assertTypicalCue1(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(0); assertThat(cuesWithTiming.startTimeUs).isEqualTo(0);
assertThat(cuesWithTiming.durationUs).isEqualTo(1230000); assertThat(cuesWithTiming.durationUs).isEqualTo(1230000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(1230000);
assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the first subtitle."); assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the first subtitle.");
assertThat(Objects.requireNonNull(cuesWithTiming.cues.get(0).textAlignment)) assertThat(Objects.requireNonNull(cuesWithTiming.cues.get(0).textAlignment))
.isEqualTo(Layout.Alignment.ALIGN_CENTER); .isEqualTo(Layout.Alignment.ALIGN_CENTER);
@ -525,6 +535,7 @@ public final class SsaParserTest {
private static void assertTypicalCue2(CuesWithTiming cuesWithTiming) { private static void assertTypicalCue2(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(2340000); assertThat(cuesWithTiming.startTimeUs).isEqualTo(2340000);
assertThat(cuesWithTiming.durationUs).isEqualTo(3450000 - 2340000); assertThat(cuesWithTiming.durationUs).isEqualTo(3450000 - 2340000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(3450000);
assertThat(cuesWithTiming.cues.get(0).text.toString()) assertThat(cuesWithTiming.cues.get(0).text.toString())
.isEqualTo("This is the second subtitle \nwith a newline \nand another."); .isEqualTo("This is the second subtitle \nwith a newline \nand another.");
} }
@ -532,6 +543,7 @@ public final class SsaParserTest {
private static void assertTypicalCue3(CuesWithTiming cuesWithTiming) { private static void assertTypicalCue3(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(4560000); assertThat(cuesWithTiming.startTimeUs).isEqualTo(4560000);
assertThat(cuesWithTiming.durationUs).isEqualTo(8900000 - 4560000); assertThat(cuesWithTiming.durationUs).isEqualTo(8900000 - 4560000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(8900000);
assertThat(cuesWithTiming.cues.get(0).text.toString()) assertThat(cuesWithTiming.cues.get(0).text.toString())
.isEqualTo("This is the third subtitle, with a comma."); .isEqualTo("This is the third subtitle, with a comma.");
} }

View File

@ -250,6 +250,7 @@ public final class SubripParserTest {
assertTypicalCue1(allCues.get(0)); assertTypicalCue1(allCues.get(0));
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_000_000); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_000_000);
assertThat(allCues.get(1).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(1).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_000_000);
assertTypicalCue3(allCues.get(2)); assertTypicalCue3(allCues.get(2));
} }
@ -257,6 +258,7 @@ public final class SubripParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(0); assertThat(cuesWithTiming.startTimeUs).isEqualTo(0);
assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the first subtitle."); assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the first subtitle.");
assertThat(cuesWithTiming.durationUs).isEqualTo(1234000); assertThat(cuesWithTiming.durationUs).isEqualTo(1234000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(1234000);
} }
private static void assertTypicalCue2(CuesWithTiming cuesWithTiming) { private static void assertTypicalCue2(CuesWithTiming cuesWithTiming) {
@ -264,6 +266,7 @@ public final class SubripParserTest {
assertThat(cuesWithTiming.cues.get(0).text.toString()) assertThat(cuesWithTiming.cues.get(0).text.toString())
.isEqualTo("This is the second subtitle.\nSecond subtitle with second line."); .isEqualTo("This is the second subtitle.\nSecond subtitle with second line.");
assertThat(cuesWithTiming.durationUs).isEqualTo(3456000 - 2345000); assertThat(cuesWithTiming.durationUs).isEqualTo(3456000 - 2345000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(3456000);
} }
private static void assertTypicalCue3(CuesWithTiming cuesWithTiming) { private static void assertTypicalCue3(CuesWithTiming cuesWithTiming) {
@ -272,6 +275,7 @@ public final class SubripParserTest {
assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the third subtitle."); assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the third subtitle.");
long expectedEndTimeUs = (((2L * 60L * 60L) + 8L) * 1000L + 901L) * 1000L; long expectedEndTimeUs = (((2L * 60L * 60L) + 8L) * 1000L + 901L) * 1000L;
assertThat(cuesWithTiming.durationUs).isEqualTo(expectedEndTimeUs - expectedStartTimeUs); assertThat(cuesWithTiming.durationUs).isEqualTo(expectedEndTimeUs - expectedStartTimeUs);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(expectedEndTimeUs);
} }
private static void assertAlignmentCue( private static void assertAlignmentCue(

View File

@ -486,8 +486,10 @@ public final class TtmlParserTest {
assertThat(allCues).hasSize(2); assertThat(allCues).hasSize(2);
assertThat(allCues.get(0).startTimeUs).isEqualTo(1_000_000); assertThat(allCues.get(0).startTimeUs).isEqualTo(1_000_000);
assertThat(allCues.get(0).durationUs).isEqualTo(10_000); assertThat(allCues.get(0).durationUs).isEqualTo(10_000);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_010_000);
assertThat((double) allCues.get(1).startTimeUs).isWithin(1000).of(1_001_000_000); assertThat((double) allCues.get(1).startTimeUs).isWithin(1000).of(1_001_000_000);
assertThat((double) allCues.get(1).durationUs).isWithin(2000).of(1_001_000_000); assertThat((double) allCues.get(1).durationUs).isWithin(2000).of(1_001_000_000);
assertThat((double) allCues.get(1).endTimeUs).isWithin(2000).of(2_002_000_000);
} }
@Test @Test
@ -498,6 +500,7 @@ public final class TtmlParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(200_000); assertThat(allCues.get(0).startTimeUs).isEqualTo(200_000);
assertThat(allCues.get(0).durationUs).isEqualTo(2_800_000); assertThat(allCues.get(0).durationUs).isEqualTo(2_800_000);
assertThat(allCues.get(0).endTimeUs).isEqualTo(3_000_000);
Cue cue = Iterables.getOnlyElement(allCues.get(0).cues); Cue cue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(cue.text).isNull(); assertThat(cue.text).isNull();
assertThat(cue.bitmap).isNotNull(); assertThat(cue.bitmap).isNotNull();
@ -508,6 +511,7 @@ public final class TtmlParserTest {
assertThat(allCues.get(1).startTimeUs).isEqualTo(3_200_000); assertThat(allCues.get(1).startTimeUs).isEqualTo(3_200_000);
assertThat(allCues.get(1).durationUs).isEqualTo(3_737_000); assertThat(allCues.get(1).durationUs).isEqualTo(3_737_000);
assertThat(allCues.get(1).endTimeUs).isEqualTo(6_937_000);
cue = Iterables.getOnlyElement(allCues.get(1).cues); cue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(cue.text).isNull(); assertThat(cue.text).isNull();
assertThat(cue.bitmap).isNotNull(); assertThat(cue.bitmap).isNotNull();

View File

@ -72,6 +72,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.cues).isEmpty(); assertThat(cuesWithTiming.cues).isEmpty();
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
} }
@Test @Test
@ -86,6 +87,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("CC Test"); assertThat(text.toString()).isEqualTo("CC Test");
assertThat(text).hasNoSpans(); assertThat(text).hasNoSpans();
assertFractionalLinePosition(singleCue, 0.85f); assertFractionalLinePosition(singleCue, 0.85f);
@ -103,6 +105,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("CC Test"); assertThat(text.toString()).isEqualTo("CC Test");
assertThat(text).hasBoldItalicSpanBetween(0, 6); assertThat(text).hasBoldItalicSpanBetween(0, 6);
assertThat(text).hasUnderlineSpanBetween(0, 6); assertThat(text).hasUnderlineSpanBetween(0, 6);
@ -171,6 +174,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("CC Test"); assertThat(text.toString()).isEqualTo("CC Test");
assertThat(text).hasNoSpans(); assertThat(text).hasNoSpans();
assertFractionalLinePosition(singleCue, 0.85f); assertFractionalLinePosition(singleCue, 0.85f);
@ -188,6 +192,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("你好"); assertThat(text.toString()).isEqualTo("你好");
assertThat(text).hasNoSpans(); assertThat(text).hasNoSpans();
assertFractionalLinePosition(singleCue, 0.85f); assertFractionalLinePosition(singleCue, 0.85f);
@ -204,6 +209,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("你好"); assertThat(text.toString()).isEqualTo("你好");
assertThat(text).hasNoSpans(); assertThat(text).hasNoSpans();
@ -223,6 +229,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("Line 2\nLine 3"); assertThat(text.toString()).isEqualTo("Line 2\nLine 3");
assertThat(text).hasItalicSpanBetween(0, 5); assertThat(text).hasItalicSpanBetween(0, 5);
assertThat(text).hasUnderlineSpanBetween(7, 12); assertThat(text).hasUnderlineSpanBetween(7, 12);
@ -244,6 +251,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("CC Test"); assertThat(text.toString()).isEqualTo("CC Test");
assertThat(text).hasBoldSpanBetween(0, 6); assertThat(text).hasBoldSpanBetween(0, 6);
assertThat(text).hasForegroundColorSpanBetween(0, 6).withColor(Color.GREEN); assertThat(text).hasForegroundColorSpanBetween(0, 6).withColor(Color.GREEN);
@ -264,6 +272,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("CC Test"); assertThat(text.toString()).isEqualTo("CC Test");
assertThat(text).hasBoldItalicSpanBetween(0, 7); assertThat(text).hasBoldItalicSpanBetween(0, 7);
assertThat(text).hasUnderlineSpanBetween(0, 7); assertThat(text).hasUnderlineSpanBetween(0, 7);
@ -288,6 +297,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("CC Test"); assertThat(text.toString()).isEqualTo("CC Test");
assertThat(text).hasBoldItalicSpanBetween(0, 7); assertThat(text).hasBoldItalicSpanBetween(0, 7);
assertThat(text).hasUnderlineSpanBetween(0, 7); assertThat(text).hasUnderlineSpanBetween(0, 7);
@ -311,6 +321,7 @@ public final class Tx3gParserTest {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET); assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("CC Test"); assertThat(text.toString()).isEqualTo("CC Test");
assertThat(text).hasBoldItalicSpanBetween(0, 6); assertThat(text).hasBoldItalicSpanBetween(0, 6);
assertThat(text).hasUnderlineSpanBetween(0, 6); assertThat(text).hasUnderlineSpanBetween(0, 6);

View File

@ -72,10 +72,12 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(2); assertThat(cuesWithTimingsList).hasSize(2);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(2_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(FIRST_SUBTITLE_STRING); .containsExactly(FIRST_SUBTITLE_STRING);
assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(1).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
} }
@ -88,15 +90,18 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(3); assertThat(cuesWithTimingsList).hasSize(3);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(2_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(FIRST_SUBTITLE_STRING); .containsExactly(FIRST_SUBTITLE_STRING);
assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(2_000_000); assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(2_000_000);
assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(1).endTimeUs).isEqualTo(3_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text))
.containsExactly(FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING) .containsExactly(FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING)
.inOrder(); .inOrder();
assertThat(cuesWithTimingsList.get(2).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(2).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(2).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(2).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(2).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(2).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(2).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
} }
@ -109,6 +114,7 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(1); assertThat(cuesWithTimingsList).hasSize(1);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
} }
@ -121,6 +127,7 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(1); assertThat(cuesWithTimingsList).hasSize(1);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
} }
@ -133,6 +140,7 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(1); assertThat(cuesWithTimingsList).hasSize(1);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
} }
@ -145,10 +153,12 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(2); assertThat(cuesWithTimingsList).hasSize(2);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(2_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(FIRST_SUBTITLE_STRING); .containsExactly(FIRST_SUBTITLE_STRING);
assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(1).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
} }
@ -162,11 +172,13 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(2); assertThat(cuesWithTimingsList).hasSize(2);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(2_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(2_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(3_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING) .containsExactly(FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING)
.inOrder(); .inOrder();
assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(1).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
} }
@ -181,10 +193,12 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(2); assertThat(cuesWithTimingsList).hasSize(2);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(1).endTimeUs).isEqualTo(2_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text))
.containsExactly(FIRST_SUBTITLE_STRING); .containsExactly(FIRST_SUBTITLE_STRING);
} }
@ -199,15 +213,18 @@ public class LegacySubtitleUtilWebvttTest {
assertThat(cuesWithTimingsList).hasSize(3); assertThat(cuesWithTimingsList).hasSize(3);
assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(2_000_000); assertThat(cuesWithTimingsList.get(0).startTimeUs).isEqualTo(2_000_000);
assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(0).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(0).endTimeUs).isEqualTo(3_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(0).cues, c -> c.text))
.containsExactly(FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING) .containsExactly(FIRST_SUBTITLE_STRING, SECOND_SUBTITLE_STRING)
.inOrder(); .inOrder();
assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(3_000_000); assertThat(cuesWithTimingsList.get(1).startTimeUs).isEqualTo(3_000_000);
assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(1).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(1).endTimeUs).isEqualTo(4_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(1).cues, c -> c.text))
.containsExactly(SECOND_SUBTITLE_STRING); .containsExactly(SECOND_SUBTITLE_STRING);
assertThat(cuesWithTimingsList.get(2).startTimeUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(2).startTimeUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(2).durationUs).isEqualTo(1_000_000); assertThat(cuesWithTimingsList.get(2).durationUs).isEqualTo(1_000_000);
assertThat(cuesWithTimingsList.get(2).endTimeUs).isEqualTo(2_000_000);
assertThat(Lists.transform(cuesWithTimingsList.get(2).cues, c -> c.text)) assertThat(Lists.transform(cuesWithTimingsList.get(2).cues, c -> c.text))
.containsExactly(FIRST_SUBTITLE_STRING); .containsExactly(FIRST_SUBTITLE_STRING);
} }

View File

@ -196,6 +196,7 @@ public final class Mp4WebvttParserTest {
assertThat(result.get(0).cues).isEmpty(); assertThat(result.get(0).cues).isEmpty();
assertThat(result.get(0).startTimeUs).isEqualTo(C.TIME_UNSET); assertThat(result.get(0).startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(result.get(0).durationUs).isEqualTo(C.TIME_UNSET); assertThat(result.get(0).durationUs).isEqualTo(C.TIME_UNSET);
assertThat(result.get(0).endTimeUs).isEqualTo(C.TIME_UNSET);
} }
// Negative tests. // Negative tests.

View File

@ -92,11 +92,13 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
} }
@ -110,6 +112,7 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(0).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(0).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(0).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
} }
@ -124,11 +127,13 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(0).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(0).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(0).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
assertThat(allCues.get(1).startTimeUs).isEqualTo(0L); assertThat(allCues.get(1).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(1).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(1).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
} }
@ -141,11 +146,13 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
} }
@ -158,11 +165,13 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
} }
@ -175,11 +184,13 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
} }
@ -192,11 +203,13 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
} }
@ -209,21 +222,25 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
assertThat(allCues.get(2).startTimeUs).isEqualTo(4_000_000L); assertThat(allCues.get(2).startTimeUs).isEqualTo(4_000_000L);
assertThat(allCues.get(2).durationUs).isEqualTo(5_000_000L - 4_000_000L); assertThat(allCues.get(2).durationUs).isEqualTo(5_000_000L - 4_000_000L);
assertThat(allCues.get(2).endTimeUs).isEqualTo(5_000_000L);
Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues); Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues);
assertThat(thirdCue.text.toString()).isEqualTo("This is the third subtitle."); assertThat(thirdCue.text.toString()).isEqualTo("This is the third subtitle.");
assertThat(allCues.get(3).startTimeUs).isEqualTo(6_000_000L); assertThat(allCues.get(3).startTimeUs).isEqualTo(6_000_000L);
assertThat(allCues.get(3).durationUs).isEqualTo(7_000_000L - 6_000_000L); assertThat(allCues.get(3).durationUs).isEqualTo(7_000_000L - 6_000_000L);
assertThat(allCues.get(3).endTimeUs).isEqualTo(7_000_000L);
Cue fourthCue = Iterables.getOnlyElement(allCues.get(3).cues); Cue fourthCue = Iterables.getOnlyElement(allCues.get(3).cues);
assertThat(fourthCue.text.toString()).isEqualTo("This is the <fourth> &subtitle."); assertThat(fourthCue.text.toString()).isEqualTo("This is the <fourth> &subtitle.");
} }
@ -236,6 +253,7 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
assertThat(firstCue.position).isEqualTo(0.6f); assertThat(firstCue.position).isEqualTo(0.6f);
@ -250,6 +268,7 @@ public class WebvttParserTest {
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the second subtitle.");
// Position is invalid so defaults to 0.5 // Position is invalid so defaults to 0.5
@ -258,6 +277,7 @@ public class WebvttParserTest {
assertThat(allCues.get(2).startTimeUs).isEqualTo(4_000_000L); assertThat(allCues.get(2).startTimeUs).isEqualTo(4_000_000L);
assertThat(allCues.get(2).durationUs).isEqualTo(5_000_000L - 4_000_000L); assertThat(allCues.get(2).durationUs).isEqualTo(5_000_000L - 4_000_000L);
assertThat(allCues.get(2).endTimeUs).isEqualTo(5_000_000L);
Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues); Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues);
assertThat(thirdCue.text.toString()).isEqualTo("This is the third subtitle."); assertThat(thirdCue.text.toString()).isEqualTo("This is the third subtitle.");
assertThat(thirdCue.line).isEqualTo(0.45f); assertThat(thirdCue.line).isEqualTo(0.45f);
@ -269,6 +289,7 @@ public class WebvttParserTest {
assertThat(allCues.get(3).startTimeUs).isEqualTo(6_000_000L); assertThat(allCues.get(3).startTimeUs).isEqualTo(6_000_000L);
assertThat(allCues.get(3).durationUs).isEqualTo(7_000_000L - 6_000_000L); assertThat(allCues.get(3).durationUs).isEqualTo(7_000_000L - 6_000_000L);
assertThat(allCues.get(3).endTimeUs).isEqualTo(7_000_000L);
Cue fourthCue = Iterables.getOnlyElement(allCues.get(3).cues); Cue fourthCue = Iterables.getOnlyElement(allCues.get(3).cues);
assertThat(fourthCue.text.toString()).isEqualTo("This is the fourth subtitle."); assertThat(fourthCue.text.toString()).isEqualTo("This is the fourth subtitle.");
assertThat(fourthCue.line).isEqualTo(-10f); assertThat(fourthCue.line).isEqualTo(-10f);
@ -280,6 +301,7 @@ public class WebvttParserTest {
assertThat(allCues.get(4).startTimeUs).isEqualTo(8_000_000L); assertThat(allCues.get(4).startTimeUs).isEqualTo(8_000_000L);
assertThat(allCues.get(4).durationUs).isEqualTo(9_000_000L - 8_000_000L); assertThat(allCues.get(4).durationUs).isEqualTo(9_000_000L - 8_000_000L);
assertThat(allCues.get(4).endTimeUs).isEqualTo(9_000_000L);
Cue fifthCue = Iterables.getOnlyElement(allCues.get(4).cues); Cue fifthCue = Iterables.getOnlyElement(allCues.get(4).cues);
assertThat(fifthCue.text.toString()).isEqualTo("This is the fifth subtitle."); assertThat(fifthCue.text.toString()).isEqualTo("This is the fifth subtitle.");
assertThat(fifthCue.textAlignment).isEqualTo(Alignment.ALIGN_OPPOSITE); assertThat(fifthCue.textAlignment).isEqualTo(Alignment.ALIGN_OPPOSITE);
@ -289,6 +311,7 @@ public class WebvttParserTest {
assertThat(allCues.get(5).startTimeUs).isEqualTo(10_000_000L); assertThat(allCues.get(5).startTimeUs).isEqualTo(10_000_000L);
assertThat(allCues.get(5).durationUs).isEqualTo(11_000_000L - 10_000_000L); assertThat(allCues.get(5).durationUs).isEqualTo(11_000_000L - 10_000_000L);
assertThat(allCues.get(5).endTimeUs).isEqualTo(11_000_000L);
Cue sixthCue = Iterables.getOnlyElement(allCues.get(5).cues); Cue sixthCue = Iterables.getOnlyElement(allCues.get(5).cues);
assertThat(sixthCue.text.toString()).isEqualTo("This is the sixth subtitle."); assertThat(sixthCue.text.toString()).isEqualTo("This is the sixth subtitle.");
assertThat(sixthCue.textAlignment).isEqualTo(Alignment.ALIGN_CENTER); assertThat(sixthCue.textAlignment).isEqualTo(Alignment.ALIGN_CENTER);
@ -298,12 +321,14 @@ public class WebvttParserTest {
assertThat(allCues.get(6).startTimeUs).isEqualTo(12_000_000L); assertThat(allCues.get(6).startTimeUs).isEqualTo(12_000_000L);
assertThat(allCues.get(6).durationUs).isEqualTo(13_000_000L - 12_000_000L); assertThat(allCues.get(6).durationUs).isEqualTo(13_000_000L - 12_000_000L);
assertThat(allCues.get(6).endTimeUs).isEqualTo(13_000_000L);
Cue seventhCue = Iterables.getOnlyElement(allCues.get(6).cues); Cue seventhCue = Iterables.getOnlyElement(allCues.get(6).cues);
assertThat(seventhCue.text.toString()).isEqualTo("This is the seventh subtitle."); assertThat(seventhCue.text.toString()).isEqualTo("This is the seventh subtitle.");
assertThat(seventhCue.positionAnchor).isEqualTo(Cue.ANCHOR_TYPE_START); assertThat(seventhCue.positionAnchor).isEqualTo(Cue.ANCHOR_TYPE_START);
assertThat(allCues.get(7).startTimeUs).isEqualTo(14_000_000L); assertThat(allCues.get(7).startTimeUs).isEqualTo(14_000_000L);
assertThat(allCues.get(7).durationUs).isEqualTo(15_000_000L - 14_000_000L); assertThat(allCues.get(7).durationUs).isEqualTo(15_000_000L - 14_000_000L);
assertThat(allCues.get(7).endTimeUs).isEqualTo(15_000_000L);
Cue eighthCue = Iterables.getOnlyElement(allCues.get(7).cues); Cue eighthCue = Iterables.getOnlyElement(allCues.get(7).cues);
assertThat(eighthCue.text.toString()).isEqualTo("This is the eighth subtitle."); assertThat(eighthCue.text.toString()).isEqualTo("This is the eighth subtitle.");
assertThat(eighthCue.positionAnchor).isEqualTo(Cue.ANCHOR_TYPE_END); assertThat(eighthCue.positionAnchor).isEqualTo(Cue.ANCHOR_TYPE_END);
@ -317,6 +342,7 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0); assertThat(allCues.get(0).startTimeUs).isEqualTo(0);
assertThat(allCues.get(0).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(0).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_000_000);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("Displayed at the bottom for 3 seconds."); assertThat(firstCue.text.toString()).isEqualTo("Displayed at the bottom for 3 seconds.");
assertThat(firstCue.line).isEqualTo(-1f); assertThat(firstCue.line).isEqualTo(-1f);
@ -324,6 +350,7 @@ public class WebvttParserTest {
assertThat(allCues.get(1).startTimeUs).isEqualTo(1_000_000); assertThat(allCues.get(1).startTimeUs).isEqualTo(1_000_000);
assertThat(allCues.get(1).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(1).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(1).endTimeUs).isEqualTo(2_000_000);
ImmutableList<Cue> firstAndSecondCue = allCues.get(1).cues; ImmutableList<Cue> firstAndSecondCue = allCues.get(1).cues;
assertThat(firstAndSecondCue).hasSize(2); assertThat(firstAndSecondCue).hasSize(2);
assertThat(firstAndSecondCue.get(0).text.toString()) assertThat(firstAndSecondCue.get(0).text.toString())
@ -337,6 +364,7 @@ public class WebvttParserTest {
assertThat(allCues.get(2).startTimeUs).isEqualTo(2_000_000); assertThat(allCues.get(2).startTimeUs).isEqualTo(2_000_000);
assertThat(allCues.get(2).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(2).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(2).endTimeUs).isEqualTo(3_000_000);
Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues); Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues);
assertThat(thirdCue.text.toString()).isEqualTo("Displayed at the bottom for 3 seconds."); assertThat(thirdCue.text.toString()).isEqualTo("Displayed at the bottom for 3 seconds.");
assertThat(thirdCue.line).isEqualTo(-1f); assertThat(thirdCue.line).isEqualTo(-1f);
@ -344,6 +372,7 @@ public class WebvttParserTest {
assertThat(allCues.get(3).startTimeUs).isEqualTo(4_000_000); assertThat(allCues.get(3).startTimeUs).isEqualTo(4_000_000);
assertThat(allCues.get(3).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(3).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(3).endTimeUs).isEqualTo(5_000_000);
Cue fourthCue = Iterables.getOnlyElement(allCues.get(3).cues); Cue fourthCue = Iterables.getOnlyElement(allCues.get(3).cues);
assertThat(fourthCue.text.toString()).isEqualTo("Displayed at the bottom for 2 seconds."); assertThat(fourthCue.text.toString()).isEqualTo("Displayed at the bottom for 2 seconds.");
assertThat(fourthCue.line).isEqualTo(-1f); assertThat(fourthCue.line).isEqualTo(-1f);
@ -351,6 +380,7 @@ public class WebvttParserTest {
assertThat(allCues.get(4).startTimeUs).isEqualTo(5_000_000); assertThat(allCues.get(4).startTimeUs).isEqualTo(5_000_000);
assertThat(allCues.get(4).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(4).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(4).endTimeUs).isEqualTo(6_000_000);
ImmutableList<Cue> fourthAndFifth = allCues.get(4).cues; ImmutableList<Cue> fourthAndFifth = allCues.get(4).cues;
assertThat(fourthAndFifth).hasSize(2); assertThat(fourthAndFifth).hasSize(2);
assertThat(fourthAndFifth.get(0).text.toString()) assertThat(fourthAndFifth.get(0).text.toString())
@ -364,6 +394,7 @@ public class WebvttParserTest {
assertThat(allCues.get(5).startTimeUs).isEqualTo(6_000_000); assertThat(allCues.get(5).startTimeUs).isEqualTo(6_000_000);
assertThat(allCues.get(5).durationUs).isEqualTo(1_000_000); assertThat(allCues.get(5).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(5).endTimeUs).isEqualTo(7_000_000);
Cue sixthCue = Iterables.getOnlyElement(allCues.get(5).cues); Cue sixthCue = Iterables.getOnlyElement(allCues.get(5).cues);
assertThat(sixthCue.text.toString()) assertThat(sixthCue.text.toString())
.isEqualTo("Appears directly above the previous cue, then replaces it after 1 second."); .isEqualTo("Appears directly above the previous cue, then replaces it after 1 second.");
@ -379,18 +410,21 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("Vertical right-to-left (e.g. Japanese)"); assertThat(firstCue.text.toString()).isEqualTo("Vertical right-to-left (e.g. Japanese)");
assertThat(firstCue.verticalType).isEqualTo(Cue.VERTICAL_TYPE_RL); assertThat(firstCue.verticalType).isEqualTo(Cue.VERTICAL_TYPE_RL);
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_345_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L); assertThat(allCues.get(1).durationUs).isEqualTo(3_456_000L - 2_345_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_456_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("Vertical left-to-right (e.g. Mongolian)"); assertThat(secondCue.text.toString()).isEqualTo("Vertical left-to-right (e.g. Mongolian)");
assertThat(secondCue.verticalType).isEqualTo(Cue.VERTICAL_TYPE_LR); assertThat(secondCue.verticalType).isEqualTo(Cue.VERTICAL_TYPE_LR);
assertThat(allCues.get(2).startTimeUs).isEqualTo(4_000_000L); assertThat(allCues.get(2).startTimeUs).isEqualTo(4_000_000L);
assertThat(allCues.get(2).durationUs).isEqualTo(5_000_000L - 4_000_000L); assertThat(allCues.get(2).durationUs).isEqualTo(5_000_000L - 4_000_000L);
assertThat(allCues.get(2).endTimeUs).isEqualTo(5_000_000L);
Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues); Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues);
assertThat(thirdCue.text.toString()).isEqualTo("No vertical setting (i.e. horizontal)"); assertThat(thirdCue.text.toString()).isEqualTo("No vertical setting (i.e. horizontal)");
assertThat(thirdCue.verticalType).isEqualTo(Cue.TYPE_UNSET); assertThat(thirdCue.verticalType).isEqualTo(Cue.TYPE_UNSET);
@ -449,11 +483,13 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L); assertThat(allCues.get(0).durationUs).isEqualTo(1_234_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(1_234_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle."); assertThat(firstCue.text.toString()).isEqualTo("This is the first subtitle.");
assertThat(allCues.get(1).startTimeUs).isEqualTo(4_000_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(4_000_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(5_000_000L - 4_000_000L); assertThat(allCues.get(1).durationUs).isEqualTo(5_000_000L - 4_000_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(5_000_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("This is the third subtitle."); assertThat(secondCue.text.toString()).isEqualTo("This is the third subtitle.");
} }
@ -466,6 +502,7 @@ public class WebvttParserTest {
assertThat(allCues.get(0).startTimeUs).isEqualTo(0L); assertThat(allCues.get(0).startTimeUs).isEqualTo(0L);
assertThat(allCues.get(0).durationUs).isEqualTo(2_000_000L); assertThat(allCues.get(0).durationUs).isEqualTo(2_000_000L);
assertThat(allCues.get(0).endTimeUs).isEqualTo(2_000_000L);
Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues); Cue firstCue = Iterables.getOnlyElement(allCues.get(0).cues);
assertThat(firstCue.text.toString()).isEqualTo("Sentence with font-size set to 4.4em."); assertThat(firstCue.text.toString()).isEqualTo("Sentence with font-size set to 4.4em.");
assertThat((Spanned) firstCue.text) assertThat((Spanned) firstCue.text)
@ -474,12 +511,14 @@ public class WebvttParserTest {
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_100_000L); assertThat(allCues.get(1).startTimeUs).isEqualTo(2_100_000L);
assertThat(allCues.get(1).durationUs).isEqualTo(2_400_000L - 2_100_000L); assertThat(allCues.get(1).durationUs).isEqualTo(2_400_000L - 2_100_000L);
assertThat(allCues.get(1).endTimeUs).isEqualTo(2_400_000L);
Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues); Cue secondCue = Iterables.getOnlyElement(allCues.get(1).cues);
assertThat(secondCue.text.toString()).isEqualTo("Sentence with bad font-size unit."); assertThat(secondCue.text.toString()).isEqualTo("Sentence with bad font-size unit.");
assertThat((Spanned) secondCue.text).hasNoSpans(); assertThat((Spanned) secondCue.text).hasNoSpans();
assertThat(allCues.get(2).startTimeUs).isEqualTo(2_500_000L); assertThat(allCues.get(2).startTimeUs).isEqualTo(2_500_000L);
assertThat(allCues.get(2).durationUs).isEqualTo(4_000_000L - 2_500_000L); assertThat(allCues.get(2).durationUs).isEqualTo(4_000_000L - 2_500_000L);
assertThat(allCues.get(2).endTimeUs).isEqualTo(4_000_000L);
Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues); Cue thirdCue = Iterables.getOnlyElement(allCues.get(2).cues);
assertThat(thirdCue.text.toString()).isEqualTo("Absolute font-size expressed in px unit!"); assertThat(thirdCue.text.toString()).isEqualTo("Absolute font-size expressed in px unit!");
assertThat((Spanned) thirdCue.text) assertThat((Spanned) thirdCue.text)
@ -488,6 +527,7 @@ public class WebvttParserTest {
assertThat(allCues.get(3).startTimeUs).isEqualTo(4_500_000L); assertThat(allCues.get(3).startTimeUs).isEqualTo(4_500_000L);
assertThat(allCues.get(3).durationUs).isEqualTo(6_000_000L - 4_500_000L); assertThat(allCues.get(3).durationUs).isEqualTo(6_000_000L - 4_500_000L);
assertThat(allCues.get(3).endTimeUs).isEqualTo(6_000_000L);
Cue fourthCue = Iterables.getOnlyElement(allCues.get(3).cues); Cue fourthCue = Iterables.getOnlyElement(allCues.get(3).cues);
assertThat(fourthCue.text.toString()).isEqualTo("Relative font-size expressed in % unit!"); assertThat(fourthCue.text.toString()).isEqualTo("Relative font-size expressed in % unit!");
assertThat((Spanned) fourthCue.text) assertThat((Spanned) fourthCue.text)
@ -496,12 +536,14 @@ public class WebvttParserTest {
assertThat(allCues.get(4).startTimeUs).isEqualTo(6_100_000L); assertThat(allCues.get(4).startTimeUs).isEqualTo(6_100_000L);
assertThat(allCues.get(4).durationUs).isEqualTo(6_400_000L - 6_100_000L); assertThat(allCues.get(4).durationUs).isEqualTo(6_400_000L - 6_100_000L);
assertThat(allCues.get(4).endTimeUs).isEqualTo(6_400_000L);
Cue fifthCue = Iterables.getOnlyElement(allCues.get(4).cues); Cue fifthCue = Iterables.getOnlyElement(allCues.get(4).cues);
assertThat(fifthCue.text.toString()).isEqualTo("Sentence with bad font-size value."); assertThat(fifthCue.text.toString()).isEqualTo("Sentence with bad font-size value.");
assertThat((Spanned) secondCue.text).hasNoSpans(); assertThat((Spanned) secondCue.text).hasNoSpans();
assertThat(allCues.get(5).startTimeUs).isEqualTo(6_500_000L); assertThat(allCues.get(5).startTimeUs).isEqualTo(6_500_000L);
assertThat(allCues.get(5).durationUs).isEqualTo(8_000_000L - 6_500_000L); assertThat(allCues.get(5).durationUs).isEqualTo(8_000_000L - 6_500_000L);
assertThat(allCues.get(5).endTimeUs).isEqualTo(8_000_000L);
Cue sixthCue = Iterables.getOnlyElement(allCues.get(5).cues); Cue sixthCue = Iterables.getOnlyElement(allCues.get(5).cues);
assertThat(sixthCue.text.toString()) assertThat(sixthCue.text.toString())
.isEqualTo("Upper and lower case letters in font-size unit."); .isEqualTo("Upper and lower case letters in font-size unit.");