Simplify timeline test stub class.

Use an actual class for the stub media source instead of an anomymous class.
Allows to call assertReleased() on that class.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=159109143
This commit is contained in:
tonihei 2017-06-15 08:53:47 -07:00 committed by Oliver Woodman
parent ed27017b0c
commit 023c9d56a9
4 changed files with 47 additions and 29 deletions

View file

@ -73,13 +73,24 @@ public class TimelineTest extends TestCase {
} }
/** /**
* Returns a stub {@link MediaSource} with the specified {@link Timeline} in its source info. * Stub media source which returns a provided timeline as source info and keeps track if it is
* prepared and released.
*/ */
public static MediaSource stubMediaSourceSourceWithTimeline(final Timeline timeline) { public static class StubMediaSource implements MediaSource {
return new MediaSource() { private final Timeline timeline;
private boolean isPrepared;
private volatile boolean isReleased;
public StubMediaSource(Timeline timeline) {
this.timeline = timeline;
}
@Override @Override
public void prepareSource(ExoPlayer player, boolean isTopLevelSource, Listener listener) { public void prepareSource(ExoPlayer player, boolean isTopLevelSource, Listener listener) {
assertFalse(isPrepared);
listener.onSourceInfoRefreshed(timeline, null); listener.onSourceInfoRefreshed(timeline, null);
isPrepared = true;
} }
@Override @Override
@ -97,13 +108,17 @@ public class TimelineTest extends TestCase {
@Override @Override
public void releaseSource() { public void releaseSource() {
assertTrue(isPrepared);
isReleased = true;
}
public void assertReleased() {
assertTrue(isReleased);
} }
};
} }
/** /**
* Works in conjunction with {@code stubMediaSourceSourceWithTimeline} to extract the Timeline * Extracts the timeline from a media source.
* from a media source.
*/ */
public static Timeline extractTimelineFromMediaSource(MediaSource mediaSource) { public static Timeline extractTimelineFromMediaSource(MediaSource mediaSource) {
class TimelineListener implements Listener { class TimelineListener implements Listener {

View file

@ -23,6 +23,7 @@ import com.google.android.exoplayer2.Timeline.Period;
import com.google.android.exoplayer2.Timeline.Window; import com.google.android.exoplayer2.Timeline.Window;
import com.google.android.exoplayer2.TimelineTest; import com.google.android.exoplayer2.TimelineTest;
import com.google.android.exoplayer2.TimelineTest.FakeTimeline; import com.google.android.exoplayer2.TimelineTest.FakeTimeline;
import com.google.android.exoplayer2.TimelineTest.StubMediaSource;
import com.google.android.exoplayer2.TimelineTest.TimelineVerifier; import com.google.android.exoplayer2.TimelineTest.TimelineVerifier;
/** /**
@ -119,7 +120,7 @@ public final class ClippingMediaSourceTest extends InstrumentationTestCase {
* Wraps the specified timeline in a {@link ClippingMediaSource} and returns the clipped timeline. * Wraps the specified timeline in a {@link ClippingMediaSource} and returns the clipped timeline.
*/ */
private static Timeline getClippedTimeline(Timeline timeline, long startMs, long endMs) { private static Timeline getClippedTimeline(Timeline timeline, long startMs, long endMs) {
MediaSource mediaSource = TimelineTest.stubMediaSourceSourceWithTimeline(timeline); MediaSource mediaSource = new StubMediaSource(timeline);
return TimelineTest.extractTimelineFromMediaSource( return TimelineTest.extractTimelineFromMediaSource(
new ClippingMediaSource(mediaSource, startMs, endMs)); new ClippingMediaSource(mediaSource, startMs, endMs));
} }

View file

@ -20,6 +20,7 @@ import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.TimelineTest; import com.google.android.exoplayer2.TimelineTest;
import com.google.android.exoplayer2.TimelineTest.FakeTimeline; import com.google.android.exoplayer2.TimelineTest.FakeTimeline;
import com.google.android.exoplayer2.TimelineTest.StubMediaSource;
import com.google.android.exoplayer2.TimelineTest.TimelineVerifier; import com.google.android.exoplayer2.TimelineTest.TimelineVerifier;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -101,7 +102,7 @@ public final class ConcatenatingMediaSourceTest extends TestCase {
Timeline... timelines) { Timeline... timelines) {
MediaSource[] mediaSources = new MediaSource[timelines.length]; MediaSource[] mediaSources = new MediaSource[timelines.length];
for (int i = 0; i < timelines.length; i++) { for (int i = 0; i < timelines.length; i++) {
mediaSources[i] = TimelineTest.stubMediaSourceSourceWithTimeline(timelines[i]); mediaSources[i] = new StubMediaSource(timelines[i]);
} }
return TimelineTest.extractTimelineFromMediaSource( return TimelineTest.extractTimelineFromMediaSource(
new ConcatenatingMediaSource(isRepeatOneAtomic, mediaSources)); new ConcatenatingMediaSource(isRepeatOneAtomic, mediaSources));

View file

@ -20,6 +20,7 @@ import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.TimelineTest; import com.google.android.exoplayer2.TimelineTest;
import com.google.android.exoplayer2.TimelineTest.FakeTimeline; import com.google.android.exoplayer2.TimelineTest.FakeTimeline;
import com.google.android.exoplayer2.TimelineTest.StubMediaSource;
import com.google.android.exoplayer2.TimelineTest.TimelineVerifier; import com.google.android.exoplayer2.TimelineTest.TimelineVerifier;
import junit.framework.TestCase; import junit.framework.TestCase;
@ -33,9 +34,9 @@ public class LoopingMediaSourceTest extends TestCase {
public LoopingMediaSourceTest() { public LoopingMediaSourceTest() {
multiWindowTimeline = TimelineTest.extractTimelineFromMediaSource( multiWindowTimeline = TimelineTest.extractTimelineFromMediaSource(
new ConcatenatingMediaSource( new ConcatenatingMediaSource(
TimelineTest.stubMediaSourceSourceWithTimeline(new FakeTimeline(1, 111)), new StubMediaSource(new FakeTimeline(1, 111)),
TimelineTest.stubMediaSourceSourceWithTimeline(new FakeTimeline(1, 222)), new StubMediaSource(new FakeTimeline(1, 222)),
TimelineTest.stubMediaSourceSourceWithTimeline(new FakeTimeline(1, 333)))); new StubMediaSource(new FakeTimeline(1, 333))));
} }
public void testSingleLoop() { public void testSingleLoop() {
@ -83,7 +84,7 @@ public class LoopingMediaSourceTest extends TestCase {
* the looping timeline. * the looping timeline.
*/ */
private static Timeline getLoopingTimeline(Timeline timeline, int loopCount) { private static Timeline getLoopingTimeline(Timeline timeline, int loopCount) {
MediaSource mediaSource = TimelineTest.stubMediaSourceSourceWithTimeline(timeline); MediaSource mediaSource = new StubMediaSource(timeline);
return TimelineTest.extractTimelineFromMediaSource( return TimelineTest.extractTimelineFromMediaSource(
new LoopingMediaSource(mediaSource, loopCount)); new LoopingMediaSource(mediaSource, loopCount));
} }