Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
ce0f814b
authored
Jul 28, 2020
by
christosts
Committed by
Oliver Woodman
Aug 01, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Migrate ExoPlayerTest.playEmptyTimeline to TestExoPlayer
PiperOrigin-RevId: 323544694
parent
437275ca
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
15 deletions
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
testutils/src/main/java/com/google/android/exoplayer2/testutil/NoUidTimeline.java
library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java
View file @
ce0f814b
...
...
@@ -17,13 +17,18 @@ package com.google.android.exoplayer2;
import
static
com
.
google
.
android
.
exoplayer2
.
testutil
.
FakeSampleStream
.
FakeSampleStreamItem
.
END_OF_STREAM_ITEM
;
import
static
com
.
google
.
android
.
exoplayer2
.
testutil
.
FakeSampleStream
.
FakeSampleStreamItem
.
oneByteSample
;
import
static
com
.
google
.
android
.
exoplayer2
.
testutil
.
TestExoPlayer
.
runUntilPlaybackState
;
import
static
com
.
google
.
common
.
truth
.
Truth
.
assertThat
;
import
static
org
.
junit
.
Assert
.
assertArrayEquals
;
import
static
org
.
junit
.
Assert
.
assertThrows
;
import
static
org
.
junit
.
Assert
.
fail
;
import
static
org
.
mockito
.
ArgumentMatchers
.
any
;
import
static
org
.
mockito
.
ArgumentMatchers
.
anyInt
;
import
static
org
.
mockito
.
ArgumentMatchers
.
argThat
;
import
static
org
.
mockito
.
ArgumentMatchers
.
eq
;
import
static
org
.
mockito
.
Mockito
.
inOrder
;
import
static
org
.
mockito
.
Mockito
.
mock
;
import
static
org
.
mockito
.
Mockito
.
never
;
import
static
org
.
mockito
.
Mockito
.
times
;
import
static
org
.
mockito
.
Mockito
.
verify
;
import
static
org
.
robolectric
.
Shadows
.
shadowOf
;
...
...
@@ -82,6 +87,7 @@ import com.google.android.exoplayer2.testutil.FakeTimeline;
import
com.google.android.exoplayer2.testutil.FakeTimeline.TimelineWindowDefinition
;
import
com.google.android.exoplayer2.testutil.FakeTrackSelection
;
import
com.google.android.exoplayer2.testutil.FakeTrackSelector
;
import
com.google.android.exoplayer2.testutil.NoUidTimeline
;
import
com.google.android.exoplayer2.testutil.TestExoPlayer
;
import
com.google.android.exoplayer2.trackselection.DefaultTrackSelector
;
import
com.google.android.exoplayer2.trackselection.TrackSelection
;
...
...
@@ -110,6 +116,8 @@ import org.junit.Before;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.mockito.ArgumentMatcher
;
import
org.mockito.InOrder
;
import
org.robolectric.shadows.ShadowAudioManager
;
/** Unit test for {@link ExoPlayer}. */
...
...
@@ -146,18 +154,27 @@ public final class ExoPlayerTest {
Timeline
expectedMaskingTimeline
=
new
MaskingMediaSource
.
PlaceholderTimeline
(
FakeMediaSource
.
FAKE_MEDIA_ITEM
);
FakeRenderer
renderer
=
new
FakeRenderer
(
C
.
TRACK_TYPE_UNKNOWN
);
ExoPlayerTestRunner
testRunner
=
new
ExoPlayerTestRunner
.
Builder
(
context
)
.
setTimeline
(
timeline
)
.
setRenderers
(
renderer
)
.
build
()
.
start
()
.
blockUntilEnded
(
TIMEOUT_MS
);
testRunner
.
assertNoPositionDiscontinuities
();
testRunner
.
assertTimelinesSame
(
expectedMaskingTimeline
,
Timeline
.
EMPTY
);
testRunner
.
assertTimelineChangeReasonsEqual
(
Player
.
TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED
,
Player
.
TIMELINE_CHANGE_REASON_SOURCE_UPDATE
);
SimpleExoPlayer
player
=
new
TestExoPlayer
.
Builder
(
context
).
setRenderers
(
renderer
).
build
();
EventListener
mockEventListener
=
mock
(
EventListener
.
class
);
player
.
addListener
(
mockEventListener
);
player
.
setMediaSource
(
new
FakeMediaSource
(
timeline
,
ExoPlayerTestRunner
.
VIDEO_FORMAT
));
player
.
prepare
();
player
.
play
();
runUntilPlaybackState
(
player
,
Player
.
STATE_ENDED
);
InOrder
inOrder
=
inOrder
(
mockEventListener
);
inOrder
.
verify
(
mockEventListener
)
.
onTimelineChanged
(
argThat
(
noUid
(
expectedMaskingTimeline
)),
eq
(
Player
.
TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED
));
inOrder
.
verify
(
mockEventListener
)
.
onTimelineChanged
(
argThat
(
noUid
(
timeline
)),
eq
(
Player
.
TIMELINE_CHANGE_REASON_SOURCE_UPDATE
));
inOrder
.
verify
(
mockEventListener
,
never
()).
onPositionDiscontinuity
(
anyInt
());
assertThat
(
renderer
.
getFormatsRead
()).
isEmpty
();
assertThat
(
renderer
.
sampleBufferReadCount
).
isEqualTo
(
0
);
assertThat
(
renderer
.
isEnded
).
isFalse
();
...
...
@@ -2525,7 +2542,7 @@ public final class ExoPlayerTest {
// indices are non-zero.
player
.
prepare
();
player
.
play
();
TestExoPlayer
.
runUntilPlaybackState
(
player
,
Player
.
STATE_ENDED
);
runUntilPlaybackState
(
player
,
Player
.
STATE_ENDED
);
verify
(
secondMediaItemTarget
).
handleMessage
(
anyInt
(),
any
());
// Remove first item and play second item again to check if message is triggered again.
...
...
@@ -2534,7 +2551,7 @@ public final class ExoPlayerTest {
// See https://github.com/google/ExoPlayer/issues/7278.
player
.
removeMediaItem
(
/* index= */
0
);
player
.
seekTo
(
/* positionMs= */
0
);
TestExoPlayer
.
runUntilPlaybackState
(
player
,
Player
.
STATE_ENDED
);
runUntilPlaybackState
(
player
,
Player
.
STATE_ENDED
);
assertThat
(
player
.
getPlayerError
()).
isNull
();
verify
(
secondMediaItemTarget
,
times
(
2
)).
handleMessage
(
anyInt
(),
any
());
...
...
@@ -8344,4 +8361,16 @@ public final class ExoPlayerTest {
return
ImmutableList
.
of
();
}
}
/**
* Returns an argument matcher for {@link Timeline} instances that ignores period and window uids.
*/
private
static
ArgumentMatcher
<
Timeline
>
noUid
(
Timeline
timeline
)
{
return
new
ArgumentMatcher
<
Timeline
>()
{
@Override
public
boolean
matches
(
Timeline
argument
)
{
return
new
NoUidTimeline
(
timeline
).
equals
(
new
NoUidTimeline
(
argument
));
}
};
}
}
testutils/src/main/java/com/google/android/exoplayer2/testutil/NoUidTimeline.java
View file @
ce0f814b
...
...
@@ -22,7 +22,7 @@ import com.google.android.exoplayer2.source.ForwardingTimeline;
* A timeline which wraps another timeline and overrides all window and period uids to 0. This is
* useful for testing timeline equality without taking uids into account.
*/
/* package */
class
NoUidTimeline
extends
ForwardingTimeline
{
public
class
NoUidTimeline
extends
ForwardingTimeline
{
/**
* Creates an instance.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment