• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package android.animation.cts;
17 
18 import android.animation.Animator;
19 import android.animation.ObjectAnimator;
20 import android.animation.ValueAnimator;
21 import android.test.ActivityInstrumentationTestCase2;
22 import android.test.UiThreadTest;
23 import android.view.animation.AccelerateInterpolator;
24 
25 import java.util.List;
26 
27 public class AnimatorTest extends ActivityInstrumentationTestCase2<AnimationActivity> {
28     private AnimationActivity mActivity;
29     private Animator mAnimator;
30     private long mDuration = 1000;
AnimatorTest()31     public AnimatorTest() {
32         super(AnimationActivity.class);
33     }
34 
35     @Override
setUp()36     protected void setUp() throws Exception {
37         super.setUp();
38         setActivityInitialTouchMode(false);
39         mActivity = getActivity();
40         mAnimator = mActivity.createAnimatorWithDuration(mDuration);
41     }
42 
testConstructor()43     public void testConstructor() {
44         mAnimator = new ValueAnimator();
45         assertNotNull(mAnimator);
46     }
47 
testClone()48     public void testClone() {
49         Animator animatorClone = mAnimator.clone();
50         assertEquals(mAnimator.getDuration(), animatorClone.getDuration());
51     }
52 
testStartDelay()53     public void testStartDelay() {
54         long startDelay = 1000;
55         mAnimator.setStartDelay(startDelay);
56         assertEquals(startDelay, mAnimator.getStartDelay());
57     }
58 
59     @UiThreadTest
testStart()60     public void testStart() throws Exception {
61         mAnimator.start();
62         assertTrue(mAnimator.isRunning());
63         assertTrue(mAnimator.isStarted());
64     }
65 
testGetDuration()66     public void testGetDuration() throws Throwable {
67         final long duration = 2000;
68         Animator animatorLocal = mActivity.createAnimatorWithDuration(duration);
69         startAnimation(animatorLocal);
70         assertEquals(duration, animatorLocal.getDuration());
71     }
72 
testIsRunning()73     public void testIsRunning() throws Throwable {
74         assertFalse(mAnimator.isRunning());
75         startAnimation(mAnimator);
76         assertTrue(mAnimator.isRunning());
77     }
78 
testIsStarted()79     public void testIsStarted() throws Throwable {
80         assertFalse(mAnimator.isRunning());
81         assertFalse(mAnimator.isStarted());
82         long startDelay = 10000;
83         mAnimator.setStartDelay(startDelay);
84         startAnimation(mAnimator);
85         assertFalse(mAnimator.isRunning());
86         assertTrue(mAnimator.isStarted());
87     }
88 
testSetInterpolator()89     public void testSetInterpolator() throws Throwable {
90         AccelerateInterpolator interpolator = new AccelerateInterpolator();
91         ValueAnimator mValueAnimator = mActivity.createAnimatorWithInterpolator(interpolator);
92         startAnimation(mValueAnimator);
93         assertTrue(interpolator.equals(mValueAnimator.getInterpolator()));
94     }
95 
testCancel()96     public void testCancel() throws Throwable {
97         startAnimation(mAnimator);
98         Thread.sleep(100);
99         runTestOnUiThread(new Runnable() {
100             public void run() {
101                 mAnimator.cancel();
102             }
103         });
104         assertFalse(mAnimator.isRunning());
105     }
106 
testEnd()107     public void testEnd() throws Throwable {
108         Object object = mActivity.view.newBall;
109         String property = "y";
110         float startY = mActivity.mStartY;
111         float endY = mActivity.mStartY + mActivity.mDeltaY;
112         Animator animator = ObjectAnimator.ofFloat(object, property, startY, endY);
113         animator.setDuration(mDuration);
114         ((ObjectAnimator)animator).setRepeatCount(ValueAnimator.INFINITE);
115         animator.setInterpolator(new AccelerateInterpolator());
116         ((ObjectAnimator)animator).setRepeatMode(ValueAnimator.REVERSE);
117         startAnimation(animator);
118         Thread.sleep(100);
119         endAnimation(animator);
120         float y = mActivity.view.newBall.getY();
121         assertEquals(y, endY);
122     }
123 
testSetListener()124     public void testSetListener() throws Throwable {
125         List<Animator.AnimatorListener> listListeners = mAnimator.getListeners();
126         assertNull(listListeners);
127         MyListener listener = new MyListener();
128         assertFalse(listener.mStart);
129         assertFalse(listener.mEnd);
130         assertEquals(listener.mRepeat, 0);
131         mAnimator.addListener(listener);
132         mAnimator.setDuration(100l);
133         startAnimation(mAnimator);
134         Thread.sleep(200);
135 
136         assertTrue(listener.mStart);
137         assertFalse(listener.mEnd);
138         assertTrue(listener.mRepeat >= 0);
139 
140         mActivity.runOnUiThread(new Runnable() {
141             public void run() {
142                 mAnimator.cancel();
143             }
144         });
145         getInstrumentation().waitForIdleSync();
146         assertTrue(listener.mCancel);
147 
148         mActivity.runOnUiThread(new Runnable() {
149             public void run() {
150                 mAnimator.end();
151             }
152         });
153         getInstrumentation().waitForIdleSync();
154         assertTrue(listener.mEnd);
155     }
156 
testRemoveListener()157     public void testRemoveListener() throws Throwable {
158         List<Animator.AnimatorListener> listListenersOne = mAnimator.getListeners();
159         assertNull(listListenersOne);
160         MyListener listener = new MyListener();
161         mAnimator.addListener(listener);
162 
163         List<Animator.AnimatorListener> listListenersTwo = mAnimator.getListeners();
164         assertEquals(listListenersTwo.size(), 1);
165         mAnimator.removeListener(listener);
166 
167         List<Animator.AnimatorListener> listListenersThree = mAnimator.getListeners();
168         assertNull(listListenersThree);
169     }
170 
testRemoveAllListenerers()171     public void testRemoveAllListenerers() throws Throwable {
172         MyListener listener1 = new MyListener();
173         MyListener listener2 = new MyListener();
174         mAnimator.addListener(listener1);
175         mAnimator.addListener(listener2);
176 
177         List<Animator.AnimatorListener> listListenersOne = mAnimator.getListeners();
178         assertEquals(listListenersOne.size(), 2);
179         mAnimator.removeAllListeners();
180 
181         List<Animator.AnimatorListener> listListenersTwo = mAnimator.getListeners();
182         assertNull(listListenersTwo);
183     }
184 
185     class MyListener implements Animator.AnimatorListener{
186         boolean mStart = false;
187         boolean mEnd = false;
188         boolean mCancel = false;
189         int mRepeat = 0;
190 
onAnimationCancel(Animator animation)191         public void onAnimationCancel(Animator animation) {
192             mCancel = true;
193         }
194 
onAnimationEnd(Animator animation)195         public void onAnimationEnd(Animator animation) {
196             mEnd = true;
197         }
198 
onAnimationRepeat(Animator animation)199         public void onAnimationRepeat(Animator animation) {
200             mRepeat++;
201         }
202 
onAnimationStart(Animator animation)203         public void onAnimationStart(Animator animation) {
204             mStart = true;
205         }
206     }
startAnimation(final Animator animator)207     private void startAnimation(final Animator animator) throws Throwable {
208         this.runTestOnUiThread(new Runnable() {
209             public void run() {
210                 mActivity.startAnimation(animator);
211             }
212         });
213     }
214 
endAnimation(final Animator animator)215     private void endAnimation(final Animator animator) throws Throwable {
216         Thread animationRunnable = new Thread() {
217             public void run() {
218                 animator.end();
219             }
220         };
221         this.runTestOnUiThread(animationRunnable);
222     }
223 }
224 
225