From 177a33bbee7c796d974f73954f292fb45d9201f7 Mon Sep 17 00:00:00 2001 From: tonihei Date: Fri, 30 Jun 2017 06:02:22 -0700 Subject: [PATCH] Merge TimelineAsserts.StubMediaSource into FakeMediaSource. The StubMediaSource was a subset of the FakeMediaSource. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=160638245 --- .../source/ClippingMediaSourceTest.java | 4 +- .../source/ConcatenatingMediaSourceTest.java | 4 +- .../DynamicConcatenatingMediaSourceTest.java | 21 ++++---- .../source/LoopingMediaSourceTest.java | 10 ++-- .../exoplayer2/testutil/FakeMediaSource.java | 8 ++- .../exoplayer2/testutil/TimelineAsserts.java | 50 ------------------- 6 files changed, 27 insertions(+), 70 deletions(-) diff --git a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/ClippingMediaSourceTest.java b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/ClippingMediaSourceTest.java index dbfd276b42..a7b37e2e23 100644 --- a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/ClippingMediaSourceTest.java +++ b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/ClippingMediaSourceTest.java @@ -21,9 +21,9 @@ 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.testutil.FakeMediaSource; import com.google.android.exoplayer2.testutil.TimelineAsserts; import com.google.android.exoplayer2.testutil.TimelineAsserts.FakeTimeline; -import com.google.android.exoplayer2.testutil.TimelineAsserts.StubMediaSource; /** * Unit tests for {@link ClippingMediaSource}. @@ -120,7 +120,7 @@ public final class ClippingMediaSourceTest extends InstrumentationTestCase { * Wraps the specified timeline in a {@link ClippingMediaSource} and returns the clipped timeline. */ private static Timeline getClippedTimeline(Timeline timeline, long startMs, long endMs) { - MediaSource mediaSource = new StubMediaSource(timeline); + MediaSource mediaSource = new FakeMediaSource(timeline, null); return TimelineAsserts.extractTimelineFromMediaSource( new ClippingMediaSource(mediaSource, startMs, endMs)); } diff --git a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/ConcatenatingMediaSourceTest.java b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/ConcatenatingMediaSourceTest.java index c236679d88..40551aa38f 100644 --- a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/ConcatenatingMediaSourceTest.java +++ b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/ConcatenatingMediaSourceTest.java @@ -18,9 +18,9 @@ package com.google.android.exoplayer2.source; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.Timeline; +import com.google.android.exoplayer2.testutil.FakeMediaSource; import com.google.android.exoplayer2.testutil.TimelineAsserts; import com.google.android.exoplayer2.testutil.TimelineAsserts.FakeTimeline; -import com.google.android.exoplayer2.testutil.TimelineAsserts.StubMediaSource; import junit.framework.TestCase; /** @@ -102,7 +102,7 @@ public final class ConcatenatingMediaSourceTest extends TestCase { Timeline... timelines) { MediaSource[] mediaSources = new MediaSource[timelines.length]; for (int i = 0; i < timelines.length; i++) { - mediaSources[i] = new StubMediaSource(timelines[i]); + mediaSources[i] = new FakeMediaSource(timelines[i], null); } return TimelineAsserts.extractTimelineFromMediaSource( new ConcatenatingMediaSource(isRepeatOneAtomic, mediaSources)); diff --git a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSourceTest.java b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSourceTest.java index a7281d7e21..982d37c3a1 100644 --- a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSourceTest.java +++ b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSourceTest.java @@ -25,9 +25,9 @@ import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.PlaybackParameters; import com.google.android.exoplayer2.Timeline; import com.google.android.exoplayer2.source.MediaSource.Listener; +import com.google.android.exoplayer2.testutil.FakeMediaSource; import com.google.android.exoplayer2.testutil.TimelineAsserts; import com.google.android.exoplayer2.testutil.TimelineAsserts.FakeTimeline; -import com.google.android.exoplayer2.testutil.TimelineAsserts.StubMediaSource; import com.google.android.exoplayer2.trackselection.TrackSelectionArray; import com.google.android.exoplayer2.upstream.Allocator; import java.io.IOException; @@ -46,7 +46,7 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase { public void testPlaylistChangesAfterPreparation() throws InterruptedException { timeline = null; - TimelineAsserts.StubMediaSource[] childSources = createMediaSources(7); + FakeMediaSource[] childSources = createMediaSources(7); DynamicConcatenatingMediaSource mediaSource = new DynamicConcatenatingMediaSource(); prepareAndListenToTimelineUpdates(mediaSource); waitForTimelineUpdate(); @@ -132,7 +132,7 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase { public void testPlaylistChangesBeforePreparation() throws InterruptedException { timeline = null; - TimelineAsserts.StubMediaSource[] childSources = createMediaSources(4); + FakeMediaSource[] childSources = createMediaSources(4); DynamicConcatenatingMediaSource mediaSource = new DynamicConcatenatingMediaSource(); mediaSource.addMediaSource(childSources[0]); mediaSource.addMediaSource(childSources[1]); @@ -155,7 +155,7 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase { public void testPlaylistWithLazyMediaSource() throws InterruptedException { timeline = null; - TimelineAsserts.StubMediaSource[] childSources = createMediaSources(2); + FakeMediaSource[] childSources = createMediaSources(2); LazyMediaSource[] lazySources = new LazyMediaSource[4]; for (int i = 0; i < 4; i++) { lazySources[i] = new LazyMediaSource(); @@ -207,7 +207,7 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase { public void testIllegalArguments() { DynamicConcatenatingMediaSource mediaSource = new DynamicConcatenatingMediaSource(); - MediaSource validSource = new StubMediaSource(new FakeTimeline(1, 1)); + MediaSource validSource = new FakeMediaSource(new FakeTimeline(1, 1), null); // Null sources. try { @@ -234,7 +234,10 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase { // Expected. } - mediaSources = new MediaSource[] { new StubMediaSource(new FakeTimeline(1, 1)), validSource}; + mediaSources = new MediaSource[] { + new FakeMediaSource(new FakeTimeline(1, 1), null), + validSource + }; try { mediaSource.addMediaSources(Arrays.asList(mediaSources)); fail("Duplicate mediaSource not allowed."); @@ -267,10 +270,10 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase { timelineUpdated = false; } - private TimelineAsserts.StubMediaSource[] createMediaSources(int count) { - TimelineAsserts.StubMediaSource[] sources = new TimelineAsserts.StubMediaSource[count]; + private FakeMediaSource[] createMediaSources(int count) { + FakeMediaSource[] sources = new FakeMediaSource[count]; for (int i = 0; i < count; i++) { - sources[i] = new TimelineAsserts.StubMediaSource(new FakeTimeline(i + 1, (i + 1) * 111)); + sources[i] = new FakeMediaSource(new FakeTimeline(i + 1, (i + 1) * 111), null); } return sources; } diff --git a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/LoopingMediaSourceTest.java b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/LoopingMediaSourceTest.java index f9f35d20cf..6157487005 100644 --- a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/LoopingMediaSourceTest.java +++ b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/LoopingMediaSourceTest.java @@ -18,9 +18,9 @@ package com.google.android.exoplayer2.source; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.Timeline; +import com.google.android.exoplayer2.testutil.FakeMediaSource; import com.google.android.exoplayer2.testutil.TimelineAsserts; import com.google.android.exoplayer2.testutil.TimelineAsserts.FakeTimeline; -import com.google.android.exoplayer2.testutil.TimelineAsserts.StubMediaSource; import junit.framework.TestCase; /** @@ -33,9 +33,9 @@ public class LoopingMediaSourceTest extends TestCase { public LoopingMediaSourceTest() { multiWindowTimeline = TimelineAsserts.extractTimelineFromMediaSource( new ConcatenatingMediaSource( - new StubMediaSource(new FakeTimeline(1, 111)), - new StubMediaSource(new FakeTimeline(1, 222)), - new StubMediaSource(new FakeTimeline(1, 333)))); + new FakeMediaSource(new FakeTimeline(1, 111), null), + new FakeMediaSource(new FakeTimeline(1, 222), null), + new FakeMediaSource(new FakeTimeline(1, 333), null))); } public void testSingleLoop() { @@ -87,7 +87,7 @@ public class LoopingMediaSourceTest extends TestCase { * the looping timeline. */ private static Timeline getLoopingTimeline(Timeline timeline, int loopCount) { - MediaSource mediaSource = new StubMediaSource(timeline); + MediaSource mediaSource = new FakeMediaSource(timeline, null); return TimelineAsserts.extractTimelineFromMediaSource( new LoopingMediaSource(mediaSource, loopCount)); } diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java index bb274ce417..3a6b03ed5e 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeMediaSource.java @@ -29,8 +29,8 @@ import java.util.ArrayList; import junit.framework.Assert; /** - * Fake {@link MediaSource} that provides a given timeline (which must have one period). Creating - * the period will return a {@link FakeMediaPeriod}. + * Fake {@link MediaSource} that provides a given timeline. Creating the period will return a + * {@link FakeMediaPeriod} with a {@link TrackGroupArray} using the given {@link Format}s. */ public class FakeMediaSource implements MediaSource { @@ -53,6 +53,10 @@ public class FakeMediaSource implements MediaSource { activeMediaPeriods = new ArrayList<>(); } + public void assertReleased() { + Assert.assertTrue(releasedSource); + } + @Override public void prepareSource(ExoPlayer player, boolean isTopLevelSource, Listener listener) { Assert.assertFalse(preparedSource); diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/TimelineAsserts.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/TimelineAsserts.java index 6e50251c27..97fd9b07ea 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/TimelineAsserts.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/TimelineAsserts.java @@ -16,19 +16,14 @@ package com.google.android.exoplayer2.testutil; import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertFalse; -import static junit.framework.Assert.assertTrue; import com.google.android.exoplayer2.C; 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.MediaPeriod; import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSource.Listener; -import com.google.android.exoplayer2.upstream.Allocator; -import java.io.IOException; /** * Unit test for {@link Timeline}. @@ -79,51 +74,6 @@ public final class TimelineAsserts { } } - /** - * Stub media source which returns a provided timeline as source info and keeps track if it is - * prepared and released. - */ - public static class StubMediaSource implements MediaSource { - private final Timeline timeline; - - private boolean isPrepared; - private volatile boolean isReleased; - - public StubMediaSource(Timeline timeline) { - this.timeline = timeline; - } - - @Override - public void prepareSource(ExoPlayer player, boolean isTopLevelSource, Listener listener) { - assertFalse(isPrepared); - listener.onSourceInfoRefreshed(timeline, null); - isPrepared = true; - } - - @Override - public void maybeThrowSourceInfoRefreshError() throws IOException { - } - - @Override - public MediaPeriod createPeriod(MediaPeriodId id, Allocator allocator) { - return null; - } - - @Override - public void releasePeriod(MediaPeriod mediaPeriod) { - } - - @Override - public void releaseSource() { - assertTrue(isPrepared); - isReleased = true; - } - - public void assertReleased() { - assertTrue(isReleased); - } - } - /** * Extracts the timeline from a media source. */