WebKit Roll 139512:139548
[chromium-blink-merge.git] / cc / animation_unittest.cc
blobd767f70b6a330f33443d70c58775aed33ef3ba88
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
3 // found in the LICENSE file.
5 #include "cc/animation.h"
7 #include "cc/test/animation_test_common.h"
8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h"
11 namespace cc {
12 namespace {
14 scoped_ptr<Animation> createAnimation(int iterations, double duration)
16 scoped_ptr<Animation> toReturn(Animation::create(make_scoped_ptr(new FakeFloatAnimationCurve(duration)).PassAs<AnimationCurve>(), 0, 1, Animation::Opacity));
17 toReturn->setIterations(iterations);
18 return toReturn.Pass();
21 scoped_ptr<Animation> createAnimation(int iterations)
23 return createAnimation(iterations, 1);
26 TEST(AnimationTest, TrimTimeZeroIterations)
28 scoped_ptr<Animation> anim(createAnimation(0));
29 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(-1));
30 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
31 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(1));
34 TEST(AnimationTest, TrimTimeOneIteration)
36 scoped_ptr<Animation> anim(createAnimation(1));
37 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(-1));
38 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
39 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1));
40 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(2));
43 TEST(AnimationTest, TrimTimeInfiniteIterations)
45 scoped_ptr<Animation> anim(createAnimation(-1));
46 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
47 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5));
48 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(1));
49 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1.5));
52 TEST(AnimationTest, TrimTimeAlternating)
54 scoped_ptr<Animation> anim(createAnimation(-1));
55 anim->setAlternatesDirection(true);
56 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
57 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5));
58 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1));
59 EXPECT_EQ(0.75, anim->trimTimeToCurrentIteration(1.25));
62 TEST(AnimationTest, TrimTimeStartTime)
64 scoped_ptr<Animation> anim(createAnimation(1));
65 anim->setStartTime(4);
66 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
67 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(4));
68 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(4.5));
69 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(5));
70 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(6));
73 TEST(AnimationTest, TrimTimeTimeOffset)
75 scoped_ptr<Animation> anim(createAnimation(1));
76 anim->setTimeOffset(4);
77 anim->setStartTime(4);
78 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
79 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5));
80 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1));
81 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1));
84 TEST(AnimationTest, TrimTimePauseResume)
86 scoped_ptr<Animation> anim(createAnimation(1));
87 anim->setRunState(Animation::Running, 0);
88 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
89 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5));
90 anim->setRunState(Animation::Paused, 0.5);
91 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1024));
92 anim->setRunState(Animation::Running, 1024);
93 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1024));
94 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1024.5));
97 TEST(AnimationTest, TrimTimeSuspendResume)
99 scoped_ptr<Animation> anim(createAnimation(1));
100 anim->setRunState(Animation::Running, 0);
101 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
102 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(0.5));
103 anim->suspend(0.5);
104 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1024));
105 anim->resume(1024);
106 EXPECT_EQ(0.5, anim->trimTimeToCurrentIteration(1024));
107 EXPECT_EQ(1, anim->trimTimeToCurrentIteration(1024.5));
110 TEST(AnimationTest, TrimTimeZeroDuration)
112 scoped_ptr<Animation> anim(createAnimation(0, 0));
113 anim->setRunState(Animation::Running, 0);
114 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(-1));
115 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(0));
116 EXPECT_EQ(0, anim->trimTimeToCurrentIteration(1));
119 TEST(AnimationTest, IsFinishedAtZeroIterations)
121 scoped_ptr<Animation> anim(createAnimation(0));
122 anim->setRunState(Animation::Running, 0);
123 EXPECT_FALSE(anim->isFinishedAt(-1));
124 EXPECT_TRUE(anim->isFinishedAt(0));
125 EXPECT_TRUE(anim->isFinishedAt(1));
128 TEST(AnimationTest, IsFinishedAtOneIteration)
130 scoped_ptr<Animation> anim(createAnimation(1));
131 anim->setRunState(Animation::Running, 0);
132 EXPECT_FALSE(anim->isFinishedAt(-1));
133 EXPECT_FALSE(anim->isFinishedAt(0));
134 EXPECT_TRUE(anim->isFinishedAt(1));
135 EXPECT_TRUE(anim->isFinishedAt(2));
138 TEST(AnimationTest, IsFinishedAtInfiniteIterations)
140 scoped_ptr<Animation> anim(createAnimation(-1));
141 anim->setRunState(Animation::Running, 0);
142 EXPECT_FALSE(anim->isFinishedAt(0));
143 EXPECT_FALSE(anim->isFinishedAt(0.5));
144 EXPECT_FALSE(anim->isFinishedAt(1));
145 EXPECT_FALSE(anim->isFinishedAt(1.5));
148 TEST(AnimationTest, IsFinishedAtNotRunning)
150 scoped_ptr<Animation> anim(createAnimation(0));
151 anim->setRunState(Animation::Running, 0);
152 EXPECT_TRUE(anim->isFinishedAt(0));
153 anim->setRunState(Animation::Paused, 0);
154 EXPECT_FALSE(anim->isFinishedAt(0));
155 anim->setRunState(Animation::WaitingForNextTick, 0);
156 EXPECT_FALSE(anim->isFinishedAt(0));
157 anim->setRunState(Animation::WaitingForTargetAvailability, 0);
158 EXPECT_FALSE(anim->isFinishedAt(0));
159 anim->setRunState(Animation::WaitingForStartTime, 0);
160 EXPECT_FALSE(anim->isFinishedAt(0));
161 anim->setRunState(Animation::Finished, 0);
162 EXPECT_TRUE(anim->isFinishedAt(0));
163 anim->setRunState(Animation::Aborted, 0);
164 EXPECT_TRUE(anim->isFinishedAt(0));
167 TEST(AnimationTest, IsFinished)
169 scoped_ptr<Animation> anim(createAnimation(1));
170 anim->setRunState(Animation::Running, 0);
171 EXPECT_FALSE(anim->isFinished());
172 anim->setRunState(Animation::Paused, 0);
173 EXPECT_FALSE(anim->isFinished());
174 anim->setRunState(Animation::WaitingForNextTick, 0);
175 EXPECT_FALSE(anim->isFinished());
176 anim->setRunState(Animation::WaitingForTargetAvailability, 0);
177 EXPECT_FALSE(anim->isFinished());
178 anim->setRunState(Animation::WaitingForStartTime, 0);
179 EXPECT_FALSE(anim->isFinished());
180 anim->setRunState(Animation::Finished, 0);
181 EXPECT_TRUE(anim->isFinished());
182 anim->setRunState(Animation::Aborted, 0);
183 EXPECT_TRUE(anim->isFinished());
186 TEST(AnimationTest, IsFinishedNeedsSynchronizedStartTime)
188 scoped_ptr<Animation> anim(createAnimation(1));
189 anim->setRunState(Animation::Running, 2);
190 EXPECT_FALSE(anim->isFinished());
191 anim->setRunState(Animation::Paused, 2);
192 EXPECT_FALSE(anim->isFinished());
193 anim->setRunState(Animation::WaitingForNextTick, 2);
194 EXPECT_FALSE(anim->isFinished());
195 anim->setRunState(Animation::WaitingForTargetAvailability, 2);
196 EXPECT_FALSE(anim->isFinished());
197 anim->setRunState(Animation::WaitingForStartTime, 2);
198 EXPECT_FALSE(anim->isFinished());
199 anim->setRunState(Animation::Finished, 0);
200 EXPECT_TRUE(anim->isFinished());
201 anim->setRunState(Animation::Aborted, 0);
202 EXPECT_TRUE(anim->isFinished());
205 TEST(AnimationTest, RunStateChangesIgnoredWhileSuspended)
207 scoped_ptr<Animation> anim(createAnimation(1));
208 anim->suspend(0);
209 EXPECT_EQ(Animation::Paused, anim->runState());
210 anim->setRunState(Animation::Running, 0);
211 EXPECT_EQ(Animation::Paused, anim->runState());
212 anim->resume(0);
213 anim->setRunState(Animation::Running, 0);
214 EXPECT_EQ(Animation::Running, anim->runState());
217 } // namespace
218 } // namespace cc