1 package org.robolectric.shadows; 2 3 import static org.assertj.core.api.Assertions.assertThat; 4 5 import android.animation.ValueAnimator; 6 import com.google.common.collect.Ordering; 7 import java.util.ArrayList; 8 import java.util.List; 9 import org.junit.Test; 10 import org.junit.runner.RunWith; 11 import org.robolectric.Robolectric; 12 import org.robolectric.RobolectricTestRunner; 13 import org.robolectric.Shadows; 14 import org.robolectric.util.TimeUtils; 15 16 @RunWith(RobolectricTestRunner.class) 17 public class ShadowValueAnimatorTest { 18 19 @Test 20 public void start_shouldRunAnimation() { 21 final List<Integer> values = new ArrayList<>(); 22 23 ShadowChoreographer.setFrameInterval(100 * TimeUtils.NANOS_PER_MS); 24 25 26 final ValueAnimator animator = ValueAnimator.ofInt(0, 10); 27 animator.setDuration(1000); 28 animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 29 @Override 30 public void onAnimationUpdate(ValueAnimator animation) { 31 values.add((int) animation.getAnimatedValue()); 32 } 33 }); 34 animator.start(); 35 36 assertThat(values).isSortedAccordingTo(Ordering.natural()); 37 } 38 39 @Test 40 public void test_WithInfiniteRepeatCount_CountIsSetToOne() { 41 final ValueAnimator animator = ValueAnimator.ofInt(0, 10); 42 animator.setRepeatCount(ValueAnimator.INFINITE); 43 44 assertThat(Shadows.shadowOf(animator).getActualRepeatCount()).isEqualTo(ValueAnimator.INFINITE); 45 assertThat(animator.getRepeatCount()).isEqualTo(1); 46 } 47 48 @Test 49 public void test_WhenInfiniteAnimationIsPlayed_AnimationIsOnlyPlayedOnce() throws InterruptedException { 50 ShadowChoreographer.setFrameInterval(100 * TimeUtils.NANOS_PER_MS); 51 final ValueAnimator animator = ValueAnimator.ofInt(0, 10); 52 animator.setDuration(200); 53 animator.setRepeatCount(ValueAnimator.INFINITE); 54 55 Robolectric.getForegroundThreadScheduler().pause(); 56 animator.start(); 57 assertThat(animator.isRunning()).isTrue(); 58 59 Robolectric.flushForegroundThreadScheduler(); 60 assertThat(animator.isRunning()).isFalse(); 61 } 62 } 63