package com.bumptech.glide.request.transition; import static com.bumptech.glide.request.transition.Transition.ViewAdapter; import static org.junit.Assert.assertFalse; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.view.animation.Animation; import android.widget.ImageView; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE, sdk = 18) public class ViewAnimationTest { private ViewTransition<Object> viewAnimation; private ViewAdapter adapter; private ImageView view; private ViewTransition.ViewTransitionAnimationFactory viewTransitionAnimationFactory; @SuppressWarnings("unchecked") @Before public void setUp() { viewTransitionAnimationFactory = mock(ViewTransition.ViewTransitionAnimationFactory.class); view = mock(ImageView.class); adapter = mock(ViewAdapter.class); when(adapter.getView()).thenReturn(view); viewAnimation = new ViewTransition<>(viewTransitionAnimationFactory); } @Test public void testClearsAnimationOnAnimate() { viewAnimation.transition(null, adapter); verify(view).clearAnimation(); } @Test public void testAlwaysReturnsFalse() { assertFalse(viewAnimation.transition(null, adapter)); } @Test public void testStartsAnimationOnAnimate() { Animation animation = mock(Animation.class); when(viewTransitionAnimationFactory.build(any(Context.class))).thenReturn(animation); viewAnimation.transition(null, adapter); verify(view).clearAnimation(); verify(view).startAnimation(eq(animation)); } }