Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: cc/animation/animation_unittest.cc

Issue 423373003: CC: Support fractional iteration count on compositor animations (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Minor fixes Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/animation/animation.cc ('k') | content/renderer/compositor_bindings/web_animation_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/animation/animation.h" 5 #include "cc/animation/animation.h"
6 6
7 #include "cc/test/animation_test_common.h" 7 #include "cc/test/animation_test_common.h"
8 #include "testing/gmock/include/gmock/gmock.h" 8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 namespace cc { 11 namespace cc {
12 namespace { 12 namespace {
13 13
14 using base::TimeDelta; 14 using base::TimeDelta;
15 15
16 static base::TimeTicks TicksFromSecondsF(double seconds) { 16 static base::TimeTicks TicksFromSecondsF(double seconds) {
17 return base::TimeTicks::FromInternalValue(seconds * 17 return base::TimeTicks::FromInternalValue(seconds *
18 base::Time::kMicrosecondsPerSecond); 18 base::Time::kMicrosecondsPerSecond);
19 } 19 }
20 20
21 scoped_ptr<Animation> CreateAnimation(int iterations, double duration) { 21 scoped_ptr<Animation> CreateAnimation(double iterations, double duration) {
22 scoped_ptr<Animation> to_return(Animation::Create( 22 scoped_ptr<Animation> to_return(Animation::Create(
23 make_scoped_ptr( 23 make_scoped_ptr(
24 new FakeFloatAnimationCurve(duration)).PassAs<AnimationCurve>(), 24 new FakeFloatAnimationCurve(duration)).PassAs<AnimationCurve>(),
25 0, 25 0,
26 1, 26 1,
27 Animation::Opacity)); 27 Animation::Opacity));
28 to_return->set_iterations(iterations); 28 to_return->set_iterations(iterations);
29 return to_return.Pass(); 29 return to_return.Pass();
30 } 30 }
31 31
32 scoped_ptr<Animation> CreateAnimation(int iterations) { 32 scoped_ptr<Animation> CreateAnimation(double iterations) {
33 return CreateAnimation(iterations, 1); 33 return CreateAnimation(iterations, 1);
34 } 34 }
35 35
36 TEST(AnimationTest, TrimTimeZeroIterations) { 36 TEST(AnimationTest, TrimTimeZeroIterations) {
37 scoped_ptr<Animation> anim(CreateAnimation(0)); 37 scoped_ptr<Animation> anim(CreateAnimation(0));
38 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0))); 38 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)));
39 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0))); 39 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)));
40 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0))); 40 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)));
41 } 41 }
42 42
43 TEST(AnimationTest, TrimTimeOneIteration) { 43 TEST(AnimationTest, TrimTimeOneIteration) {
44 scoped_ptr<Animation> anim(CreateAnimation(1)); 44 scoped_ptr<Animation> anim(CreateAnimation(1));
45 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0))); 45 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)));
46 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0))); 46 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)));
47 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0))); 47 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)));
48 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0))); 48 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)));
49 } 49 }
50 50
51 TEST(AnimationTest, TrimTimeOneHalfIteration) {
52 scoped_ptr<Animation> anim(CreateAnimation(1.5));
53 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)));
enne (OOO) 2014/08/11 20:01:22 style nit: 0.0, here and elsewhere
54 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)));
55 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)));
56 EXPECT_EQ(0.9, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.9)));
57 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)));
58 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)));
59 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)));
60 }
61
51 TEST(AnimationTest, TrimTimeInfiniteIterations) { 62 TEST(AnimationTest, TrimTimeInfiniteIterations) {
52 scoped_ptr<Animation> anim(CreateAnimation(-1)); 63 scoped_ptr<Animation> anim(CreateAnimation(-1));
53 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0))); 64 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)));
54 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5))); 65 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)));
55 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0))); 66 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)));
56 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5))); 67 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)));
57 } 68 }
58 69
59 TEST(AnimationTest, TrimTimeReverse) { 70 TEST(AnimationTest, TrimTimeReverse) {
60 scoped_ptr<Animation> anim(CreateAnimation(-1)); 71 scoped_ptr<Animation> anim(CreateAnimation(-1));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25))); 107 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)));
97 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5))); 108 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)));
98 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75))); 109 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)));
99 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0))); 110 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)));
100 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25))); 111 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)));
101 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75))); 112 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)));
102 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0))); 113 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)));
103 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25))); 114 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)));
104 } 115 }
105 116
117 TEST(AnimationTest, TrimTimeAlternateTwoHalfIterations) {
118 scoped_ptr<Animation> anim(CreateAnimation(2.5));
119 anim->set_direction(Animation::Alternate);
120 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)));
121 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)));
122 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)));
123 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)));
124 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)));
125 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)));
126 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)));
127 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)));
128 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)));
129 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.50)));
130 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.75)));
131 }
132
106 TEST(AnimationTest, TrimTimeAlternateReverseInfiniteIterations) { 133 TEST(AnimationTest, TrimTimeAlternateReverseInfiniteIterations) {
107 scoped_ptr<Animation> anim(CreateAnimation(-1)); 134 scoped_ptr<Animation> anim(CreateAnimation(-1));
108 anim->set_direction(Animation::AlternateReverse); 135 anim->set_direction(Animation::AlternateReverse);
109 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0))); 136 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)));
110 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25))); 137 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)));
111 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5))); 138 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)));
112 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75))); 139 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)));
113 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0))); 140 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)));
114 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25))); 141 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)));
115 } 142 }
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 EXPECT_EQ(Animation::Paused, anim->run_state()); 424 EXPECT_EQ(Animation::Paused, anim->run_state());
398 anim->SetRunState(Animation::Running, TicksFromSecondsF(0.0)); 425 anim->SetRunState(Animation::Running, TicksFromSecondsF(0.0));
399 EXPECT_EQ(Animation::Paused, anim->run_state()); 426 EXPECT_EQ(Animation::Paused, anim->run_state());
400 anim->Resume(TicksFromSecondsF(0)); 427 anim->Resume(TicksFromSecondsF(0));
401 anim->SetRunState(Animation::Running, TicksFromSecondsF(0.0)); 428 anim->SetRunState(Animation::Running, TicksFromSecondsF(0.0));
402 EXPECT_EQ(Animation::Running, anim->run_state()); 429 EXPECT_EQ(Animation::Running, anim->run_state());
403 } 430 }
404 431
405 } // namespace 432 } // namespace
406 } // namespace cc 433 } // namespace cc
OLDNEW
« no previous file with comments | « cc/animation/animation.cc ('k') | content/renderer/compositor_bindings/web_animation_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698