OLD | NEW |
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 "base/memory/ptr_util.h" |
7 #include "cc/test/animation_test_common.h" | 8 #include "cc/test/animation_test_common.h" |
8 #include "testing/gmock/include/gmock/gmock.h" | 9 #include "testing/gmock/include/gmock/gmock.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
10 | 11 |
11 namespace cc { | 12 namespace cc { |
12 namespace { | 13 namespace { |
13 | 14 |
14 using base::TimeDelta; | 15 using base::TimeDelta; |
15 | 16 |
16 static base::TimeTicks TicksFromSecondsF(double seconds) { | 17 static base::TimeTicks TicksFromSecondsF(double seconds) { |
17 return base::TimeTicks::FromInternalValue(seconds * | 18 return base::TimeTicks::FromInternalValue(seconds * |
18 base::Time::kMicrosecondsPerSecond); | 19 base::Time::kMicrosecondsPerSecond); |
19 } | 20 } |
20 | 21 |
21 scoped_ptr<Animation> CreateAnimation(double iterations, | 22 std::unique_ptr<Animation> CreateAnimation(double iterations, |
22 double duration, | 23 double duration, |
23 double playback_rate) { | 24 double playback_rate) { |
24 scoped_ptr<Animation> to_return( | 25 std::unique_ptr<Animation> to_return( |
25 Animation::Create(make_scoped_ptr(new FakeFloatAnimationCurve(duration)), | 26 Animation::Create(base::WrapUnique(new FakeFloatAnimationCurve(duration)), |
26 0, 1, TargetProperty::OPACITY)); | 27 0, 1, TargetProperty::OPACITY)); |
27 to_return->set_iterations(iterations); | 28 to_return->set_iterations(iterations); |
28 to_return->set_playback_rate(playback_rate); | 29 to_return->set_playback_rate(playback_rate); |
29 return to_return; | 30 return to_return; |
30 } | 31 } |
31 | 32 |
32 scoped_ptr<Animation> CreateAnimation(double iterations, double duration) { | 33 std::unique_ptr<Animation> CreateAnimation(double iterations, double duration) { |
33 return CreateAnimation(iterations, duration, 1); | 34 return CreateAnimation(iterations, duration, 1); |
34 } | 35 } |
35 | 36 |
36 scoped_ptr<Animation> CreateAnimation(double iterations) { | 37 std::unique_ptr<Animation> CreateAnimation(double iterations) { |
37 return CreateAnimation(iterations, 1, 1); | 38 return CreateAnimation(iterations, 1, 1); |
38 } | 39 } |
39 | 40 |
40 TEST(AnimationTest, TrimTimeZeroIterations) { | 41 TEST(AnimationTest, TrimTimeZeroIterations) { |
41 scoped_ptr<Animation> anim(CreateAnimation(0)); | 42 std::unique_ptr<Animation> anim(CreateAnimation(0)); |
42 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 43 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
43 .InSecondsF()); | 44 .InSecondsF()); |
44 EXPECT_EQ( | 45 EXPECT_EQ( |
45 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 46 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
46 EXPECT_EQ( | 47 EXPECT_EQ( |
47 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 48 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
48 } | 49 } |
49 | 50 |
50 TEST(AnimationTest, TrimTimeOneIteration) { | 51 TEST(AnimationTest, TrimTimeOneIteration) { |
51 scoped_ptr<Animation> anim(CreateAnimation(1)); | 52 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
52 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 53 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
53 .InSecondsF()); | 54 .InSecondsF()); |
54 EXPECT_EQ( | 55 EXPECT_EQ( |
55 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 56 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
56 EXPECT_EQ( | 57 EXPECT_EQ( |
57 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 58 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
58 EXPECT_EQ( | 59 EXPECT_EQ( |
59 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); | 60 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); |
60 } | 61 } |
61 | 62 |
62 TEST(AnimationTest, TrimTimeOneHalfIteration) { | 63 TEST(AnimationTest, TrimTimeOneHalfIteration) { |
63 scoped_ptr<Animation> anim(CreateAnimation(1.5)); | 64 std::unique_ptr<Animation> anim(CreateAnimation(1.5)); |
64 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 65 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
65 .InSecondsF()); | 66 .InSecondsF()); |
66 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 67 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
67 .InSecondsF()); | 68 .InSecondsF()); |
68 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 69 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
69 .InSecondsF()); | 70 .InSecondsF()); |
70 EXPECT_EQ(0.9, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.9)) | 71 EXPECT_EQ(0.9, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.9)) |
71 .InSecondsF()); | 72 .InSecondsF()); |
72 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 73 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
73 .InSecondsF()); | 74 .InSecondsF()); |
74 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 75 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
75 .InSecondsF()); | 76 .InSecondsF()); |
76 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 77 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
77 .InSecondsF()); | 78 .InSecondsF()); |
78 } | 79 } |
79 | 80 |
80 TEST(AnimationTest, TrimTimeInfiniteIterations) { | 81 TEST(AnimationTest, TrimTimeInfiniteIterations) { |
81 scoped_ptr<Animation> anim(CreateAnimation(-1)); | 82 std::unique_ptr<Animation> anim(CreateAnimation(-1)); |
82 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 83 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
83 .InSecondsF()); | 84 .InSecondsF()); |
84 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 85 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
85 .InSecondsF()); | 86 .InSecondsF()); |
86 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 87 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
87 .InSecondsF()); | 88 .InSecondsF()); |
88 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 89 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
89 .InSecondsF()); | 90 .InSecondsF()); |
90 } | 91 } |
91 | 92 |
92 TEST(AnimationTest, TrimTimeReverse) { | 93 TEST(AnimationTest, TrimTimeReverse) { |
93 scoped_ptr<Animation> anim(CreateAnimation(-1)); | 94 std::unique_ptr<Animation> anim(CreateAnimation(-1)); |
94 anim->set_direction(Animation::DIRECTION_REVERSE); | 95 anim->set_direction(Animation::DIRECTION_REVERSE); |
95 EXPECT_EQ( | 96 EXPECT_EQ( |
96 1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0)).InSecondsF()); | 97 1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0)).InSecondsF()); |
97 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 98 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
98 .InSecondsF()); | 99 .InSecondsF()); |
99 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 100 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
100 .InSecondsF()); | 101 .InSecondsF()); |
101 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 102 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
102 .InSecondsF()); | 103 .InSecondsF()); |
103 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 104 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
104 .InSecondsF()); | 105 .InSecondsF()); |
105 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 106 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
106 .InSecondsF()); | 107 .InSecondsF()); |
107 } | 108 } |
108 | 109 |
109 TEST(AnimationTest, TrimTimeAlternateInfiniteIterations) { | 110 TEST(AnimationTest, TrimTimeAlternateInfiniteIterations) { |
110 scoped_ptr<Animation> anim(CreateAnimation(-1)); | 111 std::unique_ptr<Animation> anim(CreateAnimation(-1)); |
111 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 112 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
112 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 113 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
113 .InSecondsF()); | 114 .InSecondsF()); |
114 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 115 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
115 .InSecondsF()); | 116 .InSecondsF()); |
116 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 117 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
117 .InSecondsF()); | 118 .InSecondsF()); |
118 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 119 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
119 .InSecondsF()); | 120 .InSecondsF()); |
120 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 121 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
121 .InSecondsF()); | 122 .InSecondsF()); |
122 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 123 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
123 .InSecondsF()); | 124 .InSecondsF()); |
124 } | 125 } |
125 | 126 |
126 TEST(AnimationTest, TrimTimeAlternateOneIteration) { | 127 TEST(AnimationTest, TrimTimeAlternateOneIteration) { |
127 scoped_ptr<Animation> anim(CreateAnimation(1)); | 128 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
128 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 129 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
129 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 130 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
130 .InSecondsF()); | 131 .InSecondsF()); |
131 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 132 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
132 .InSecondsF()); | 133 .InSecondsF()); |
133 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 134 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
134 .InSecondsF()); | 135 .InSecondsF()); |
135 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 136 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
136 .InSecondsF()); | 137 .InSecondsF()); |
137 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 138 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
138 .InSecondsF()); | 139 .InSecondsF()); |
139 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 140 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
140 .InSecondsF()); | 141 .InSecondsF()); |
141 } | 142 } |
142 | 143 |
143 TEST(AnimationTest, TrimTimeAlternateTwoIterations) { | 144 TEST(AnimationTest, TrimTimeAlternateTwoIterations) { |
144 scoped_ptr<Animation> anim(CreateAnimation(2)); | 145 std::unique_ptr<Animation> anim(CreateAnimation(2)); |
145 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 146 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
146 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 147 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
147 .InSecondsF()); | 148 .InSecondsF()); |
148 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 149 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
149 .InSecondsF()); | 150 .InSecondsF()); |
150 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 151 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
151 .InSecondsF()); | 152 .InSecondsF()); |
152 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 153 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
153 .InSecondsF()); | 154 .InSecondsF()); |
154 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 155 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
155 .InSecondsF()); | 156 .InSecondsF()); |
156 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 157 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
157 .InSecondsF()); | 158 .InSecondsF()); |
158 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) | 159 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) |
159 .InSecondsF()); | 160 .InSecondsF()); |
160 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 161 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
161 .InSecondsF()); | 162 .InSecondsF()); |
162 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) | 163 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) |
163 .InSecondsF()); | 164 .InSecondsF()); |
164 } | 165 } |
165 | 166 |
166 TEST(AnimationTest, TrimTimeAlternateTwoHalfIterations) { | 167 TEST(AnimationTest, TrimTimeAlternateTwoHalfIterations) { |
167 scoped_ptr<Animation> anim(CreateAnimation(2.5)); | 168 std::unique_ptr<Animation> anim(CreateAnimation(2.5)); |
168 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 169 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
169 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 170 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
170 .InSecondsF()); | 171 .InSecondsF()); |
171 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 172 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
172 .InSecondsF()); | 173 .InSecondsF()); |
173 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 174 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
174 .InSecondsF()); | 175 .InSecondsF()); |
175 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 176 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
176 .InSecondsF()); | 177 .InSecondsF()); |
177 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 178 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
178 .InSecondsF()); | 179 .InSecondsF()); |
179 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 180 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
180 .InSecondsF()); | 181 .InSecondsF()); |
181 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) | 182 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) |
182 .InSecondsF()); | 183 .InSecondsF()); |
183 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 184 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
184 .InSecondsF()); | 185 .InSecondsF()); |
185 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) | 186 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) |
186 .InSecondsF()); | 187 .InSecondsF()); |
187 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.50)) | 188 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.50)) |
188 .InSecondsF()); | 189 .InSecondsF()); |
189 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.75)) | 190 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.75)) |
190 .InSecondsF()); | 191 .InSecondsF()); |
191 } | 192 } |
192 | 193 |
193 TEST(AnimationTest, TrimTimeAlternateReverseInfiniteIterations) { | 194 TEST(AnimationTest, TrimTimeAlternateReverseInfiniteIterations) { |
194 scoped_ptr<Animation> anim(CreateAnimation(-1)); | 195 std::unique_ptr<Animation> anim(CreateAnimation(-1)); |
195 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); | 196 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); |
196 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 197 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
197 .InSecondsF()); | 198 .InSecondsF()); |
198 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 199 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
199 .InSecondsF()); | 200 .InSecondsF()); |
200 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 201 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
201 .InSecondsF()); | 202 .InSecondsF()); |
202 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 203 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
203 .InSecondsF()); | 204 .InSecondsF()); |
204 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 205 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
205 .InSecondsF()); | 206 .InSecondsF()); |
206 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 207 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
207 .InSecondsF()); | 208 .InSecondsF()); |
208 } | 209 } |
209 | 210 |
210 TEST(AnimationTest, TrimTimeAlternateReverseOneIteration) { | 211 TEST(AnimationTest, TrimTimeAlternateReverseOneIteration) { |
211 scoped_ptr<Animation> anim(CreateAnimation(1)); | 212 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
212 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); | 213 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); |
213 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 214 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
214 .InSecondsF()); | 215 .InSecondsF()); |
215 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 216 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
216 .InSecondsF()); | 217 .InSecondsF()); |
217 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 218 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
218 .InSecondsF()); | 219 .InSecondsF()); |
219 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 220 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
220 .InSecondsF()); | 221 .InSecondsF()); |
221 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 222 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
222 .InSecondsF()); | 223 .InSecondsF()); |
223 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 224 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
224 .InSecondsF()); | 225 .InSecondsF()); |
225 } | 226 } |
226 | 227 |
227 TEST(AnimationTest, TrimTimeAlternateReverseTwoIterations) { | 228 TEST(AnimationTest, TrimTimeAlternateReverseTwoIterations) { |
228 scoped_ptr<Animation> anim(CreateAnimation(2)); | 229 std::unique_ptr<Animation> anim(CreateAnimation(2)); |
229 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); | 230 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); |
230 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 231 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
231 .InSecondsF()); | 232 .InSecondsF()); |
232 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 233 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
233 .InSecondsF()); | 234 .InSecondsF()); |
234 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 235 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
235 .InSecondsF()); | 236 .InSecondsF()); |
236 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 237 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
237 .InSecondsF()); | 238 .InSecondsF()); |
238 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 239 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
239 .InSecondsF()); | 240 .InSecondsF()); |
240 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 241 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
241 .InSecondsF()); | 242 .InSecondsF()); |
242 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) | 243 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) |
243 .InSecondsF()); | 244 .InSecondsF()); |
244 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 245 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
245 .InSecondsF()); | 246 .InSecondsF()); |
246 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) | 247 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) |
247 .InSecondsF()); | 248 .InSecondsF()); |
248 } | 249 } |
249 | 250 |
250 TEST(AnimationTest, TrimTimeStartTime) { | 251 TEST(AnimationTest, TrimTimeStartTime) { |
251 scoped_ptr<Animation> anim(CreateAnimation(1)); | 252 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
252 anim->set_start_time(TicksFromSecondsF(4)); | 253 anim->set_start_time(TicksFromSecondsF(4)); |
253 EXPECT_EQ( | 254 EXPECT_EQ( |
254 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 255 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
255 EXPECT_EQ( | 256 EXPECT_EQ( |
256 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)).InSecondsF()); | 257 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)).InSecondsF()); |
257 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) | 258 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) |
258 .InSecondsF()); | 259 .InSecondsF()); |
259 EXPECT_EQ( | 260 EXPECT_EQ( |
260 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(5.0)).InSecondsF()); | 261 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(5.0)).InSecondsF()); |
261 EXPECT_EQ( | 262 EXPECT_EQ( |
262 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(6.0)).InSecondsF()); | 263 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(6.0)).InSecondsF()); |
263 } | 264 } |
264 | 265 |
265 TEST(AnimationTest, TrimTimeStartTimeReverse) { | 266 TEST(AnimationTest, TrimTimeStartTimeReverse) { |
266 scoped_ptr<Animation> anim(CreateAnimation(1)); | 267 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
267 anim->set_start_time(TicksFromSecondsF(4)); | 268 anim->set_start_time(TicksFromSecondsF(4)); |
268 anim->set_direction(Animation::DIRECTION_REVERSE); | 269 anim->set_direction(Animation::DIRECTION_REVERSE); |
269 EXPECT_EQ( | 270 EXPECT_EQ( |
270 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 271 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
271 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)) | 272 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)) |
272 .InSecondsF()); | 273 .InSecondsF()); |
273 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) | 274 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) |
274 .InSecondsF()); | 275 .InSecondsF()); |
275 EXPECT_EQ( | 276 EXPECT_EQ( |
276 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(5.0)).InSecondsF()); | 277 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(5.0)).InSecondsF()); |
277 EXPECT_EQ( | 278 EXPECT_EQ( |
278 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(6.0)).InSecondsF()); | 279 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(6.0)).InSecondsF()); |
279 } | 280 } |
280 | 281 |
281 TEST(AnimationTest, TrimTimeTimeOffset) { | 282 TEST(AnimationTest, TrimTimeTimeOffset) { |
282 scoped_ptr<Animation> anim(CreateAnimation(1)); | 283 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
283 anim->set_time_offset(TimeDelta::FromMilliseconds(4000)); | 284 anim->set_time_offset(TimeDelta::FromMilliseconds(4000)); |
284 anim->set_start_time(TicksFromSecondsF(4)); | 285 anim->set_start_time(TicksFromSecondsF(4)); |
285 EXPECT_EQ( | 286 EXPECT_EQ( |
286 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 287 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
287 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 288 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
288 .InSecondsF()); | 289 .InSecondsF()); |
289 EXPECT_EQ( | 290 EXPECT_EQ( |
290 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 291 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
291 EXPECT_EQ( | 292 EXPECT_EQ( |
292 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 293 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
293 } | 294 } |
294 | 295 |
295 TEST(AnimationTest, TrimTimeTimeOffsetReverse) { | 296 TEST(AnimationTest, TrimTimeTimeOffsetReverse) { |
296 scoped_ptr<Animation> anim(CreateAnimation(1)); | 297 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
297 anim->set_time_offset(TimeDelta::FromMilliseconds(4000)); | 298 anim->set_time_offset(TimeDelta::FromMilliseconds(4000)); |
298 anim->set_start_time(TicksFromSecondsF(4)); | 299 anim->set_start_time(TicksFromSecondsF(4)); |
299 anim->set_direction(Animation::DIRECTION_REVERSE); | 300 anim->set_direction(Animation::DIRECTION_REVERSE); |
300 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 301 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
301 .InSecondsF()); | 302 .InSecondsF()); |
302 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 303 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
303 .InSecondsF()); | 304 .InSecondsF()); |
304 EXPECT_EQ( | 305 EXPECT_EQ( |
305 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 306 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
306 EXPECT_EQ( | 307 EXPECT_EQ( |
307 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 308 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
308 } | 309 } |
309 | 310 |
310 TEST(AnimationTest, TrimTimeNegativeTimeOffset) { | 311 TEST(AnimationTest, TrimTimeNegativeTimeOffset) { |
311 scoped_ptr<Animation> anim(CreateAnimation(1)); | 312 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
312 anim->set_time_offset(TimeDelta::FromMilliseconds(-4000)); | 313 anim->set_time_offset(TimeDelta::FromMilliseconds(-4000)); |
313 | 314 |
314 EXPECT_EQ( | 315 EXPECT_EQ( |
315 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 316 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
316 EXPECT_EQ( | 317 EXPECT_EQ( |
317 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)).InSecondsF()); | 318 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)).InSecondsF()); |
318 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) | 319 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) |
319 .InSecondsF()); | 320 .InSecondsF()); |
320 EXPECT_EQ( | 321 EXPECT_EQ( |
321 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(5.0)).InSecondsF()); | 322 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(5.0)).InSecondsF()); |
322 } | 323 } |
323 | 324 |
324 TEST(AnimationTest, TrimTimeNegativeTimeOffsetReverse) { | 325 TEST(AnimationTest, TrimTimeNegativeTimeOffsetReverse) { |
325 scoped_ptr<Animation> anim(CreateAnimation(1)); | 326 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
326 anim->set_time_offset(TimeDelta::FromMilliseconds(-4000)); | 327 anim->set_time_offset(TimeDelta::FromMilliseconds(-4000)); |
327 anim->set_direction(Animation::DIRECTION_REVERSE); | 328 anim->set_direction(Animation::DIRECTION_REVERSE); |
328 | 329 |
329 EXPECT_EQ( | 330 EXPECT_EQ( |
330 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 331 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
331 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)) | 332 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)) |
332 .InSecondsF()); | 333 .InSecondsF()); |
333 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) | 334 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) |
334 .InSecondsF()); | 335 .InSecondsF()); |
335 EXPECT_EQ( | 336 EXPECT_EQ( |
336 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(5.0)).InSecondsF()); | 337 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(5.0)).InSecondsF()); |
337 } | 338 } |
338 | 339 |
339 TEST(AnimationTest, TrimTimePauseResume) { | 340 TEST(AnimationTest, TrimTimePauseResume) { |
340 scoped_ptr<Animation> anim(CreateAnimation(1)); | 341 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
341 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 342 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
342 EXPECT_EQ( | 343 EXPECT_EQ( |
343 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 344 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
344 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 345 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
345 .InSecondsF()); | 346 .InSecondsF()); |
346 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(0.5)); | 347 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(0.5)); |
347 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) | 348 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) |
348 .InSecondsF()); | 349 .InSecondsF()); |
349 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(1024.0)); | 350 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(1024.0)); |
350 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) | 351 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) |
351 .InSecondsF()); | 352 .InSecondsF()); |
352 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.5)) | 353 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.5)) |
353 .InSecondsF()); | 354 .InSecondsF()); |
354 } | 355 } |
355 | 356 |
356 TEST(AnimationTest, TrimTimePauseResumeReverse) { | 357 TEST(AnimationTest, TrimTimePauseResumeReverse) { |
357 scoped_ptr<Animation> anim(CreateAnimation(1)); | 358 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
358 anim->set_direction(Animation::DIRECTION_REVERSE); | 359 anim->set_direction(Animation::DIRECTION_REVERSE); |
359 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 360 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
360 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 361 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
361 .InSecondsF()); | 362 .InSecondsF()); |
362 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 363 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
363 .InSecondsF()); | 364 .InSecondsF()); |
364 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(0.25)); | 365 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(0.25)); |
365 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) | 366 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) |
366 .InSecondsF()); | 367 .InSecondsF()); |
367 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(1024.0)); | 368 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(1024.0)); |
368 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) | 369 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) |
369 .InSecondsF()); | 370 .InSecondsF()); |
370 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.75)) | 371 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.75)) |
371 .InSecondsF()); | 372 .InSecondsF()); |
372 } | 373 } |
373 | 374 |
374 TEST(AnimationTest, TrimTimeSuspendResume) { | 375 TEST(AnimationTest, TrimTimeSuspendResume) { |
375 scoped_ptr<Animation> anim(CreateAnimation(1)); | 376 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
376 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 377 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
377 EXPECT_EQ( | 378 EXPECT_EQ( |
378 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 379 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
379 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 380 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
380 .InSecondsF()); | 381 .InSecondsF()); |
381 anim->Suspend(TicksFromSecondsF(0.5)); | 382 anim->Suspend(TicksFromSecondsF(0.5)); |
382 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) | 383 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) |
383 .InSecondsF()); | 384 .InSecondsF()); |
384 anim->Resume(TicksFromSecondsF(1024)); | 385 anim->Resume(TicksFromSecondsF(1024)); |
385 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) | 386 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) |
386 .InSecondsF()); | 387 .InSecondsF()); |
387 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.5)) | 388 EXPECT_EQ(1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.5)) |
388 .InSecondsF()); | 389 .InSecondsF()); |
389 } | 390 } |
390 | 391 |
391 TEST(AnimationTest, TrimTimeSuspendResumeReverse) { | 392 TEST(AnimationTest, TrimTimeSuspendResumeReverse) { |
392 scoped_ptr<Animation> anim(CreateAnimation(1)); | 393 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
393 anim->set_direction(Animation::DIRECTION_REVERSE); | 394 anim->set_direction(Animation::DIRECTION_REVERSE); |
394 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 395 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
395 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 396 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
396 .InSecondsF()); | 397 .InSecondsF()); |
397 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 398 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
398 .InSecondsF()); | 399 .InSecondsF()); |
399 anim->Suspend(TicksFromSecondsF(0.75)); | 400 anim->Suspend(TicksFromSecondsF(0.75)); |
400 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) | 401 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) |
401 .InSecondsF()); | 402 .InSecondsF()); |
402 anim->Resume(TicksFromSecondsF(1024)); | 403 anim->Resume(TicksFromSecondsF(1024)); |
403 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) | 404 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.0)) |
404 .InSecondsF()); | 405 .InSecondsF()); |
405 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.25)) | 406 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1024.25)) |
406 .InSecondsF()); | 407 .InSecondsF()); |
407 } | 408 } |
408 | 409 |
409 TEST(AnimationTest, TrimTimeZeroDuration) { | 410 TEST(AnimationTest, TrimTimeZeroDuration) { |
410 scoped_ptr<Animation> anim(CreateAnimation(0, 0)); | 411 std::unique_ptr<Animation> anim(CreateAnimation(0, 0)); |
411 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 412 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
412 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 413 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
413 .InSecondsF()); | 414 .InSecondsF()); |
414 EXPECT_EQ( | 415 EXPECT_EQ( |
415 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 416 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
416 EXPECT_EQ( | 417 EXPECT_EQ( |
417 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 418 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
418 } | 419 } |
419 | 420 |
420 TEST(AnimationTest, TrimTimeStarting) { | 421 TEST(AnimationTest, TrimTimeStarting) { |
421 scoped_ptr<Animation> anim(CreateAnimation(1, 5.0)); | 422 std::unique_ptr<Animation> anim(CreateAnimation(1, 5.0)); |
422 anim->SetRunState(Animation::STARTING, TicksFromSecondsF(0.0)); | 423 anim->SetRunState(Animation::STARTING, TicksFromSecondsF(0.0)); |
423 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 424 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
424 .InSecondsF()); | 425 .InSecondsF()); |
425 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 426 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
426 .InSecondsF()); | 427 .InSecondsF()); |
427 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 428 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
428 .InSecondsF()); | 429 .InSecondsF()); |
429 anim->set_time_offset(TimeDelta::FromMilliseconds(2000)); | 430 anim->set_time_offset(TimeDelta::FromMilliseconds(2000)); |
430 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 431 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
431 .InSecondsF()); | 432 .InSecondsF()); |
432 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 433 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
433 .InSecondsF()); | 434 .InSecondsF()); |
434 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 435 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
435 .InSecondsF()); | 436 .InSecondsF()); |
436 anim->set_start_time(TicksFromSecondsF(1.0)); | 437 anim->set_start_time(TicksFromSecondsF(1.0)); |
437 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 438 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
438 .InSecondsF()); | 439 .InSecondsF()); |
439 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 440 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
440 .InSecondsF()); | 441 .InSecondsF()); |
441 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 442 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
442 .InSecondsF()); | 443 .InSecondsF()); |
443 EXPECT_EQ(3.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 444 EXPECT_EQ(3.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
444 .InSecondsF()); | 445 .InSecondsF()); |
445 } | 446 } |
446 | 447 |
447 TEST(AnimationTest, TrimTimeNeedsSynchronizedStartTime) { | 448 TEST(AnimationTest, TrimTimeNeedsSynchronizedStartTime) { |
448 scoped_ptr<Animation> anim(CreateAnimation(1, 5.0)); | 449 std::unique_ptr<Animation> anim(CreateAnimation(1, 5.0)); |
449 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 450 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
450 anim->set_needs_synchronized_start_time(true); | 451 anim->set_needs_synchronized_start_time(true); |
451 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 452 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
452 .InSecondsF()); | 453 .InSecondsF()); |
453 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 454 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
454 .InSecondsF()); | 455 .InSecondsF()); |
455 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 456 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
456 .InSecondsF()); | 457 .InSecondsF()); |
457 anim->set_time_offset(TimeDelta::FromMilliseconds(2000)); | 458 anim->set_time_offset(TimeDelta::FromMilliseconds(2000)); |
458 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 459 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
459 .InSecondsF()); | 460 .InSecondsF()); |
460 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 461 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
461 .InSecondsF()); | 462 .InSecondsF()); |
462 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 463 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
463 .InSecondsF()); | 464 .InSecondsF()); |
464 anim->set_start_time(TicksFromSecondsF(1.0)); | 465 anim->set_start_time(TicksFromSecondsF(1.0)); |
465 anim->set_needs_synchronized_start_time(false); | 466 anim->set_needs_synchronized_start_time(false); |
466 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 467 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
467 .InSecondsF()); | 468 .InSecondsF()); |
468 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 469 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
469 .InSecondsF()); | 470 .InSecondsF()); |
470 EXPECT_EQ(3.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 471 EXPECT_EQ(3.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
471 .InSecondsF()); | 472 .InSecondsF()); |
472 } | 473 } |
473 | 474 |
474 TEST(AnimationTest, IsFinishedAtZeroIterations) { | 475 TEST(AnimationTest, IsFinishedAtZeroIterations) { |
475 scoped_ptr<Animation> anim(CreateAnimation(0)); | 476 std::unique_ptr<Animation> anim(CreateAnimation(0)); |
476 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 477 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
477 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(-1.0))); | 478 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(-1.0))); |
478 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 479 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
479 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); | 480 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); |
480 } | 481 } |
481 | 482 |
482 TEST(AnimationTest, IsFinishedAtOneIteration) { | 483 TEST(AnimationTest, IsFinishedAtOneIteration) { |
483 scoped_ptr<Animation> anim(CreateAnimation(1)); | 484 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
484 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 485 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
485 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(-1.0))); | 486 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(-1.0))); |
486 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 487 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
487 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); | 488 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); |
488 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(2.0))); | 489 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(2.0))); |
489 } | 490 } |
490 | 491 |
491 TEST(AnimationTest, IsFinishedAtInfiniteIterations) { | 492 TEST(AnimationTest, IsFinishedAtInfiniteIterations) { |
492 scoped_ptr<Animation> anim(CreateAnimation(-1)); | 493 std::unique_ptr<Animation> anim(CreateAnimation(-1)); |
493 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 494 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
494 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 495 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
495 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.5))); | 496 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.5))); |
496 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); | 497 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); |
497 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(1.5))); | 498 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(1.5))); |
498 } | 499 } |
499 | 500 |
500 TEST(AnimationTest, IsFinishedNegativeTimeOffset) { | 501 TEST(AnimationTest, IsFinishedNegativeTimeOffset) { |
501 scoped_ptr<Animation> anim(CreateAnimation(1)); | 502 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
502 anim->set_time_offset(TimeDelta::FromMilliseconds(-500)); | 503 anim->set_time_offset(TimeDelta::FromMilliseconds(-500)); |
503 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 504 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
504 | 505 |
505 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(-1.0))); | 506 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(-1.0))); |
506 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 507 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
507 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.5))); | 508 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.5))); |
508 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); | 509 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); |
509 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(1.5))); | 510 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(1.5))); |
510 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(2.0))); | 511 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(2.0))); |
511 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(2.5))); | 512 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(2.5))); |
512 } | 513 } |
513 | 514 |
514 TEST(AnimationTest, IsFinishedPositiveTimeOffset) { | 515 TEST(AnimationTest, IsFinishedPositiveTimeOffset) { |
515 scoped_ptr<Animation> anim(CreateAnimation(1)); | 516 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
516 anim->set_time_offset(TimeDelta::FromMilliseconds(500)); | 517 anim->set_time_offset(TimeDelta::FromMilliseconds(500)); |
517 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 518 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
518 | 519 |
519 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(-1.0))); | 520 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(-1.0))); |
520 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 521 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
521 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.5))); | 522 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.5))); |
522 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); | 523 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(1.0))); |
523 } | 524 } |
524 | 525 |
525 TEST(AnimationTest, IsFinishedAtNotRunning) { | 526 TEST(AnimationTest, IsFinishedAtNotRunning) { |
526 scoped_ptr<Animation> anim(CreateAnimation(0)); | 527 std::unique_ptr<Animation> anim(CreateAnimation(0)); |
527 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 528 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
528 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 529 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
529 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(0.0)); | 530 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(0.0)); |
530 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 531 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
531 anim->SetRunState(Animation::WAITING_FOR_TARGET_AVAILABILITY, | 532 anim->SetRunState(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
532 TicksFromSecondsF(0.0)); | 533 TicksFromSecondsF(0.0)); |
533 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 534 EXPECT_FALSE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
534 anim->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); | 535 anim->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
535 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 536 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
536 anim->SetRunState(Animation::ABORTED, TicksFromSecondsF(0.0)); | 537 anim->SetRunState(Animation::ABORTED, TicksFromSecondsF(0.0)); |
537 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); | 538 EXPECT_TRUE(anim->IsFinishedAt(TicksFromSecondsF(0.0))); |
538 } | 539 } |
539 | 540 |
540 TEST(AnimationTest, IsFinished) { | 541 TEST(AnimationTest, IsFinished) { |
541 scoped_ptr<Animation> anim(CreateAnimation(1)); | 542 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
542 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 543 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
543 EXPECT_FALSE(anim->is_finished()); | 544 EXPECT_FALSE(anim->is_finished()); |
544 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(0.0)); | 545 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(0.0)); |
545 EXPECT_FALSE(anim->is_finished()); | 546 EXPECT_FALSE(anim->is_finished()); |
546 anim->SetRunState(Animation::WAITING_FOR_TARGET_AVAILABILITY, | 547 anim->SetRunState(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
547 TicksFromSecondsF(0.0)); | 548 TicksFromSecondsF(0.0)); |
548 EXPECT_FALSE(anim->is_finished()); | 549 EXPECT_FALSE(anim->is_finished()); |
549 anim->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); | 550 anim->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
550 EXPECT_TRUE(anim->is_finished()); | 551 EXPECT_TRUE(anim->is_finished()); |
551 anim->SetRunState(Animation::ABORTED, TicksFromSecondsF(0.0)); | 552 anim->SetRunState(Animation::ABORTED, TicksFromSecondsF(0.0)); |
552 EXPECT_TRUE(anim->is_finished()); | 553 EXPECT_TRUE(anim->is_finished()); |
553 } | 554 } |
554 | 555 |
555 TEST(AnimationTest, IsFinishedNeedsSynchronizedStartTime) { | 556 TEST(AnimationTest, IsFinishedNeedsSynchronizedStartTime) { |
556 scoped_ptr<Animation> anim(CreateAnimation(1)); | 557 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
557 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(2.0)); | 558 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(2.0)); |
558 EXPECT_FALSE(anim->is_finished()); | 559 EXPECT_FALSE(anim->is_finished()); |
559 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(2.0)); | 560 anim->SetRunState(Animation::PAUSED, TicksFromSecondsF(2.0)); |
560 EXPECT_FALSE(anim->is_finished()); | 561 EXPECT_FALSE(anim->is_finished()); |
561 anim->SetRunState(Animation::WAITING_FOR_TARGET_AVAILABILITY, | 562 anim->SetRunState(Animation::WAITING_FOR_TARGET_AVAILABILITY, |
562 TicksFromSecondsF(2.0)); | 563 TicksFromSecondsF(2.0)); |
563 EXPECT_FALSE(anim->is_finished()); | 564 EXPECT_FALSE(anim->is_finished()); |
564 anim->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); | 565 anim->SetRunState(Animation::FINISHED, TicksFromSecondsF(0.0)); |
565 EXPECT_TRUE(anim->is_finished()); | 566 EXPECT_TRUE(anim->is_finished()); |
566 anim->SetRunState(Animation::ABORTED, TicksFromSecondsF(0.0)); | 567 anim->SetRunState(Animation::ABORTED, TicksFromSecondsF(0.0)); |
567 EXPECT_TRUE(anim->is_finished()); | 568 EXPECT_TRUE(anim->is_finished()); |
568 } | 569 } |
569 | 570 |
570 TEST(AnimationTest, RunStateChangesIgnoredWhileSuspended) { | 571 TEST(AnimationTest, RunStateChangesIgnoredWhileSuspended) { |
571 scoped_ptr<Animation> anim(CreateAnimation(1)); | 572 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
572 anim->Suspend(TicksFromSecondsF(0)); | 573 anim->Suspend(TicksFromSecondsF(0)); |
573 EXPECT_EQ(Animation::PAUSED, anim->run_state()); | 574 EXPECT_EQ(Animation::PAUSED, anim->run_state()); |
574 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 575 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
575 EXPECT_EQ(Animation::PAUSED, anim->run_state()); | 576 EXPECT_EQ(Animation::PAUSED, anim->run_state()); |
576 anim->Resume(TicksFromSecondsF(0)); | 577 anim->Resume(TicksFromSecondsF(0)); |
577 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); | 578 anim->SetRunState(Animation::RUNNING, TicksFromSecondsF(0.0)); |
578 EXPECT_EQ(Animation::RUNNING, anim->run_state()); | 579 EXPECT_EQ(Animation::RUNNING, anim->run_state()); |
579 } | 580 } |
580 | 581 |
581 TEST(AnimationTest, TrimTimePlaybackNormal) { | 582 TEST(AnimationTest, TrimTimePlaybackNormal) { |
582 scoped_ptr<Animation> anim(CreateAnimation(1, 1, 1)); | 583 std::unique_ptr<Animation> anim(CreateAnimation(1, 1, 1)); |
583 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 584 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
584 .InSecondsF()); | 585 .InSecondsF()); |
585 EXPECT_EQ( | 586 EXPECT_EQ( |
586 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 587 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
587 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 588 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
588 .InSecondsF()); | 589 .InSecondsF()); |
589 EXPECT_EQ( | 590 EXPECT_EQ( |
590 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 591 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
591 EXPECT_EQ( | 592 EXPECT_EQ( |
592 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); | 593 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); |
593 } | 594 } |
594 | 595 |
595 TEST(AnimationTest, TrimTimePlaybackSlow) { | 596 TEST(AnimationTest, TrimTimePlaybackSlow) { |
596 scoped_ptr<Animation> anim(CreateAnimation(1, 1, 0.5)); | 597 std::unique_ptr<Animation> anim(CreateAnimation(1, 1, 0.5)); |
597 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 598 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
598 .InSecondsF()); | 599 .InSecondsF()); |
599 EXPECT_EQ( | 600 EXPECT_EQ( |
600 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 601 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
601 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 602 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
602 .InSecondsF()); | 603 .InSecondsF()); |
603 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 604 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
604 .InSecondsF()); | 605 .InSecondsF()); |
605 EXPECT_EQ( | 606 EXPECT_EQ( |
606 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); | 607 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); |
607 EXPECT_EQ( | 608 EXPECT_EQ( |
608 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)).InSecondsF()); | 609 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)).InSecondsF()); |
609 } | 610 } |
610 | 611 |
611 TEST(AnimationTest, TrimTimePlaybackFast) { | 612 TEST(AnimationTest, TrimTimePlaybackFast) { |
612 scoped_ptr<Animation> anim(CreateAnimation(1, 4, 2)); | 613 std::unique_ptr<Animation> anim(CreateAnimation(1, 4, 2)); |
613 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 614 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
614 .InSecondsF()); | 615 .InSecondsF()); |
615 EXPECT_EQ( | 616 EXPECT_EQ( |
616 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 617 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
617 EXPECT_EQ( | 618 EXPECT_EQ( |
618 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)).InSecondsF()); | 619 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)).InSecondsF()); |
619 EXPECT_EQ( | 620 EXPECT_EQ( |
620 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 621 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
621 EXPECT_EQ( | 622 EXPECT_EQ( |
622 3, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)).InSecondsF()); | 623 3, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)).InSecondsF()); |
623 EXPECT_EQ( | 624 EXPECT_EQ( |
624 4, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); | 625 4, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); |
625 EXPECT_EQ( | 626 EXPECT_EQ( |
626 4, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)).InSecondsF()); | 627 4, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)).InSecondsF()); |
627 } | 628 } |
628 | 629 |
629 TEST(AnimationTest, TrimTimePlaybackNormalReverse) { | 630 TEST(AnimationTest, TrimTimePlaybackNormalReverse) { |
630 scoped_ptr<Animation> anim(CreateAnimation(1, 2, -1)); | 631 std::unique_ptr<Animation> anim(CreateAnimation(1, 2, -1)); |
631 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 632 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
632 .InSecondsF()); | 633 .InSecondsF()); |
633 EXPECT_EQ( | 634 EXPECT_EQ( |
634 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0)).InSecondsF()); | 635 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0)).InSecondsF()); |
635 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 636 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
636 .InSecondsF()); | 637 .InSecondsF()); |
637 EXPECT_EQ( | 638 EXPECT_EQ( |
638 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 639 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
639 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 640 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
640 .InSecondsF()); | 641 .InSecondsF()); |
641 EXPECT_EQ( | 642 EXPECT_EQ( |
642 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); | 643 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); |
643 EXPECT_EQ( | 644 EXPECT_EQ( |
644 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)).InSecondsF()); | 645 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)).InSecondsF()); |
645 } | 646 } |
646 | 647 |
647 TEST(AnimationTest, TrimTimePlaybackSlowReverse) { | 648 TEST(AnimationTest, TrimTimePlaybackSlowReverse) { |
648 scoped_ptr<Animation> anim(CreateAnimation(1, 2, -0.5)); | 649 std::unique_ptr<Animation> anim(CreateAnimation(1, 2, -0.5)); |
649 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 650 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
650 .InSecondsF()); | 651 .InSecondsF()); |
651 EXPECT_EQ( | 652 EXPECT_EQ( |
652 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0)).InSecondsF()); | 653 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0)).InSecondsF()); |
653 EXPECT_EQ(1.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 654 EXPECT_EQ(1.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
654 .InSecondsF()); | 655 .InSecondsF()); |
655 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 656 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
656 .InSecondsF()); | 657 .InSecondsF()); |
657 EXPECT_EQ(1.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 658 EXPECT_EQ(1.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
658 .InSecondsF()); | 659 .InSecondsF()); |
659 EXPECT_EQ( | 660 EXPECT_EQ( |
660 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); | 661 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); |
661 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)) | 662 EXPECT_EQ(0.75, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)) |
662 .InSecondsF()); | 663 .InSecondsF()); |
663 EXPECT_EQ( | 664 EXPECT_EQ( |
664 0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3)).InSecondsF()); | 665 0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3)).InSecondsF()); |
665 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.5)) | 666 EXPECT_EQ(0.25, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.5)) |
666 .InSecondsF()); | 667 .InSecondsF()); |
667 EXPECT_EQ( | 668 EXPECT_EQ( |
668 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4)).InSecondsF()); | 669 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4)).InSecondsF()); |
669 EXPECT_EQ( | 670 EXPECT_EQ( |
670 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)).InSecondsF()); | 671 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)).InSecondsF()); |
671 } | 672 } |
672 | 673 |
673 TEST(AnimationTest, TrimTimePlaybackFastReverse) { | 674 TEST(AnimationTest, TrimTimePlaybackFastReverse) { |
674 scoped_ptr<Animation> anim(CreateAnimation(1, 2, -2)); | 675 std::unique_ptr<Animation> anim(CreateAnimation(1, 2, -2)); |
675 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 676 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
676 .InSecondsF()); | 677 .InSecondsF()); |
677 EXPECT_EQ( | 678 EXPECT_EQ( |
678 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0)).InSecondsF()); | 679 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0)).InSecondsF()); |
679 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 680 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
680 .InSecondsF()); | 681 .InSecondsF()); |
681 EXPECT_EQ( | 682 EXPECT_EQ( |
682 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)).InSecondsF()); | 683 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)).InSecondsF()); |
683 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 684 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
684 .InSecondsF()); | 685 .InSecondsF()); |
685 EXPECT_EQ( | 686 EXPECT_EQ( |
686 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 687 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
687 EXPECT_EQ( | 688 EXPECT_EQ( |
688 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)).InSecondsF()); | 689 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)).InSecondsF()); |
689 } | 690 } |
690 | 691 |
691 TEST(AnimationTest, TrimTimePlaybackFastInfiniteIterations) { | 692 TEST(AnimationTest, TrimTimePlaybackFastInfiniteIterations) { |
692 scoped_ptr<Animation> anim(CreateAnimation(-1, 4, 4)); | 693 std::unique_ptr<Animation> anim(CreateAnimation(-1, 4, 4)); |
693 EXPECT_EQ( | 694 EXPECT_EQ( |
694 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 695 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
695 EXPECT_EQ( | 696 EXPECT_EQ( |
696 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)).InSecondsF()); | 697 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)).InSecondsF()); |
697 EXPECT_EQ( | 698 EXPECT_EQ( |
698 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 699 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
699 EXPECT_EQ( | 700 EXPECT_EQ( |
700 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)).InSecondsF()); | 701 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)).InSecondsF()); |
701 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1000.0)) | 702 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1000.0)) |
702 .InSecondsF()); | 703 .InSecondsF()); |
703 EXPECT_EQ(2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1000.5)) | 704 EXPECT_EQ(2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1000.5)) |
704 .InSecondsF()); | 705 .InSecondsF()); |
705 } | 706 } |
706 | 707 |
707 TEST(AnimationTest, TrimTimePlaybackNormalDoubleReverse) { | 708 TEST(AnimationTest, TrimTimePlaybackNormalDoubleReverse) { |
708 scoped_ptr<Animation> anim(CreateAnimation(1, 1, -1)); | 709 std::unique_ptr<Animation> anim(CreateAnimation(1, 1, -1)); |
709 anim->set_direction(Animation::DIRECTION_REVERSE); | 710 anim->set_direction(Animation::DIRECTION_REVERSE); |
710 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 711 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
711 .InSecondsF()); | 712 .InSecondsF()); |
712 EXPECT_EQ( | 713 EXPECT_EQ( |
713 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 714 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
714 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 715 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
715 .InSecondsF()); | 716 .InSecondsF()); |
716 EXPECT_EQ( | 717 EXPECT_EQ( |
717 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 718 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
718 EXPECT_EQ( | 719 EXPECT_EQ( |
719 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); | 720 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); |
720 } | 721 } |
721 | 722 |
722 TEST(AnimationTest, TrimTimePlaybackFastDoubleReverse) { | 723 TEST(AnimationTest, TrimTimePlaybackFastDoubleReverse) { |
723 scoped_ptr<Animation> anim(CreateAnimation(1, 4, -2)); | 724 std::unique_ptr<Animation> anim(CreateAnimation(1, 4, -2)); |
724 anim->set_direction(Animation::DIRECTION_REVERSE); | 725 anim->set_direction(Animation::DIRECTION_REVERSE); |
725 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 726 EXPECT_EQ(0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
726 .InSecondsF()); | 727 .InSecondsF()); |
727 EXPECT_EQ( | 728 EXPECT_EQ( |
728 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); | 729 0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)).InSecondsF()); |
729 EXPECT_EQ( | 730 EXPECT_EQ( |
730 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)).InSecondsF()); | 731 1, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)).InSecondsF()); |
731 EXPECT_EQ( | 732 EXPECT_EQ( |
732 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); | 733 2, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)).InSecondsF()); |
733 EXPECT_EQ( | 734 EXPECT_EQ( |
734 3, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)).InSecondsF()); | 735 3, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)).InSecondsF()); |
735 EXPECT_EQ( | 736 EXPECT_EQ( |
736 4, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); | 737 4, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)).InSecondsF()); |
737 EXPECT_EQ( | 738 EXPECT_EQ( |
738 4, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)).InSecondsF()); | 739 4, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)).InSecondsF()); |
739 } | 740 } |
740 | 741 |
741 TEST(AnimationTest, TrimTimeAlternateTwoIterationsPlaybackFast) { | 742 TEST(AnimationTest, TrimTimeAlternateTwoIterationsPlaybackFast) { |
742 scoped_ptr<Animation> anim(CreateAnimation(2, 2, 2)); | 743 std::unique_ptr<Animation> anim(CreateAnimation(2, 2, 2)); |
743 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 744 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
744 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 745 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
745 .InSecondsF()); | 746 .InSecondsF()); |
746 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 747 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
747 .InSecondsF()); | 748 .InSecondsF()); |
748 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 749 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
749 .InSecondsF()); | 750 .InSecondsF()); |
750 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 751 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
751 .InSecondsF()); | 752 .InSecondsF()); |
752 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 753 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
753 .InSecondsF()); | 754 .InSecondsF()); |
754 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 755 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
755 .InSecondsF()); | 756 .InSecondsF()); |
756 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 757 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
757 .InSecondsF()); | 758 .InSecondsF()); |
758 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) | 759 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) |
759 .InSecondsF()); | 760 .InSecondsF()); |
760 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 761 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
761 .InSecondsF()); | 762 .InSecondsF()); |
762 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) | 763 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) |
763 .InSecondsF()); | 764 .InSecondsF()); |
764 } | 765 } |
765 | 766 |
766 TEST(AnimationTest, TrimTimeAlternateTwoIterationsPlaybackFastReverse) { | 767 TEST(AnimationTest, TrimTimeAlternateTwoIterationsPlaybackFastReverse) { |
767 scoped_ptr<Animation> anim(CreateAnimation(2, 2, 2)); | 768 std::unique_ptr<Animation> anim(CreateAnimation(2, 2, 2)); |
768 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); | 769 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); |
769 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 770 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
770 .InSecondsF()); | 771 .InSecondsF()); |
771 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 772 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
772 .InSecondsF()); | 773 .InSecondsF()); |
773 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 774 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
774 .InSecondsF()); | 775 .InSecondsF()); |
775 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 776 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
776 .InSecondsF()); | 777 .InSecondsF()); |
777 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 778 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
778 .InSecondsF()); | 779 .InSecondsF()); |
779 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 780 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
780 .InSecondsF()); | 781 .InSecondsF()); |
781 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 782 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
782 .InSecondsF()); | 783 .InSecondsF()); |
783 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 784 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
784 .InSecondsF()); | 785 .InSecondsF()); |
785 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) | 786 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) |
786 .InSecondsF()); | 787 .InSecondsF()); |
787 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 788 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
788 .InSecondsF()); | 789 .InSecondsF()); |
789 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) | 790 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) |
790 .InSecondsF()); | 791 .InSecondsF()); |
791 } | 792 } |
792 | 793 |
793 TEST(AnimationTest, TrimTimeAlternateTwoIterationsPlaybackFastDoubleReverse) { | 794 TEST(AnimationTest, TrimTimeAlternateTwoIterationsPlaybackFastDoubleReverse) { |
794 scoped_ptr<Animation> anim(CreateAnimation(2, 2, -2)); | 795 std::unique_ptr<Animation> anim(CreateAnimation(2, 2, -2)); |
795 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); | 796 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); |
796 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 797 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
797 .InSecondsF()); | 798 .InSecondsF()); |
798 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 799 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
799 .InSecondsF()); | 800 .InSecondsF()); |
800 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 801 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
801 .InSecondsF()); | 802 .InSecondsF()); |
802 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 803 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
803 .InSecondsF()); | 804 .InSecondsF()); |
804 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 805 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
805 .InSecondsF()); | 806 .InSecondsF()); |
806 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) | 807 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.25)) |
807 .InSecondsF()); | 808 .InSecondsF()); |
808 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 809 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
809 .InSecondsF()); | 810 .InSecondsF()); |
810 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) | 811 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.75)) |
811 .InSecondsF()); | 812 .InSecondsF()); |
812 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 813 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
813 .InSecondsF()); | 814 .InSecondsF()); |
814 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) | 815 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.25)) |
815 .InSecondsF()); | 816 .InSecondsF()); |
816 } | 817 } |
817 | 818 |
818 TEST(AnimationTest, | 819 TEST(AnimationTest, |
819 TrimTimeAlternateReverseThreeIterationsPlaybackFastAlternateReverse) { | 820 TrimTimeAlternateReverseThreeIterationsPlaybackFastAlternateReverse) { |
820 scoped_ptr<Animation> anim(CreateAnimation(3, 2, -2)); | 821 std::unique_ptr<Animation> anim(CreateAnimation(3, 2, -2)); |
821 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); | 822 anim->set_direction(Animation::DIRECTION_ALTERNATE_REVERSE); |
822 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 823 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
823 .InSecondsF()); | 824 .InSecondsF()); |
824 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) | 825 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.25)) |
825 .InSecondsF()); | 826 .InSecondsF()); |
826 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 827 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
827 .InSecondsF()); | 828 .InSecondsF()); |
828 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) | 829 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.75)) |
829 .InSecondsF()); | 830 .InSecondsF()); |
830 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 831 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
(...skipping 13 matching lines...) Expand all Loading... |
844 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.75)) | 845 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.75)) |
845 .InSecondsF()); | 846 .InSecondsF()); |
846 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)) | 847 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)) |
847 .InSecondsF()); | 848 .InSecondsF()); |
848 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.25)) | 849 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.25)) |
849 .InSecondsF()); | 850 .InSecondsF()); |
850 } | 851 } |
851 | 852 |
852 TEST(AnimationTest, | 853 TEST(AnimationTest, |
853 TrimTimeAlternateReverseTwoIterationsPlaybackNormalAlternate) { | 854 TrimTimeAlternateReverseTwoIterationsPlaybackNormalAlternate) { |
854 scoped_ptr<Animation> anim(CreateAnimation(2, 2, -1)); | 855 std::unique_ptr<Animation> anim(CreateAnimation(2, 2, -1)); |
855 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 856 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
856 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 857 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
857 .InSecondsF()); | 858 .InSecondsF()); |
858 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 859 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
859 .InSecondsF()); | 860 .InSecondsF()); |
860 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 861 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
861 .InSecondsF()); | 862 .InSecondsF()); |
862 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 863 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
863 .InSecondsF()); | 864 .InSecondsF()); |
864 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 865 EXPECT_EQ(2.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
865 .InSecondsF()); | 866 .InSecondsF()); |
866 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)) | 867 EXPECT_EQ(1.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)) |
867 .InSecondsF()); | 868 .InSecondsF()); |
868 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)) | 869 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)) |
869 .InSecondsF()); | 870 .InSecondsF()); |
870 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.5)) | 871 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.5)) |
871 .InSecondsF()); | 872 .InSecondsF()); |
872 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)) | 873 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.0)) |
873 .InSecondsF()); | 874 .InSecondsF()); |
874 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) | 875 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(4.5)) |
875 .InSecondsF()); | 876 .InSecondsF()); |
876 } | 877 } |
877 | 878 |
878 TEST(AnimationTest, TrimTimeIterationStart) { | 879 TEST(AnimationTest, TrimTimeIterationStart) { |
879 scoped_ptr<Animation> anim(CreateAnimation(2, 1, 1)); | 880 std::unique_ptr<Animation> anim(CreateAnimation(2, 1, 1)); |
880 anim->set_iteration_start(0.5); | 881 anim->set_iteration_start(0.5); |
881 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 882 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
882 .InSecondsF()); | 883 .InSecondsF()); |
883 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 884 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
884 .InSecondsF()); | 885 .InSecondsF()); |
885 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 886 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
886 .InSecondsF()); | 887 .InSecondsF()); |
887 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 888 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
888 .InSecondsF()); | 889 .InSecondsF()); |
889 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 890 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
890 .InSecondsF()); | 891 .InSecondsF()); |
891 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 892 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
892 .InSecondsF()); | 893 .InSecondsF()); |
893 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)) | 894 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)) |
894 .InSecondsF()); | 895 .InSecondsF()); |
895 } | 896 } |
896 | 897 |
897 TEST(AnimationTest, TrimTimeIterationStartAlternate) { | 898 TEST(AnimationTest, TrimTimeIterationStartAlternate) { |
898 scoped_ptr<Animation> anim(CreateAnimation(2, 1, 1)); | 899 std::unique_ptr<Animation> anim(CreateAnimation(2, 1, 1)); |
899 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 900 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
900 anim->set_iteration_start(0.3); | 901 anim->set_iteration_start(0.3); |
901 EXPECT_EQ(0.3, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 902 EXPECT_EQ(0.3, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
902 .InSecondsF()); | 903 .InSecondsF()); |
903 EXPECT_EQ(0.3, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 904 EXPECT_EQ(0.3, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
904 .InSecondsF()); | 905 .InSecondsF()); |
905 EXPECT_EQ(0.8, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 906 EXPECT_EQ(0.8, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
906 .InSecondsF()); | 907 .InSecondsF()); |
907 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.7)) | 908 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.7)) |
908 .InSecondsF()); | 909 .InSecondsF()); |
909 EXPECT_EQ(0.7, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 910 EXPECT_EQ(0.7, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
910 .InSecondsF()); | 911 .InSecondsF()); |
911 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.2)) | 912 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.2)) |
912 .InSecondsF()); | 913 .InSecondsF()); |
913 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.7)) | 914 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.7)) |
914 .InSecondsF()); | 915 .InSecondsF()); |
915 } | 916 } |
916 | 917 |
917 TEST(AnimationTest, TrimTimeIterationStartAlternateThreeIterations) { | 918 TEST(AnimationTest, TrimTimeIterationStartAlternateThreeIterations) { |
918 scoped_ptr<Animation> anim(CreateAnimation(3, 1, 1)); | 919 std::unique_ptr<Animation> anim(CreateAnimation(3, 1, 1)); |
919 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 920 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
920 anim->set_iteration_start(1); | 921 anim->set_iteration_start(1); |
921 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) | 922 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(-1.0)) |
922 .InSecondsF()); | 923 .InSecondsF()); |
923 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 924 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
924 .InSecondsF()); | 925 .InSecondsF()); |
925 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) | 926 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.5)) |
926 .InSecondsF()); | 927 .InSecondsF()); |
927 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 928 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
928 .InSecondsF()); | 929 .InSecondsF()); |
929 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) | 930 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.5)) |
930 .InSecondsF()); | 931 .InSecondsF()); |
931 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 932 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
932 .InSecondsF()); | 933 .InSecondsF()); |
933 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)) | 934 EXPECT_EQ(0.5, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.5)) |
934 .InSecondsF()); | 935 .InSecondsF()); |
935 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)) | 936 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)) |
936 .InSecondsF()); | 937 .InSecondsF()); |
937 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.5)) | 938 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.5)) |
938 .InSecondsF()); | 939 .InSecondsF()); |
939 } | 940 } |
940 | 941 |
941 TEST(AnimationTest, | 942 TEST(AnimationTest, |
942 TrimTimeIterationStartAlternateThreeIterationsPlaybackReverse) { | 943 TrimTimeIterationStartAlternateThreeIterationsPlaybackReverse) { |
943 scoped_ptr<Animation> anim(CreateAnimation(3, 1, -1)); | 944 std::unique_ptr<Animation> anim(CreateAnimation(3, 1, -1)); |
944 anim->set_direction(Animation::DIRECTION_ALTERNATE); | 945 anim->set_direction(Animation::DIRECTION_ALTERNATE); |
945 anim->set_iteration_start(1); | 946 anim->set_iteration_start(1); |
946 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) | 947 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(0.0)) |
947 .InSecondsF()); | 948 .InSecondsF()); |
948 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) | 949 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(1.0)) |
949 .InSecondsF()); | 950 .InSecondsF()); |
950 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) | 951 EXPECT_EQ(0.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(2.0)) |
951 .InSecondsF()); | 952 .InSecondsF()); |
952 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)) | 953 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.0)) |
953 .InSecondsF()); | 954 .InSecondsF()); |
954 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.5)) | 955 EXPECT_EQ(1.0, anim->TrimTimeToCurrentIteration(TicksFromSecondsF(3.5)) |
955 .InSecondsF()); | 956 .InSecondsF()); |
956 } | 957 } |
957 | 958 |
958 TEST(AnimationTest, InEffectFillMode) { | 959 TEST(AnimationTest, InEffectFillMode) { |
959 scoped_ptr<Animation> anim(CreateAnimation(1)); | 960 std::unique_ptr<Animation> anim(CreateAnimation(1)); |
960 anim->set_fill_mode(Animation::FILL_MODE_NONE); | 961 anim->set_fill_mode(Animation::FILL_MODE_NONE); |
961 EXPECT_FALSE(anim->InEffect(TicksFromSecondsF(-1.0))); | 962 EXPECT_FALSE(anim->InEffect(TicksFromSecondsF(-1.0))); |
962 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); | 963 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); |
963 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); | 964 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); |
964 | 965 |
965 anim->set_fill_mode(Animation::FILL_MODE_FORWARDS); | 966 anim->set_fill_mode(Animation::FILL_MODE_FORWARDS); |
966 EXPECT_FALSE(anim->InEffect(TicksFromSecondsF(-1.0))); | 967 EXPECT_FALSE(anim->InEffect(TicksFromSecondsF(-1.0))); |
967 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); | 968 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); |
968 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); | 969 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); |
969 | 970 |
970 anim->set_fill_mode(Animation::FILL_MODE_BACKWARDS); | 971 anim->set_fill_mode(Animation::FILL_MODE_BACKWARDS); |
971 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(-1.0))); | 972 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(-1.0))); |
972 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); | 973 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); |
973 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); | 974 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); |
974 | 975 |
975 anim->set_fill_mode(Animation::FILL_MODE_BOTH); | 976 anim->set_fill_mode(Animation::FILL_MODE_BOTH); |
976 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(-1.0))); | 977 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(-1.0))); |
977 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); | 978 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); |
978 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); | 979 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); |
979 } | 980 } |
980 | 981 |
981 TEST(AnimationTest, InEffectFillModePlayback) { | 982 TEST(AnimationTest, InEffectFillModePlayback) { |
982 scoped_ptr<Animation> anim(CreateAnimation(1, 1, -1)); | 983 std::unique_ptr<Animation> anim(CreateAnimation(1, 1, -1)); |
983 anim->set_fill_mode(Animation::FILL_MODE_NONE); | 984 anim->set_fill_mode(Animation::FILL_MODE_NONE); |
984 EXPECT_FALSE(anim->InEffect(TicksFromSecondsF(-1.0))); | 985 EXPECT_FALSE(anim->InEffect(TicksFromSecondsF(-1.0))); |
985 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); | 986 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); |
986 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); | 987 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); |
987 | 988 |
988 anim->set_fill_mode(Animation::FILL_MODE_FORWARDS); | 989 anim->set_fill_mode(Animation::FILL_MODE_FORWARDS); |
989 EXPECT_FALSE(anim->InEffect(TicksFromSecondsF(-1.0))); | 990 EXPECT_FALSE(anim->InEffect(TicksFromSecondsF(-1.0))); |
990 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); | 991 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); |
991 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); | 992 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); |
992 | 993 |
993 anim->set_fill_mode(Animation::FILL_MODE_BACKWARDS); | 994 anim->set_fill_mode(Animation::FILL_MODE_BACKWARDS); |
994 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(-1.0))); | 995 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(-1.0))); |
995 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); | 996 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); |
996 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); | 997 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); |
997 | 998 |
998 anim->set_fill_mode(Animation::FILL_MODE_BOTH); | 999 anim->set_fill_mode(Animation::FILL_MODE_BOTH); |
999 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(-1.0))); | 1000 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(-1.0))); |
1000 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); | 1001 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(0.0))); |
1001 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); | 1002 EXPECT_TRUE(anim->InEffect(TicksFromSecondsF(1.0))); |
1002 } | 1003 } |
1003 | 1004 |
1004 } // namespace | 1005 } // namespace |
1005 } // namespace cc | 1006 } // namespace cc |
OLD | NEW |