Commit 960315c4 by tonihei Committed by Oliver Woodman

Move extractTimelineFromMediaSource to test util class.

This also ensures that TimelineAsserts only contains assert methods.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=160827271
parent a82e5107
......@@ -24,6 +24,7 @@ import com.google.android.exoplayer2.Timeline.Window;
import com.google.android.exoplayer2.testutil.FakeMediaSource;
import com.google.android.exoplayer2.testutil.FakeTimeline;
import com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition;
import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.testutil.TimelineAsserts;
/**
......@@ -123,7 +124,7 @@ public final class ClippingMediaSourceTest extends InstrumentationTestCase {
*/
private static Timeline getClippedTimeline(Timeline timeline, long startMs, long endMs) {
MediaSource mediaSource = new FakeMediaSource(timeline, null);
return TimelineAsserts.extractTimelineFromMediaSource(
return TestUtil.extractTimelineFromMediaSource(
new ClippingMediaSource(mediaSource, startMs, endMs));
}
......
......@@ -21,6 +21,7 @@ import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.testutil.FakeMediaSource;
import com.google.android.exoplayer2.testutil.FakeTimeline;
import com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition;
import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.testutil.TimelineAsserts;
import junit.framework.TestCase;
......@@ -105,7 +106,7 @@ public final class ConcatenatingMediaSourceTest extends TestCase {
for (int i = 0; i < timelines.length; i++) {
mediaSources[i] = new FakeMediaSource(timelines[i], null);
}
return TimelineAsserts.extractTimelineFromMediaSource(
return TestUtil.extractTimelineFromMediaSource(
new ConcatenatingMediaSource(isRepeatOneAtomic, mediaSources));
}
......
......@@ -21,6 +21,7 @@ import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.testutil.FakeMediaSource;
import com.google.android.exoplayer2.testutil.FakeTimeline;
import com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition;
import com.google.android.exoplayer2.testutil.TestUtil;
import com.google.android.exoplayer2.testutil.TimelineAsserts;
import junit.framework.TestCase;
......@@ -32,7 +33,7 @@ public class LoopingMediaSourceTest extends TestCase {
private final Timeline multiWindowTimeline;
public LoopingMediaSourceTest() {
multiWindowTimeline = TimelineAsserts.extractTimelineFromMediaSource(new FakeMediaSource(
multiWindowTimeline = TestUtil.extractTimelineFromMediaSource(new FakeMediaSource(
new FakeTimeline(new TimelineWindowDefinition(1, 111),
new TimelineWindowDefinition(1, 222), new TimelineWindowDefinition(1, 333)), null));
}
......@@ -87,7 +88,7 @@ public class LoopingMediaSourceTest extends TestCase {
*/
private static Timeline getLoopingTimeline(Timeline timeline, int loopCount) {
MediaSource mediaSource = new FakeMediaSource(timeline, null);
return TimelineAsserts.extractTimelineFromMediaSource(
return TestUtil.extractTimelineFromMediaSource(
new LoopingMediaSource(mediaSource, loopCount));
}
......
......@@ -19,9 +19,12 @@ import android.app.Instrumentation;
import android.test.InstrumentationTestCase;
import android.test.MoreAsserts;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.extractor.Extractor;
import com.google.android.exoplayer2.extractor.PositionHolder;
import com.google.android.exoplayer2.extractor.SeekMap;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSource.Listener;
import com.google.android.exoplayer2.testutil.FakeExtractorInput.SimulatedIOException;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.upstream.DataSpec;
......@@ -219,6 +222,32 @@ public class TestUtil {
}
/**
* Extracts the timeline from a media source.
*/
public static Timeline extractTimelineFromMediaSource(MediaSource mediaSource) {
class TimelineListener implements Listener {
private Timeline timeline;
@Override
public synchronized void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
this.timeline = timeline;
this.notify();
}
}
TimelineListener listener = new TimelineListener();
mediaSource.prepareSource(null, true, listener);
synchronized (listener) {
while (listener.timeline == null) {
try {
listener.wait();
} catch (InterruptedException e) {
Assert.fail(e.getMessage());
}
}
}
return listener.timeline;
}
/**
* Calls {@link #assertOutput(Extractor, String, byte[], Instrumentation, boolean, boolean,
* boolean)} with all possible combinations of "simulate" parameters.
*
......
......@@ -22,8 +22,6 @@ import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.Timeline.Period;
import com.google.android.exoplayer2.Timeline.Window;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MediaSource.Listener;
/**
* Unit test for {@link Timeline}.
......@@ -33,22 +31,6 @@ public final class TimelineAsserts {
private TimelineAsserts() {}
/**
* Extracts the timeline from a media source.
*/
public static Timeline extractTimelineFromMediaSource(MediaSource mediaSource) {
class TimelineListener implements Listener {
private Timeline timeline;
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
this.timeline = timeline;
}
}
TimelineListener listener = new TimelineListener();
mediaSource.prepareSource(null, true, listener);
return listener.timeline;
}
/**
* Assert that timeline is empty (i.e. has no windows or periods).
*/
public static void assertEmpty(Timeline timeline) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment