mirror of
https://github.com/samsonjs/media.git
synced 2026-04-08 11:45:51 +00:00
Switch (Mp4)WebvttDecoderTest to use Truth's Expect
This means multiple failures are all logged, instead of the test stopping when the first assertion fails. Makes tests like this with lots of independent assertions much easier to work with. I limited the expect to a single assertCues() call, otherwise the error message gets very long and is hard to read, but I still think this is an improvement. PiperOrigin-RevId: 277523300
This commit is contained in:
parent
b3f94e3768
commit
d29d452617
2 changed files with 44 additions and 28 deletions
|
|
@ -22,7 +22,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
|
|||
import com.google.android.exoplayer2.text.Cue;
|
||||
import com.google.android.exoplayer2.text.Subtitle;
|
||||
import com.google.android.exoplayer2.text.SubtitleDecoderException;
|
||||
import com.google.common.truth.Expect;
|
||||
import java.util.List;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
|
|
@ -81,6 +83,8 @@ public final class Mp4WebvttDecoderTest {
|
|||
0x76, 0x74, 0x74
|
||||
};
|
||||
|
||||
@Rule public final Expect expect = Expect.create();
|
||||
|
||||
// Positive tests.
|
||||
|
||||
@Test
|
||||
|
|
@ -132,28 +136,33 @@ public final class Mp4WebvttDecoderTest {
|
|||
* @param subtitle The {@link Subtitle} to check.
|
||||
* @param expectedCues The expected {@link Cue}s.
|
||||
*/
|
||||
private static void assertMp4WebvttSubtitleEquals(Subtitle subtitle, Cue... expectedCues) {
|
||||
private void assertMp4WebvttSubtitleEquals(Subtitle subtitle, Cue... expectedCues) {
|
||||
assertThat(subtitle.getEventTimeCount()).isEqualTo(1);
|
||||
assertThat(subtitle.getEventTime(0)).isEqualTo(0);
|
||||
List<Cue> subtitleCues = subtitle.getCues(0);
|
||||
assertThat(subtitleCues).hasSize(expectedCues.length);
|
||||
for (int i = 0; i < subtitleCues.size(); i++) {
|
||||
assertCueEquals(expectedCues[i], subtitleCues.get(i));
|
||||
assertCuesEqual(expectedCues[i], subtitleCues.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asserts that two cues are equal.
|
||||
*/
|
||||
private static void assertCueEquals(Cue expected, Cue actual) {
|
||||
assertThat(actual.line).isEqualTo(expected.line);
|
||||
assertThat(actual.lineAnchor).isEqualTo(expected.lineAnchor);
|
||||
assertThat(actual.lineType).isEqualTo(expected.lineType);
|
||||
assertThat(actual.position).isEqualTo(expected.position);
|
||||
assertThat(actual.positionAnchor).isEqualTo(expected.positionAnchor);
|
||||
assertThat(actual.size).isEqualTo(expected.size);
|
||||
assertThat(actual.text.toString()).isEqualTo(expected.text.toString());
|
||||
assertThat(actual.textAlignment).isEqualTo(expected.textAlignment);
|
||||
}
|
||||
/** Asserts that two cues are equal. */
|
||||
private void assertCuesEqual(Cue expected, Cue actual) {
|
||||
expect.withMessage("Cue.line").that(actual.line).isEqualTo(expected.line);
|
||||
expect.withMessage("Cue.lineAnchor").that(actual.lineAnchor).isEqualTo(expected.lineAnchor);
|
||||
expect.withMessage("Cue.lineType").that(actual.lineType).isEqualTo(expected.lineType);
|
||||
expect.withMessage("Cue.position").that(actual.position).isEqualTo(expected.position);
|
||||
expect
|
||||
.withMessage("Cue.positionAnchor")
|
||||
.that(actual.positionAnchor)
|
||||
.isEqualTo(expected.positionAnchor);
|
||||
expect.withMessage("Cue.size").that(actual.size).isEqualTo(expected.size);
|
||||
expect.withMessage("Cue.text").that(actual.text.toString()).isEqualTo(expected.text.toString());
|
||||
expect
|
||||
.withMessage("Cue.textAlignment")
|
||||
.that(actual.textAlignment)
|
||||
.isEqualTo(expected.textAlignment);
|
||||
|
||||
assertThat(expect.hasFailures()).isFalse();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
package com.google.android.exoplayer2.text.webvtt;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth.assertWithMessage;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import android.graphics.Typeface;
|
||||
|
|
@ -33,8 +32,10 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
|
|||
import com.google.android.exoplayer2.testutil.TestUtil;
|
||||
import com.google.android.exoplayer2.text.Cue;
|
||||
import com.google.android.exoplayer2.text.SubtitleDecoderException;
|
||||
import com.google.common.truth.Expect;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
|
|
@ -54,6 +55,8 @@ public class WebvttDecoderTest {
|
|||
private static final String WITH_BOM = "webvtt/with_bom";
|
||||
private static final String EMPTY_FILE = "webvtt/empty";
|
||||
|
||||
@Rule public final Expect expect = Expect.create();
|
||||
|
||||
@Test
|
||||
public void testDecodeEmpty() throws IOException {
|
||||
WebvttDecoder decoder = new WebvttDecoder();
|
||||
|
|
@ -404,7 +407,7 @@ public class WebvttDecoderTest {
|
|||
return (Spanned) sub.getCues(timeUs).get(0).text;
|
||||
}
|
||||
|
||||
private static void assertCue(
|
||||
private void assertCue(
|
||||
WebvttSubtitle subtitle, int eventTimeIndex, long startTimeUs, long endTimeUs, String text) {
|
||||
assertCue(
|
||||
subtitle,
|
||||
|
|
@ -421,7 +424,7 @@ public class WebvttDecoderTest {
|
|||
/* size= */ 1.0f);
|
||||
}
|
||||
|
||||
private static void assertCue(
|
||||
private void assertCue(
|
||||
WebvttSubtitle subtitle,
|
||||
int eventTimeIndex,
|
||||
long startTimeUs,
|
||||
|
|
@ -434,23 +437,27 @@ public class WebvttDecoderTest {
|
|||
float position,
|
||||
@Cue.AnchorType int positionAnchor,
|
||||
float size) {
|
||||
assertWithMessage("startTimeUs")
|
||||
expect
|
||||
.withMessage("startTimeUs")
|
||||
.that(subtitle.getEventTime(eventTimeIndex))
|
||||
.isEqualTo(startTimeUs);
|
||||
assertWithMessage("endTimeUs")
|
||||
expect
|
||||
.withMessage("endTimeUs")
|
||||
.that(subtitle.getEventTime(eventTimeIndex + 1))
|
||||
.isEqualTo(endTimeUs);
|
||||
List<Cue> cues = subtitle.getCues(subtitle.getEventTime(eventTimeIndex));
|
||||
assertThat(cues).hasSize(1);
|
||||
// Assert cue properties.
|
||||
Cue cue = cues.get(0);
|
||||
assertWithMessage("cue.text").that(cue.text.toString()).isEqualTo(text);
|
||||
assertWithMessage("cue.textAlignment").that(cue.textAlignment).isEqualTo(textAlignment);
|
||||
assertWithMessage("cue.line").that(cue.line).isEqualTo(line);
|
||||
assertWithMessage("cue.lineType").that(cue.lineType).isEqualTo(lineType);
|
||||
assertWithMessage("cue.lineAnchor").that(cue.lineAnchor).isEqualTo(lineAnchor);
|
||||
assertWithMessage("cue.position").that(cue.position).isEqualTo(position);
|
||||
assertWithMessage("cue.positionAnchor").that(cue.positionAnchor).isEqualTo(positionAnchor);
|
||||
assertWithMessage("cue.size").that(cue.size).isEqualTo(size);
|
||||
expect.withMessage("cue.text").that(cue.text.toString()).isEqualTo(text);
|
||||
expect.withMessage("cue.textAlignment").that(cue.textAlignment).isEqualTo(textAlignment);
|
||||
expect.withMessage("cue.line").that(cue.line).isEqualTo(line);
|
||||
expect.withMessage("cue.lineType").that(cue.lineType).isEqualTo(lineType);
|
||||
expect.withMessage("cue.lineAnchor").that(cue.lineAnchor).isEqualTo(lineAnchor);
|
||||
expect.withMessage("cue.position").that(cue.position).isEqualTo(position);
|
||||
expect.withMessage("cue.positionAnchor").that(cue.positionAnchor).isEqualTo(positionAnchor);
|
||||
expect.withMessage("cue.size").that(cue.size).isEqualTo(size);
|
||||
|
||||
assertThat(expect.hasFailures()).isFalse();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue