Commit 02bc2d7c by andrewlewis Committed by Oliver Woodman

Add DefaultLoadControl test for starting playback

Also refactor the tests to make them behavioral (rather than testing the method)
and inline simple assertions.

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=191867614
parent 66d2b76a
......@@ -24,17 +24,18 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
/** Unit test for {@link DefaultLoadControl#shouldContinueLoading(long, float)}. */
/** Unit tests for {@link DefaultLoadControl}. */
@RunWith(RobolectricTestRunner.class)
public class DefaultLoadControlShouldContinueLoadingTest {
public class DefaultLoadControlTest {
private static final int PLAYBACK_SPEED = 1;
private static final int MIN_BUFFER_MS = DefaultLoadControl.DEFAULT_MIN_BUFFER_MS;
private static final int MAX_BUFFER_MS = DefaultLoadControl.DEFAULT_MAX_BUFFER_MS;
private static final float SPEED = 1f;
private static final long MIN_BUFFER_US = C.msToUs(DefaultLoadControl.DEFAULT_MIN_BUFFER_MS);
private static final long MAX_BUFFER_US = C.msToUs(DefaultLoadControl.DEFAULT_MAX_BUFFER_MS);
private static final int TARGET_BUFFER_BYTES = C.DEFAULT_BUFFER_SEGMENT_SIZE * 2;
private Builder builder;
private DefaultAllocator allocator;
private DefaultLoadControl defaultLoadControl;
private DefaultLoadControl loadControl;
@Before
public void setUp() throws Exception {
......@@ -43,54 +44,59 @@ public class DefaultLoadControlShouldContinueLoadingTest {
}
@Test
public void testReturnsTrueUntilMaximumBufferExceeded() throws Exception {
public void testShouldContinueLoading_untilMaxBufferExceeded() {
createDefaultLoadControl();
assertThatShouldContinueLoadingReturnsTrue(0);
assertThatShouldContinueLoadingReturnsTrue(MIN_BUFFER_MS);
assertThatShouldContinueLoadingReturnsTrue(MAX_BUFFER_MS);
assertThatShouldContinueLoadingReturnsFalse(MAX_BUFFER_MS + 1);
assertThat(loadControl.shouldContinueLoading(/* bufferedDurationUs= */ 0, SPEED)).isTrue();
assertThat(loadControl.shouldContinueLoading(MIN_BUFFER_US, SPEED)).isTrue();
assertThat(loadControl.shouldContinueLoading(MAX_BUFFER_US, SPEED)).isTrue();
assertThat(loadControl.shouldContinueLoading(MAX_BUFFER_US + 1, SPEED)).isFalse();
}
@Test
public void testReturnsFalseUntilFallBelowMinimumBufferOnceBufferingStopped() throws Exception {
public void testShouldNotContinueLoadingOnceBufferingStopped_untilBelowMinBuffer() {
createDefaultLoadControl();
assertThatShouldContinueLoadingReturnsFalse(MAX_BUFFER_MS + 1);
assertThatShouldContinueLoadingReturnsFalse(MAX_BUFFER_MS);
assertThatShouldContinueLoadingReturnsFalse(MIN_BUFFER_MS);
assertThatShouldContinueLoadingReturnsTrue(MIN_BUFFER_MS - 1);
assertThat(loadControl.shouldContinueLoading(MAX_BUFFER_US + 1, SPEED)).isFalse();
assertThat(loadControl.shouldContinueLoading(MAX_BUFFER_US, SPEED)).isFalse();
assertThat(loadControl.shouldContinueLoading(MIN_BUFFER_US, SPEED)).isFalse();
assertThat(loadControl.shouldContinueLoading(MIN_BUFFER_US - 1, SPEED)).isTrue();
}
@Test
public void testReturnsTrueUntilMinimumBufferReachedAlthoughTargetBufferBytesReached()
throws Exception {
public void testShouldContinueLoadingWithTargetBufferBytesReached_untilMinBufferReached() {
createDefaultLoadControl();
makeSureTargetBufferBytesReached();
assertThatShouldContinueLoadingReturnsTrue(0);
assertThatShouldContinueLoadingReturnsTrue(MIN_BUFFER_MS - 1);
assertThatShouldContinueLoadingReturnsFalse(MIN_BUFFER_MS);
assertThatShouldContinueLoadingReturnsFalse(MAX_BUFFER_MS + 1);
assertThat(loadControl.shouldContinueLoading(/* bufferedDurationUs= */ 0, SPEED)).isTrue();
assertThat(loadControl.shouldContinueLoading(MIN_BUFFER_US - 1, SPEED)).isTrue();
assertThat(loadControl.shouldContinueLoading(MIN_BUFFER_US, SPEED)).isFalse();
assertThat(loadControl.shouldContinueLoading(MAX_BUFFER_US + 1, SPEED)).isFalse();
}
@Test
public void testAlwaysReturnsFalseIfMaximumBufferReachedAndNotPrioritizeTimeOverSizeThresholds()
throws Exception {
public void testShouldNeverContinueLoading_ifMaxBufferReachedAndNotPrioritizeTimeOverSize() {
builder.setPrioritizeTimeOverSizeThresholds(false);
createDefaultLoadControl();
// Put defaultLoadControl in buffering state.
assertThatShouldContinueLoadingReturnsTrue(0);
// Put loadControl in buffering state.
assertThat(loadControl.shouldContinueLoading(/* bufferedDurationUs= */ 0, SPEED)).isTrue();
makeSureTargetBufferBytesReached();
assertThatShouldContinueLoadingReturnsFalse(0);
assertThatShouldContinueLoadingReturnsFalse(MIN_BUFFER_MS);
assertThatShouldContinueLoadingReturnsFalse(MAX_BUFFER_MS + 1);
assertThat(loadControl.shouldContinueLoading(/* bufferedDurationUs= */ 0, SPEED)).isFalse();
assertThat(loadControl.shouldContinueLoading(MIN_BUFFER_US, SPEED)).isFalse();
assertThat(loadControl.shouldContinueLoading(MAX_BUFFER_US + 1, SPEED)).isFalse();
}
@Test
public void testStartsPlayback_whenMinBufferSizeReached() {
createDefaultLoadControl();
assertThat(loadControl.shouldStartPlayback(MIN_BUFFER_US, SPEED, /* rebuffering= */ false))
.isTrue();
}
private void createDefaultLoadControl() {
builder.setAllocator(allocator);
builder.setTargetBufferBytes(TARGET_BUFFER_BYTES);
defaultLoadControl = builder.createDefaultLoadControl();
defaultLoadControl.onTracksSelected(new Renderer[0], null, null);
loadControl = builder.createDefaultLoadControl();
loadControl.onTracksSelected(new Renderer[0], null, null);
}
private void makeSureTargetBufferBytesReached() {
......@@ -99,13 +105,4 @@ public class DefaultLoadControlShouldContinueLoadingTest {
}
}
private void assertThatShouldContinueLoadingReturnsFalse(int bufferedDurationMs) {
assertThat(defaultLoadControl.shouldContinueLoading(bufferedDurationMs * 1000, PLAYBACK_SPEED))
.isFalse();
}
private void assertThatShouldContinueLoadingReturnsTrue(int bufferedDurationMs) {
assertThat(defaultLoadControl.shouldContinueLoading(bufferedDurationMs * 1000, PLAYBACK_SPEED))
.isTrue();
}
}
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