package org.robolectric.shadows; import android.view.animation.BounceInterpolator; import android.widget.Scroller; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import org.robolectric.TestRunners; import static org.assertj.core.api.Assertions.assertThat; @RunWith(TestRunners.MultiApiSelfTest.class) public class ShadowScrollerTest { private Scroller scroller; @Before public void setup() throws Exception { scroller = new Scroller(RuntimeEnvironment.application, new BounceInterpolator()); } @Test public void shouldScrollOverTime() throws Exception { scroller.startScroll(0, 0, 12, 36, 1000); assertThat(scroller.getStartX()).isEqualTo(0); assertThat(scroller.getStartY()).isEqualTo(0); assertThat(scroller.getFinalX()).isEqualTo(12); assertThat(scroller.getFinalY()).isEqualTo(36); assertThat(scroller.getDuration()).isEqualTo(1000); assertThat(scroller.getCurrX()).isEqualTo(0); assertThat(scroller.getCurrY()).isEqualTo(0); assertThat(scroller.isFinished()).isFalse(); assertThat(scroller.timePassed()).isEqualTo(0); ShadowLooper.idleMainLooper(334); assertThat(scroller.getCurrX()).isEqualTo(4); assertThat(scroller.getCurrY()).isEqualTo(12); assertThat(scroller.isFinished()).isFalse(); assertThat(scroller.timePassed()).isEqualTo(334); ShadowLooper.idleMainLooper(166); assertThat(scroller.getCurrX()).isEqualTo(6); assertThat(scroller.getCurrY()).isEqualTo(18); assertThat(scroller.isFinished()).isFalse(); assertThat(scroller.timePassed()).isEqualTo(500); ShadowLooper.idleMainLooper(500); assertThat(scroller.getCurrX()).isEqualTo(12); assertThat(scroller.getCurrY()).isEqualTo(36); assertThat(scroller.isFinished()).isFalse(); assertThat(scroller.timePassed()).isEqualTo(1000); ShadowLooper.idleMainLooper(1); assertThat(scroller.isFinished()).isTrue(); assertThat(scroller.timePassed()).isEqualTo(1001); } @Test public void computeScrollOffsetShouldCalculateWhetherScrollIsFinished() throws Exception { assertThat(scroller.computeScrollOffset()).isFalse(); scroller.startScroll(0, 0, 12, 36, 1000); assertThat(scroller.computeScrollOffset()).isTrue(); ShadowLooper.idleMainLooper(500); assertThat(scroller.computeScrollOffset()).isTrue(); ShadowLooper.idleMainLooper(500); assertThat(scroller.computeScrollOffset()).isTrue(); assertThat(scroller.computeScrollOffset()).isFalse(); } }