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

Side by Side Diff: cc/animation_unittest.cc

Issue 12517003: cc: Chromify the Animation and LayerAnimationController classes (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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_registrar.cc ('k') | cc/keyframed_animation_curve.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.h" 5 #include "cc/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 scoped_ptr<Animation> createAnimation(int iterations, double duration) 14 scoped_ptr<Animation> CreateAnimation(int iterations, double duration) {
15 { 15 scoped_ptr<Animation> to_return(Animation::Create(
16 scoped_ptr<Animation> toReturn(Animation::create(make_scoped_ptr(new FakeFlo atAnimationCurve(duration)).PassAs<AnimationCurve>(), 0, 1, Animation::Opacity)) ; 16 make_scoped_ptr(
17 toReturn->setIterations(iterations); 17 new FakeFloatAnimationCurve(duration)).PassAs<AnimationCurve>(),
18 return toReturn.Pass(); 18 0,
19 1,
20 Animation::Opacity));
21 to_return->set_iterations(iterations);
22 return to_return.Pass();
19 } 23 }
20 24
21 scoped_ptr<Animation> createAnimation(int iterations) 25 scoped_ptr<Animation> CreateAnimation(int iterations) {
22 { 26 return CreateAnimation(iterations, 1);
23 return createAnimation(iterations, 1);
24 } 27 }
25 28
26 TEST(AnimationTest, TrimTimeZeroIterations) 29 TEST(AnimationTest, TrimTimeZeroIterations) {
27 { 30 scoped_ptr<Animation> anim(CreateAnimation(0));
28 scoped_ptr<Animation> anim(createAnimation(0)); 31 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(-1.0));
29 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(-1)); 32 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
30 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 33 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(1.0));
31 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(1));
32 } 34 }
33 35
34 TEST(AnimationTest, TrimTimeOneIteration) 36 TEST(AnimationTest, TrimTimeOneIteration) {
35 { 37 scoped_ptr<Animation> anim(CreateAnimation(1));
36 scoped_ptr<Animation> anim(createAnimation(1)); 38 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(-1.0));
37 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(-1)); 39 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
38 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 40 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1.0));
39 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1)); 41 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(2.0));
40 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(2));
41 } 42 }
42 43
43 TEST(AnimationTest, TrimTimeInfiniteIterations) 44 TEST(AnimationTest, TrimTimeInfiniteIterations) {
44 { 45 scoped_ptr<Animation> anim(CreateAnimation(-1));
45 scoped_ptr<Animation> anim(createAnimation(-1)); 46 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
46 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 47 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
47 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5)); 48 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(1.0));
48 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(1)); 49 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(1.5));
49 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1.5));
50 } 50 }
51 51
52 TEST(AnimationTest, TrimTimeAlternating) 52 TEST(AnimationTest, TrimTimeAlternating) {
53 { 53 scoped_ptr<Animation> anim(CreateAnimation(-1));
54 scoped_ptr<Animation> anim(createAnimation(-1)); 54 anim->set_alternates_direction(true);
55 anim->setAlternatesDirection(true); 55 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
56 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 56 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
57 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5)); 57 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1.0));
58 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1)); 58 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(1.25));
59 EXPECT_EQ(0.75, anim->trimTimeToCurrentIteration(1.25));
60 } 59 }
61 60
62 TEST(AnimationTest, TrimTimeStartTime) 61 TEST(AnimationTest, TrimTimeStartTime) {
63 { 62 scoped_ptr<Animation> anim(CreateAnimation(1));
64 scoped_ptr<Animation> anim(createAnimation(1)); 63 anim->set_start_time(4);
65 anim->setStartTime(4); 64 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
66 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 65 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(4.0));
67 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(4)); 66 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(4.5));
68 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(4.5)); 67 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(5.0));
69 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(5)); 68 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(6.0));
70 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(6));
71 } 69 }
72 70
73 TEST(AnimationTest, TrimTimeTimeOffset) 71 TEST(AnimationTest, TrimTimeTimeOffset) {
74 { 72 scoped_ptr<Animation> anim(CreateAnimation(1));
75 scoped_ptr<Animation> anim(createAnimation(1)); 73 anim->set_time_offset(4);
76 anim->setTimeOffset(4); 74 anim->set_start_time(4);
77 anim->setStartTime(4); 75 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
78 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 76 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
79 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5)); 77 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1.0));
80 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1)); 78 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1.0));
81 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1));
82 } 79 }
83 80
84 TEST(AnimationTest, TrimTimePauseResume) 81 TEST(AnimationTest, TrimTimePauseResume) {
85 { 82 scoped_ptr<Animation> anim(CreateAnimation(1));
86 scoped_ptr<Animation> anim(createAnimation(1)); 83 anim->SetRunState(Animation::Running, 0.0);
87 anim->setRunState(Animation::Running, 0); 84 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
88 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 85 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
89 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5)); 86 anim->SetRunState(Animation::Paused, 0.5);
90 anim->setRunState(Animation::Paused, 0.5); 87 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(1024.0));
91 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1024)); 88 anim->SetRunState(Animation::Running, 1024.0);
92 anim->setRunState(Animation::Running, 1024); 89 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(1024.0));
93 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1024)); 90 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1024.5));
94 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1024.5));
95 } 91 }
96 92
97 TEST(AnimationTest, TrimTimeSuspendResume) 93 TEST(AnimationTest, TrimTimeSuspendResume) {
98 { 94 scoped_ptr<Animation> anim(CreateAnimation(1));
99 scoped_ptr<Animation> anim(createAnimation(1)); 95 anim->SetRunState(Animation::Running, 0.0);
100 anim->setRunState(Animation::Running, 0); 96 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
101 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 97 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(0.5));
102 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5)); 98 anim->Suspend(0.5);
103 anim->suspend(0.5); 99 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(1024.0));
104 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1024)); 100 anim->Resume(1024);
105 anim->resume(1024); 101 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(1024.0));
106 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1024)); 102 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(1024.5));
107 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1024.5));
108 } 103 }
109 104
110 TEST(AnimationTest, TrimTimeZeroDuration) 105 TEST(AnimationTest, TrimTimeZeroDuration) {
111 { 106 scoped_ptr<Animation> anim(CreateAnimation(0, 0));
112 scoped_ptr<Animation> anim(createAnimation(0, 0)); 107 anim->SetRunState(Animation::Running, 0.0);
113 anim->setRunState(Animation::Running, 0); 108 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(-1.0));
114 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(-1)); 109 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(0.0));
115 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0)); 110 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(1.0));
116 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(1));
117 } 111 }
118 112
119 TEST(AnimationTest, IsFinishedAtZeroIterations) 113 TEST(AnimationTest, IsFinishedAtZeroIterations) {
120 { 114 scoped_ptr<Animation> anim(CreateAnimation(0));
121 scoped_ptr<Animation> anim(createAnimation(0)); 115 anim->SetRunState(Animation::Running, 0.0);
122 anim->setRunState(Animation::Running, 0); 116 EXPECT_FALSE(anim->IsFinishedAt(-1.0));
123 EXPECT_FALSE(anim->isFinishedAt(-1)); 117 EXPECT_TRUE(anim->IsFinishedAt(0.0));
124 EXPECT_TRUE(anim->isFinishedAt(0)); 118 EXPECT_TRUE(anim->IsFinishedAt(1.0));
125 EXPECT_TRUE(anim->isFinishedAt(1));
126 } 119 }
127 120
128 TEST(AnimationTest, IsFinishedAtOneIteration) 121 TEST(AnimationTest, IsFinishedAtOneIteration) {
129 { 122 scoped_ptr<Animation> anim(CreateAnimation(1));
130 scoped_ptr<Animation> anim(createAnimation(1)); 123 anim->SetRunState(Animation::Running, 0.0);
131 anim->setRunState(Animation::Running, 0); 124 EXPECT_FALSE(anim->IsFinishedAt(-1.0));
132 EXPECT_FALSE(anim->isFinishedAt(-1)); 125 EXPECT_FALSE(anim->IsFinishedAt(0.0));
133 EXPECT_FALSE(anim->isFinishedAt(0)); 126 EXPECT_TRUE(anim->IsFinishedAt(1.0));
134 EXPECT_TRUE(anim->isFinishedAt(1)); 127 EXPECT_TRUE(anim->IsFinishedAt(2.0));
135 EXPECT_TRUE(anim->isFinishedAt(2));
136 } 128 }
137 129
138 TEST(AnimationTest, IsFinishedAtInfiniteIterations) 130 TEST(AnimationTest, IsFinishedAtInfiniteIterations) {
139 { 131 scoped_ptr<Animation> anim(CreateAnimation(-1));
140 scoped_ptr<Animation> anim(createAnimation(-1)); 132 anim->SetRunState(Animation::Running, 0.0);
141 anim->setRunState(Animation::Running, 0); 133 EXPECT_FALSE(anim->IsFinishedAt(0.0));
142 EXPECT_FALSE(anim->isFinishedAt(0)); 134 EXPECT_FALSE(anim->IsFinishedAt(0.5));
143 EXPECT_FALSE(anim->isFinishedAt(0.5)); 135 EXPECT_FALSE(anim->IsFinishedAt(1.0));
144 EXPECT_FALSE(anim->isFinishedAt(1)); 136 EXPECT_FALSE(anim->IsFinishedAt(1.5));
145 EXPECT_FALSE(anim->isFinishedAt(1.5));
146 } 137 }
147 138
148 TEST(AnimationTest, IsFinishedAtNotRunning) 139 TEST(AnimationTest, IsFinishedAtNotRunning) {
149 { 140 scoped_ptr<Animation> anim(CreateAnimation(0));
150 scoped_ptr<Animation> anim(createAnimation(0)); 141 anim->SetRunState(Animation::Running, 0.0);
151 anim->setRunState(Animation::Running, 0); 142 EXPECT_TRUE(anim->IsFinishedAt(0.0));
152 EXPECT_TRUE(anim->isFinishedAt(0)); 143 anim->SetRunState(Animation::Paused, 0.0);
153 anim->setRunState(Animation::Paused, 0); 144 EXPECT_FALSE(anim->IsFinishedAt(0.0));
154 EXPECT_FALSE(anim->isFinishedAt(0)); 145 anim->SetRunState(Animation::WaitingForNextTick, 0.0);
155 anim->setRunState(Animation::WaitingForNextTick, 0); 146 EXPECT_FALSE(anim->IsFinishedAt(0.0));
156 EXPECT_FALSE(anim->isFinishedAt(0)); 147 anim->SetRunState(Animation::WaitingForTargetAvailability, 0.0);
157 anim->setRunState(Animation::WaitingForTargetAvailability, 0); 148 EXPECT_FALSE(anim->IsFinishedAt(0.0));
158 EXPECT_FALSE(anim->isFinishedAt(0)); 149 anim->SetRunState(Animation::WaitingForStartTime, 0.0);
159 anim->setRunState(Animation::WaitingForStartTime, 0); 150 EXPECT_FALSE(anim->IsFinishedAt(0.0));
160 EXPECT_FALSE(anim->isFinishedAt(0)); 151 anim->SetRunState(Animation::Finished, 0.0);
161 anim->setRunState(Animation::Finished, 0); 152 EXPECT_TRUE(anim->IsFinishedAt(0.0));
162 EXPECT_TRUE(anim->isFinishedAt(0)); 153 anim->SetRunState(Animation::Aborted, 0.0);
163 anim->setRunState(Animation::Aborted, 0); 154 EXPECT_TRUE(anim->IsFinishedAt(0.0));
164 EXPECT_TRUE(anim->isFinishedAt(0));
165 } 155 }
166 156
167 TEST(AnimationTest, IsFinished) 157 TEST(AnimationTest, IsFinished) {
168 { 158 scoped_ptr<Animation> anim(CreateAnimation(1));
169 scoped_ptr<Animation> anim(createAnimation(1)); 159 anim->SetRunState(Animation::Running, 0.0);
170 anim->setRunState(Animation::Running, 0); 160 EXPECT_FALSE(anim->is_finished());
171 EXPECT_FALSE(anim->isFinished()); 161 anim->SetRunState(Animation::Paused, 0.0);
172 anim->setRunState(Animation::Paused, 0); 162 EXPECT_FALSE(anim->is_finished());
173 EXPECT_FALSE(anim->isFinished()); 163 anim->SetRunState(Animation::WaitingForNextTick, 0.0);
174 anim->setRunState(Animation::WaitingForNextTick, 0); 164 EXPECT_FALSE(anim->is_finished());
175 EXPECT_FALSE(anim->isFinished()); 165 anim->SetRunState(Animation::WaitingForTargetAvailability, 0.0);
176 anim->setRunState(Animation::WaitingForTargetAvailability, 0); 166 EXPECT_FALSE(anim->is_finished());
177 EXPECT_FALSE(anim->isFinished()); 167 anim->SetRunState(Animation::WaitingForStartTime, 0.0);
178 anim->setRunState(Animation::WaitingForStartTime, 0); 168 EXPECT_FALSE(anim->is_finished());
179 EXPECT_FALSE(anim->isFinished()); 169 anim->SetRunState(Animation::Finished, 0.0);
180 anim->setRunState(Animation::Finished, 0); 170 EXPECT_TRUE(anim->is_finished());
181 EXPECT_TRUE(anim->isFinished()); 171 anim->SetRunState(Animation::Aborted, 0.0);
182 anim->setRunState(Animation::Aborted, 0); 172 EXPECT_TRUE(anim->is_finished());
183 EXPECT_TRUE(anim->isFinished());
184 } 173 }
185 174
186 TEST(AnimationTest, IsFinishedNeedsSynchronizedStartTime) 175 TEST(AnimationTest, IsFinishedNeedsSynchronizedStartTime) {
187 { 176 scoped_ptr<Animation> anim(CreateAnimation(1));
188 scoped_ptr<Animation> anim(createAnimation(1)); 177 anim->SetRunState(Animation::Running, 2.0);
189 anim->setRunState(Animation::Running, 2); 178 EXPECT_FALSE(anim->is_finished());
190 EXPECT_FALSE(anim->isFinished()); 179 anim->SetRunState(Animation::Paused, 2.0);
191 anim->setRunState(Animation::Paused, 2); 180 EXPECT_FALSE(anim->is_finished());
192 EXPECT_FALSE(anim->isFinished()); 181 anim->SetRunState(Animation::WaitingForNextTick, 2.0);
193 anim->setRunState(Animation::WaitingForNextTick, 2); 182 EXPECT_FALSE(anim->is_finished());
194 EXPECT_FALSE(anim->isFinished()); 183 anim->SetRunState(Animation::WaitingForTargetAvailability, 2.0);
195 anim->setRunState(Animation::WaitingForTargetAvailability, 2); 184 EXPECT_FALSE(anim->is_finished());
196 EXPECT_FALSE(anim->isFinished()); 185 anim->SetRunState(Animation::WaitingForStartTime, 2.0);
197 anim->setRunState(Animation::WaitingForStartTime, 2); 186 EXPECT_FALSE(anim->is_finished());
198 EXPECT_FALSE(anim->isFinished()); 187 anim->SetRunState(Animation::Finished, 0.0);
199 anim->setRunState(Animation::Finished, 0); 188 EXPECT_TRUE(anim->is_finished());
200 EXPECT_TRUE(anim->isFinished()); 189 anim->SetRunState(Animation::Aborted, 0.0);
201 anim->setRunState(Animation::Aborted, 0); 190 EXPECT_TRUE(anim->is_finished());
202 EXPECT_TRUE(anim->isFinished());
203 } 191 }
204 192
205 TEST(AnimationTest, RunStateChangesIgnoredWhileSuspended) 193 TEST(AnimationTest, RunStateChangesIgnoredWhileSuspended) {
206 { 194 scoped_ptr<Animation> anim(CreateAnimation(1));
207 scoped_ptr<Animation> anim(createAnimation(1)); 195 anim->Suspend(0);
208 anim->suspend(0); 196 EXPECT_EQ(Animation::Paused, anim->run_state());
209 EXPECT_EQ(Animation::Paused, anim->runState()); 197 anim->SetRunState(Animation::Running, 0.0);
210 anim->setRunState(Animation::Running, 0); 198 EXPECT_EQ(Animation::Paused, anim->run_state());
211 EXPECT_EQ(Animation::Paused, anim->runState()); 199 anim->Resume(0);
212 anim->resume(0); 200 anim->SetRunState(Animation::Running, 0.0);
213 anim->setRunState(Animation::Running, 0); 201 EXPECT_EQ(Animation::Running, anim->run_state());
214 EXPECT_EQ(Animation::Running, anim->runState());
215 } 202 }
216 203
217 } // namespace 204 } // namespace
218 } // namespace cc 205 } // namespace cc
OLDNEW
« no previous file with comments | « cc/animation_registrar.cc ('k') | cc/keyframed_animation_curve.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698