From c91c2adbb602708340286cddbca1cc921a8f75d2 Mon Sep 17 00:00:00 2001 From: Niek Haarman Date: Wed, 13 Aug 2014 15:00:48 +0200 Subject: [PATCH] Basic ViewAnimator tests --- .../appearance/ViewAnimatorTest.java | 102 ++++++++++++++++++ .../appearance/ViewAnimator.java | 2 - 2 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 lib-core/src/androidTest/java/com/nhaarman/listviewanimations/appearance/ViewAnimatorTest.java diff --git a/lib-core/src/androidTest/java/com/nhaarman/listviewanimations/appearance/ViewAnimatorTest.java b/lib-core/src/androidTest/java/com/nhaarman/listviewanimations/appearance/ViewAnimatorTest.java new file mode 100644 index 00000000..ec8b23af --- /dev/null +++ b/lib-core/src/androidTest/java/com/nhaarman/listviewanimations/appearance/ViewAnimatorTest.java @@ -0,0 +1,102 @@ +package com.nhaarman.listviewanimations.appearance; + +import android.test.InstrumentationTestCase; +import android.view.View; + +import com.nhaarman.listviewanimations.util.ListViewWrapper; +import com.nineoldandroids.animation.Animator; + +import org.mockito.Mock; + +import static org.mockito.Mockito.*; +import static org.mockito.MockitoAnnotations.*; + +@SuppressWarnings({"MagicNumber", "AnonymousInnerClass"}) +public class ViewAnimatorTest extends InstrumentationTestCase { + + private ViewAnimator mViewAnimator; + + @Mock + private ListViewWrapper mListViewWrapper; + + @Mock + private View mView; + + @Mock + private Animator mAnimator; + + @Override + protected void setUp() throws Exception { + super.setUp(); + + initMocks(this); + + mViewAnimator = new ViewAnimator(mListViewWrapper); + } + + public void testFirstViewAnimated() { + getInstrumentation().runOnMainSync( + new Runnable() { + @Override + public void run() { + mViewAnimator.animateViewIfNecessary(0, mView, new Animator[]{mAnimator}); + } + } + ); + + verify(mAnimator, timeout(500)).start(); + } + + public void testSecondViewAnimated() throws InterruptedException { + mViewAnimator.setAnimationDelayMillis(500); + + getInstrumentation().runOnMainSync( + new Runnable() { + @Override + public void run() { + mViewAnimator.animateViewIfNecessary(0, mView, new Animator[]{mAnimator}); + mViewAnimator.animateViewIfNecessary(1, mView, new Animator[]{mAnimator}); + } + } + ); + + verify(mAnimator, timeout(500)).start(); + reset(mAnimator); + Thread.sleep(100); + verify(mAnimator, never()).start(); + verify(mAnimator, timeout(500)).start(); + } + + public void testDisabledAnimations() throws InterruptedException { + mViewAnimator.disableAnimations(); + getInstrumentation().runOnMainSync( + new Runnable() { + @Override + public void run() { + mViewAnimator.animateViewIfNecessary(0, mView, new Animator[]{mAnimator}); + mViewAnimator.animateViewIfNecessary(1, mView, new Animator[]{mAnimator}); + } + } + ); + + Thread.sleep(10000); + + verify(mAnimator, never()).start(); + } + + public void testSetAnimationDuration() { + mViewAnimator.setAnimationDurationMillis(500); + getInstrumentation().runOnMainSync( + new Runnable() { + @Override + public void run() { + mViewAnimator.animateViewIfNecessary(0, mView, new Animator[]{mAnimator}); + } + } + ); + + verify(mAnimator, timeout(1000)).setDuration(500); + + } + +} \ No newline at end of file diff --git a/lib-core/src/main/java/com/nhaarman/listviewanimations/appearance/ViewAnimator.java b/lib-core/src/main/java/com/nhaarman/listviewanimations/appearance/ViewAnimator.java index 46ebac75..6bc9af48 100644 --- a/lib-core/src/main/java/com/nhaarman/listviewanimations/appearance/ViewAnimator.java +++ b/lib-core/src/main/java/com/nhaarman/listviewanimations/appearance/ViewAnimator.java @@ -35,8 +35,6 @@ /** * A class which decides whether given Views should be animated based on their position: each View should only be animated once. * It also calculates proper animation delays for the views. - * - * @param the implementation of the ListView being used. */ public class ViewAnimator {