package org.robolectric.shadows;
import android.animation.Animator;
import android.animation.ObjectAnimator;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.TestRunners;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
@RunWith(TestRunners.MultiApiSelfTest.class)
public class ShadowObjectAnimatorTest {
private final AnimatorTarget target = new AnimatorTarget();
private final Animator.AnimatorListener listener = spy(Animator.AnimatorListener.class);
@Test
public void start_shouldRunAnimation() {
final ObjectAnimator animator = ObjectAnimator.ofInt(target, "transparency", 0, 1, 2, 3, 4);
Robolectric.getForegroundThreadScheduler().pause();
animator.setDuration(1000);
animator.addListener(listener);
animator.start();
verify(listener).onAnimationStart(animator);
assertThat(target.getTransparency()).isEqualTo(0);
Robolectric.flushForegroundThreadScheduler();
verify(listener).onAnimationEnd(animator);
assertThat(target.getTransparency()).isEqualTo(4);
}
@SuppressWarnings("unused")
public static class AnimatorTarget {
private int transparency;
public void setTransparency(int transparency) {
this.transparency = transparency;
}
public int getTransparency() {
return transparency;
}
}
}