PageRenderTime 51ms CodeModel.GetById 20ms RepoModel.GetById 2ms app.codeStats 0ms

/tests/tests/animation/src/android/animation/cts/ValueAnimatorTest.java

https://bitbucket.org/cyanogenmod/android_cts
Java | 277 lines | 233 code | 29 blank | 15 comment | 8 complexity | 6fb73455b8dbee9ccecf50195ca89765 MD5 | raw file
  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. import android.animation.ObjectAnimator;
  18. import android.animation.ValueAnimator;
  19. import android.test.ActivityInstrumentationTestCase2;
  20. import android.view.animation.AccelerateInterpolator;
  21. public class ValueAnimatorTest extends
  22. ActivityInstrumentationTestCase2<AnimationActivity> {
  23. private AnimationActivity mActivity;
  24. private ValueAnimator mValueAnimator;
  25. private long mDuration = 2000;
  26. public ValueAnimatorTest() {
  27. super(AnimationActivity.class);
  28. }
  29. @Override
  30. protected void setUp() throws Exception {
  31. super.setUp();
  32. setActivityInitialTouchMode(false);
  33. mActivity = getActivity();
  34. mValueAnimator = mActivity.createAnimatorWithDuration(mDuration);
  35. }
  36. public void testDuration() throws Throwable {
  37. final long duration = 2000;
  38. ValueAnimator valueAnimatorLocal = mActivity.createAnimatorWithDuration(duration);
  39. startAnimation(valueAnimatorLocal);
  40. assertEquals(duration, valueAnimatorLocal.getDuration());
  41. }
  42. public void testIsRunning() throws Throwable {
  43. assertFalse(mValueAnimator.isRunning());
  44. startAnimation(mValueAnimator);
  45. ValueAnimator valueAnimatorReturned = mActivity.view.bounceYAnimator;
  46. assertTrue(valueAnimatorReturned.isRunning());
  47. }
  48. public void testIsStarted() throws Throwable {
  49. assertFalse(mValueAnimator.isRunning());
  50. assertFalse(mValueAnimator.isStarted());
  51. long startDelay = 10000;
  52. mValueAnimator.setStartDelay(startDelay);
  53. startAnimation(mValueAnimator);
  54. assertFalse(mValueAnimator.isRunning());
  55. assertTrue(mValueAnimator.isStarted());
  56. }
  57. public void testRepeatMode() throws Throwable {
  58. ValueAnimator mValueAnimator = mActivity.createAnimatorWithRepeatMode(
  59. ValueAnimator.RESTART);
  60. startAnimation(mValueAnimator);
  61. assertEquals(ValueAnimator.RESTART, mValueAnimator.getRepeatMode());
  62. }
  63. public void testRepeatCount() throws Throwable {
  64. int repeatCount = 2;
  65. ValueAnimator mValueAnimator = mActivity.createAnimatorWithRepeatCount(repeatCount);
  66. startAnimation(mValueAnimator);
  67. assertEquals(repeatCount, mValueAnimator.getRepeatCount());
  68. }
  69. public void testStartDelay() {
  70. long startDelay = 1000;
  71. mValueAnimator.setStartDelay(startDelay);
  72. assertEquals(startDelay, mValueAnimator.getStartDelay());
  73. }
  74. public void testCurrentPlayTime() throws Throwable {
  75. startAnimation(mValueAnimator);
  76. Thread.sleep(100);
  77. long currentPlayTime = mValueAnimator.getCurrentPlayTime();
  78. assertTrue(currentPlayTime > 0);
  79. }
  80. public void testGetFrameDelay() throws Throwable {
  81. long frameDelay = 10;
  82. mValueAnimator.setFrameDelay(frameDelay);
  83. startAnimation(mValueAnimator);
  84. Thread.sleep(100);
  85. long actualFrameDelay = mValueAnimator.getFrameDelay();
  86. assertEquals(frameDelay, actualFrameDelay);
  87. }
  88. public void testSetInterpolator() throws Throwable {
  89. AccelerateInterpolator interpolator = new AccelerateInterpolator();
  90. ValueAnimator mValueAnimator = mActivity.createAnimatorWithInterpolator(interpolator);
  91. startAnimation(mValueAnimator);
  92. assertTrue(interpolator.equals(mValueAnimator.getInterpolator()));
  93. }
  94. public void testCancel() throws Throwable {
  95. startAnimation(mValueAnimator);
  96. Thread.sleep(100);
  97. cancelAnimation(mValueAnimator);
  98. assertFalse(mValueAnimator.isRunning());
  99. }
  100. public void testEnd() throws Throwable {
  101. Object object = mActivity.view.newBall;
  102. String property = "y";
  103. float startY = mActivity.mStartY;
  104. float endY = mActivity.mStartY + mActivity.mDeltaY;
  105. ObjectAnimator objAnimator = ObjectAnimator.ofFloat(object, property, startY, endY);
  106. objAnimator.setDuration(mDuration);
  107. objAnimator.setRepeatCount(ValueAnimator.INFINITE);
  108. objAnimator.setInterpolator(new AccelerateInterpolator());
  109. objAnimator.setRepeatMode(ValueAnimator.REVERSE);
  110. startAnimation(objAnimator);
  111. Thread.sleep(100);
  112. endAnimation(objAnimator);
  113. float y = mActivity.view.newBall.getY();
  114. assertEquals(y, endY);
  115. }
  116. public void testGetAnimatedFraction() throws Throwable {
  117. ValueAnimator objAnimator = getAnimator();
  118. startAnimation(objAnimator);
  119. assertNotNull(objAnimator);
  120. float[] fractions = getValue(objAnimator, 10, "getAnimatedFraction()", 200l, null);
  121. for(int j = 0; j < 9; j++){
  122. assertTrue(fractions[j] >= 0.0);
  123. assertTrue(fractions[j] <= 1.0);
  124. assertTrue(errorMessage(fractions), fractions[j + 1] >= fractions[j]);
  125. }
  126. }
  127. public void testGetAnimatedValue() throws Throwable {
  128. ValueAnimator objAnimator = getAnimator();
  129. startAnimation(objAnimator);
  130. assertNotNull(objAnimator);
  131. float[] animatedValues = getValue(objAnimator, 10, "getAnimatedValue()", 200l, null);
  132. for(int j = 0; j < 9; j++){
  133. assertTrue(errorMessage(animatedValues), animatedValues[j + 1] >= animatedValues[j]);
  134. }
  135. }
  136. public void testGetAnimatedValue_PropertyName() throws Throwable {
  137. String property = "y";
  138. ValueAnimator objAnimator = getAnimator();
  139. startAnimation(objAnimator);
  140. assertNotNull(objAnimator);
  141. float[] animatedValues = getValue(objAnimator, 10, "getAnimatedValue(property)", 200l,
  142. property);
  143. for(int j = 0; j < 9; j++){
  144. assertTrue(errorMessage(animatedValues), animatedValues[j + 1] >= animatedValues[j]);
  145. }
  146. }
  147. public void testOfFloat() throws Throwable {
  148. float start = 0.0f;
  149. float end = 1.0f;
  150. float[] values = {start, end};
  151. final ValueAnimator valueAnimatorLocal = ValueAnimator.ofFloat(values);
  152. valueAnimatorLocal.setDuration(mDuration);
  153. valueAnimatorLocal.setRepeatCount(ValueAnimator.INFINITE);
  154. valueAnimatorLocal.setInterpolator(new AccelerateInterpolator());
  155. valueAnimatorLocal.setRepeatMode(ValueAnimator.RESTART);
  156. this.runTestOnUiThread(new Runnable(){
  157. public void run() {
  158. valueAnimatorLocal.start();
  159. }
  160. });
  161. Thread.sleep(100);
  162. boolean isRunning = valueAnimatorLocal.isRunning();
  163. assertTrue(isRunning);
  164. Float animatedValue = (Float) valueAnimatorLocal.getAnimatedValue();
  165. assertTrue(animatedValue >= start);
  166. assertTrue(animatedValue <= end);
  167. }
  168. public void testOfInt() throws Throwable {
  169. int start = 0;
  170. int end = 10;
  171. int[] values = {start, end};
  172. final ValueAnimator valueAnimatorLocal = ValueAnimator.ofInt(values);
  173. valueAnimatorLocal.setDuration(mDuration);
  174. valueAnimatorLocal.setRepeatCount(ValueAnimator.INFINITE);
  175. valueAnimatorLocal.setInterpolator(new AccelerateInterpolator());
  176. valueAnimatorLocal.setRepeatMode(ValueAnimator.RESTART);
  177. this.runTestOnUiThread(new Runnable(){
  178. public void run() {
  179. valueAnimatorLocal.start();
  180. }
  181. });
  182. Thread.sleep(100);
  183. boolean isRunning = valueAnimatorLocal.isRunning();
  184. assertTrue(isRunning);
  185. Integer animatedValue = (Integer) valueAnimatorLocal.getAnimatedValue();
  186. assertTrue(animatedValue >= start);
  187. assertTrue(animatedValue <= end);
  188. }
  189. private ValueAnimator getAnimator() {
  190. Object object = mActivity.view.newBall;
  191. String property = "y";
  192. float startY = mActivity.mStartY;
  193. float endY = mActivity.mStartY + mActivity.mDeltaY;
  194. ValueAnimator objAnimator = ObjectAnimator.ofFloat(object, property, startY, endY);
  195. objAnimator.setDuration(mDuration);
  196. objAnimator.setRepeatCount(ValueAnimator.INFINITE);
  197. objAnimator.setInterpolator(new AccelerateInterpolator());
  198. objAnimator.setRepeatMode(ValueAnimator.REVERSE);
  199. return objAnimator;
  200. }
  201. private float[] getValue(ValueAnimator animator, int n, String methodName,
  202. long sleepTime, String property) throws InterruptedException {
  203. float[] values = new float[n];
  204. for(int i = 0; i < n; i++){
  205. Thread.sleep(sleepTime);
  206. float value = 0.0f;
  207. if(methodName.equals("getAnimatedFraction()")) {
  208. value = animator.getAnimatedFraction();
  209. }else if(methodName.equals("getAnimatedValue()")) {
  210. value = ((Float)animator.getAnimatedValue()).floatValue();
  211. }else if(methodName.equals("getAnimatedValue(property)")) {
  212. value = ((Float)animator.getAnimatedValue(property)).floatValue();
  213. }
  214. values[i] = value;
  215. }
  216. return values;
  217. }
  218. private void startAnimation(final ValueAnimator mValueAnimator) throws Throwable {
  219. this.runTestOnUiThread(new Runnable(){
  220. public void run() {
  221. mActivity.startAnimation(mValueAnimator);
  222. }
  223. });
  224. }
  225. private void endAnimation(final ValueAnimator mValueAnimator) throws Throwable {
  226. Thread animationRunnable = new Thread() {
  227. public void run() {
  228. mValueAnimator.end();
  229. }
  230. };
  231. this.runTestOnUiThread(animationRunnable);
  232. }
  233. private void cancelAnimation(final ValueAnimator mValueAnimator) throws Throwable {
  234. Thread animationRunnable = new Thread() {
  235. public void run() {
  236. mValueAnimator.cancel();
  237. }
  238. };
  239. this.runTestOnUiThread(animationRunnable);
  240. }
  241. private String errorMessage(float[] values) {
  242. StringBuilder message = new StringBuilder();
  243. for (int i = 0; i < values.length; i++) {
  244. message.append(values[i]).append(" ");
  245. }
  246. return message.toString();
  247. }
  248. }