Skip to content

Commit

Permalink
Add tests for CuesWithTiming.endTimeUs
Browse files Browse the repository at this point in the history
#minor-release

PiperOrigin-RevId: 570988195
  • Loading branch information
icbaker authored and copybara-github committed Oct 5, 2023
1 parent cd85416 commit be3dd42
Show file tree
Hide file tree
Showing 8 changed files with 101 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,22 +76,26 @@ public void extractor_outputsCues() throws Exception {
CuesWithTiming cues0 = decodeSample(trackOutput, 0);
assertThat(cues0.startTimeUs).isEqualTo(0);
assertThat(cues0.durationUs).isEqualTo(1_234_000);
assertThat(cues0.endTimeUs).isEqualTo(1_234_000);
assertThat(cues0.cues).hasSize(1);
assertThat(cues0.cues.get(0).text.toString()).isEqualTo("This is the first subtitle.");
CuesWithTiming cues1 = decodeSample(trackOutput, 1);
assertThat(cues1.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the second subtitle.");
CuesWithTiming cues2 = decodeSample(trackOutput, 2);
assertThat(cues2.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the second subtitle.");
assertThat(cues2.cues.get(1).text.toString()).isEqualTo("This is the third subtitle.");
CuesWithTiming cues3 = decodeSample(trackOutput, 3);
assertThat(cues3.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the third subtitle.");
}
Expand Down Expand Up @@ -122,17 +126,20 @@ public void extractor_seekAfterExtracting_outputsCues() throws Exception {
CuesWithTiming cues0 = decodeSample(trackOutput, 0);
assertThat(cues0.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the second subtitle.");
CuesWithTiming cues1 = decodeSample(trackOutput, 1);
assertThat(cues1.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the second subtitle.");
assertThat(cues1.cues.get(1).text.toString()).isEqualTo("This is the third subtitle.");
CuesWithTiming cues2 = decodeSample(trackOutput, 2);
assertThat(cues2.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the third subtitle.");
}
Expand Down Expand Up @@ -163,17 +170,20 @@ public void extractor_seekBetweenReads_outputsCues() throws Exception {
CuesWithTiming cues0 = decodeSample(trackOutput, 0);
assertThat(cues0.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the second subtitle.");
CuesWithTiming cues1 = decodeSample(trackOutput, 1);
assertThat(cues1.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the second subtitle.");
assertThat(cues1.cues.get(1).text.toString()).isEqualTo("This is the third subtitle.");
CuesWithTiming cues2 = decodeSample(trackOutput, 2);
assertThat(cues2.startTimeUs).isEqualTo(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.get(0).text.toString()).isEqualTo("This is the third subtitle.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ public void parseTypicalWithInitializationDataAtOffsetIntoDialogueAndRestrictedL
// 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).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");
}

Expand Down Expand Up @@ -237,41 +238,49 @@ public void parseOverlappingTimecodes() throws IOException {
assertThat(allCues).hasSize(8);
assertThat(allCues.get(0).startTimeUs).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()))
.containsExactly(firstSubtitleText);

assertThat(allCues.get(1).startTimeUs).isEqualTo(2_000_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()))
.containsExactly(firstSubtitleText, secondSubtitleText);

assertThat(allCues.get(2).startTimeUs).isEqualTo(4_230_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()))
.containsExactly(secondSubtitleText);

assertThat(allCues.get(3).startTimeUs).isEqualTo(6_000_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()))
.containsExactly(thirdSubtitleText);

assertThat(allCues.get(4).startTimeUs).isEqualTo(8_440_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()))
.containsExactly(fourthSubtitleText, fifthSubtitleText);

assertThat(allCues.get(5).startTimeUs).isEqualTo(10_720_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()))
.containsExactly(sixthSubtitleText);

assertThat(allCues.get(6).startTimeUs).isEqualTo(13_220_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()))
.containsExactly(sixthSubtitleText, seventhSubtitleText);

assertThat(allCues.get(7).startTimeUs).isEqualTo(14_220_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()))
.containsExactly(sixthSubtitleText);
}
Expand Down Expand Up @@ -517,6 +526,7 @@ public void parseStrikeout() throws IOException {
private static void assertTypicalCue1(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(0);
assertThat(cuesWithTiming.durationUs).isEqualTo(1230000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(1230000);
assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the first subtitle.");
assertThat(Objects.requireNonNull(cuesWithTiming.cues.get(0).textAlignment))
.isEqualTo(Layout.Alignment.ALIGN_CENTER);
Expand All @@ -525,13 +535,15 @@ private static void assertTypicalCue1(CuesWithTiming cuesWithTiming) {
private static void assertTypicalCue2(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(2340000);
assertThat(cuesWithTiming.durationUs).isEqualTo(3450000 - 2340000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(3450000);
assertThat(cuesWithTiming.cues.get(0).text.toString())
.isEqualTo("This is the second subtitle \nwith a newline \nand another.");
}

private static void assertTypicalCue3(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(4560000);
assertThat(cuesWithTiming.durationUs).isEqualTo(8900000 - 4560000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(8900000);
assertThat(cuesWithTiming.cues.get(0).text.toString())
.isEqualTo("This is the third subtitle, with a comma.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,20 +250,23 @@ public void parseTypicalNoHoursAndMillis() throws IOException {
assertTypicalCue1(allCues.get(0));
assertThat(allCues.get(1).startTimeUs).isEqualTo(2_000_000);
assertThat(allCues.get(1).durationUs).isEqualTo(1_000_000);
assertThat(allCues.get(1).endTimeUs).isEqualTo(3_000_000);
assertTypicalCue3(allCues.get(2));
}

private static void assertTypicalCue1(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(0);
assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the first subtitle.");
assertThat(cuesWithTiming.durationUs).isEqualTo(1234000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(1234000);
}

private static void assertTypicalCue2(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.startTimeUs).isEqualTo(2345000);
assertThat(cuesWithTiming.cues.get(0).text.toString())
.isEqualTo("This is the second subtitle.\nSecond subtitle with second line.");
assertThat(cuesWithTiming.durationUs).isEqualTo(3456000 - 2345000);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(3456000);
}

private static void assertTypicalCue3(CuesWithTiming cuesWithTiming) {
Expand All @@ -272,6 +275,7 @@ private static void assertTypicalCue3(CuesWithTiming cuesWithTiming) {
assertThat(cuesWithTiming.cues.get(0).text.toString()).isEqualTo("This is the third subtitle.");
long expectedEndTimeUs = (((2L * 60L * 60L) + 8L) * 1000L + 901L) * 1000L;
assertThat(cuesWithTiming.durationUs).isEqualTo(expectedEndTimeUs - expectedStartTimeUs);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(expectedEndTimeUs);
}

private static void assertAlignmentCue(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -486,8 +486,10 @@ public void frameRate() throws Exception {
assertThat(allCues).hasSize(2);
assertThat(allCues.get(0).startTimeUs).isEqualTo(1_000_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).durationUs).isWithin(2000).of(1_001_000_000);
assertThat((double) allCues.get(1).endTimeUs).isWithin(2000).of(2_002_000_000);
}

@Test
Expand All @@ -498,6 +500,7 @@ public void bitmapPercentageRegion() throws Exception {

assertThat(allCues.get(0).startTimeUs).isEqualTo(200_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);
assertThat(cue.text).isNull();
assertThat(cue.bitmap).isNotNull();
Expand All @@ -508,6 +511,7 @@ public void bitmapPercentageRegion() throws Exception {

assertThat(allCues.get(1).startTimeUs).isEqualTo(3_200_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);
assertThat(cue.text).isNull();
assertThat(cue.bitmap).isNotNull();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ public void parseNoSubtitle() throws Exception {
assertThat(cuesWithTiming.cues).isEmpty();
assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
}

@Test
Expand All @@ -86,6 +87,7 @@ public void parseJustText() throws Exception {

assertThat(cuesWithTiming.startTimeUs).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).hasNoSpans();
assertFractionalLinePosition(singleCue, 0.85f);
Expand All @@ -103,6 +105,7 @@ public void parseWithStyl() throws Exception {

assertThat(cuesWithTiming.startTimeUs).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).hasBoldItalicSpanBetween(0, 6);
assertThat(text).hasUnderlineSpanBetween(0, 6);
Expand Down Expand Up @@ -171,6 +174,7 @@ public void parseWithStylAllDefaults() throws Exception {

assertThat(cuesWithTiming.startTimeUs).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).hasNoSpans();
assertFractionalLinePosition(singleCue, 0.85f);
Expand All @@ -188,6 +192,7 @@ public void parseUtf16BeNoStyl() throws Exception {

assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(text.toString()).isEqualTo("你好");
assertThat(text).hasNoSpans();
assertFractionalLinePosition(singleCue, 0.85f);
Expand All @@ -204,6 +209,7 @@ public void parseUtf16LeNoStyl() throws Exception {

assertThat(cuesWithTiming.startTimeUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.durationUs).isEqualTo(C.TIME_UNSET);
assertThat(cuesWithTiming.endTimeUs).isEqualTo(C.TIME_UNSET);

assertThat(text.toString()).isEqualTo("你好");
assertThat(text).hasNoSpans();
Expand All @@ -223,6 +229,7 @@ public void parseWithMultipleStyl() throws Exception {

assertThat(cuesWithTiming.startTimeUs).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).hasItalicSpanBetween(0, 5);
assertThat(text).hasUnderlineSpanBetween(7, 12);
Expand All @@ -244,6 +251,7 @@ public void parseWithOtherExtension() throws Exception {

assertThat(cuesWithTiming.startTimeUs).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).hasBoldSpanBetween(0, 6);
assertThat(text).hasForegroundColorSpanBetween(0, 6).withColor(Color.GREEN);
Expand All @@ -264,6 +272,7 @@ public void initializationDecodeWithStyl() throws Exception {

assertThat(cuesWithTiming.startTimeUs).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).hasBoldItalicSpanBetween(0, 7);
assertThat(text).hasUnderlineSpanBetween(0, 7);
Expand All @@ -288,6 +297,7 @@ public void initializationDecodeWithTbox() throws Exception {

assertThat(cuesWithTiming.startTimeUs).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).hasBoldItalicSpanBetween(0, 7);
assertThat(text).hasUnderlineSpanBetween(0, 7);
Expand All @@ -311,6 +321,7 @@ public void initializationAllDefaultsDecodeWithStyl() throws Exception {

assertThat(cuesWithTiming.startTimeUs).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).hasBoldItalicSpanBetween(0, 6);
assertThat(text).hasUnderlineSpanBetween(0, 6);
Expand Down
Loading

0 comments on commit be3dd42

Please sign in to comment.