| 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/keyframed_animation_curve.h" | 5 #include "cc/keyframed_animation_curve.h" |
| 6 | 6 |
| 7 #include "cc/transform_operations.h" |
| 7 #include "testing/gmock/include/gmock/gmock.h" | 8 #include "testing/gmock/include/gmock/gmock.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 9 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformOperati
ons.h" | 10 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformOperati
ons.h" |
| 10 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa
trix.h" | 11 #include "third_party/WebKit/Source/Platform/chromium/public/WebTransformationMa
trix.h" |
| 11 | 12 |
| 12 using WebKit::WebTransformationMatrix; | 13 using WebKit::WebTransformationMatrix; |
| 13 | 14 |
| 14 namespace cc { | 15 namespace cc { |
| 15 namespace { | 16 namespace { |
| 16 | 17 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 EXPECT_FLOAT_EQ(6, curve->getValue(1.5)); | 81 EXPECT_FLOAT_EQ(6, curve->getValue(1.5)); |
| 81 EXPECT_FLOAT_EQ(6, curve->getValue(2)); | 82 EXPECT_FLOAT_EQ(6, curve->getValue(2)); |
| 82 EXPECT_FLOAT_EQ(6, curve->getValue(3)); | 83 EXPECT_FLOAT_EQ(6, curve->getValue(3)); |
| 83 } | 84 } |
| 84 | 85 |
| 85 | 86 |
| 86 // Tests that a transform animation with one keyframe works as expected. | 87 // Tests that a transform animation with one keyframe works as expected. |
| 87 TEST(KeyframedAnimationCurveTest, OneTransformKeyframe) | 88 TEST(KeyframedAnimationCurveTest, OneTransformKeyframe) |
| 88 { | 89 { |
| 89 scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimati
onCurve::create()); | 90 scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimati
onCurve::create()); |
| 90 WebKit::WebTransformOperations operations; | 91 scoped_ptr<WebKit::WebTransformOperations> operations( |
| 91 operations.appendTranslate(2, 0, 0); | 92 TransformOperations::Create()); |
| 92 curve->addKeyframe(TransformKeyframe::create(0, operations, scoped_ptr<Timin
gFunction>())); | 93 operations->appendTranslate(2, 0, 0); |
| 94 curve->addKeyframe(TransformKeyframe::create(0, *operations, scoped_ptr<Timi
ngFunction>())); |
| 93 | 95 |
| 94 expectTranslateX(2, curve->getValue(-1)); | 96 expectTranslateX(2, curve->getValue(-1)); |
| 95 expectTranslateX(2, curve->getValue(0)); | 97 expectTranslateX(2, curve->getValue(0)); |
| 96 expectTranslateX(2, curve->getValue(0.5)); | 98 expectTranslateX(2, curve->getValue(0.5)); |
| 97 expectTranslateX(2, curve->getValue(1)); | 99 expectTranslateX(2, curve->getValue(1)); |
| 98 expectTranslateX(2, curve->getValue(2)); | 100 expectTranslateX(2, curve->getValue(2)); |
| 99 } | 101 } |
| 100 | 102 |
| 101 // Tests that a transform animation with two keyframes works as expected. | 103 // Tests that a transform animation with two keyframes works as expected. |
| 102 TEST(KeyframedAnimationCurveTest, TwoTransformKeyframe) | 104 TEST(KeyframedAnimationCurveTest, TwoTransformKeyframe) |
| 103 { | 105 { |
| 104 scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimati
onCurve::create()); | 106 scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimati
onCurve::create()); |
| 105 WebKit::WebTransformOperations operations1; | 107 scoped_ptr<WebKit::WebTransformOperations> operations1( |
| 106 operations1.appendTranslate(2, 0, 0); | 108 TransformOperations::Create()); |
| 107 WebKit::WebTransformOperations operations2; | 109 operations1->appendTranslate(2, 0, 0); |
| 108 operations2.appendTranslate(4, 0, 0); | 110 scoped_ptr<WebKit::WebTransformOperations> operations2( |
| 111 TransformOperations::Create()); |
| 112 operations2->appendTranslate(4, 0, 0); |
| 109 | 113 |
| 110 curve->addKeyframe(TransformKeyframe::create(0, operations1, scoped_ptr<Timi
ngFunction>())); | 114 curve->addKeyframe(TransformKeyframe::create(0, *operations1, scoped_ptr<Tim
ingFunction>())); |
| 111 curve->addKeyframe(TransformKeyframe::create(1, operations2, scoped_ptr<Timi
ngFunction>())); | 115 curve->addKeyframe(TransformKeyframe::create(1, *operations2, scoped_ptr<Tim
ingFunction>())); |
| 112 expectTranslateX(2, curve->getValue(-1)); | 116 expectTranslateX(2, curve->getValue(-1)); |
| 113 expectTranslateX(2, curve->getValue(0)); | 117 expectTranslateX(2, curve->getValue(0)); |
| 114 expectTranslateX(3, curve->getValue(0.5)); | 118 expectTranslateX(3, curve->getValue(0.5)); |
| 115 expectTranslateX(4, curve->getValue(1)); | 119 expectTranslateX(4, curve->getValue(1)); |
| 116 expectTranslateX(4, curve->getValue(2)); | 120 expectTranslateX(4, curve->getValue(2)); |
| 117 } | 121 } |
| 118 | 122 |
| 119 // Tests that a transform animation with three keyframes works as expected. | 123 // Tests that a transform animation with three keyframes works as expected. |
| 120 TEST(KeyframedAnimationCurveTest, ThreeTransformKeyframe) | 124 TEST(KeyframedAnimationCurveTest, ThreeTransformKeyframe) |
| 121 { | 125 { |
| 122 scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimati
onCurve::create()); | 126 scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimati
onCurve::create()); |
| 123 WebKit::WebTransformOperations operations1; | 127 scoped_ptr<WebKit::WebTransformOperations> operations1( |
| 124 operations1.appendTranslate(2, 0, 0); | 128 TransformOperations::Create()); |
| 125 WebKit::WebTransformOperations operations2; | 129 operations1->appendTranslate(2, 0, 0); |
| 126 operations2.appendTranslate(4, 0, 0); | 130 scoped_ptr<WebKit::WebTransformOperations> operations2( |
| 127 WebKit::WebTransformOperations operations3; | 131 TransformOperations::Create()); |
| 128 operations3.appendTranslate(8, 0, 0); | 132 operations2->appendTranslate(4, 0, 0); |
| 129 curve->addKeyframe(TransformKeyframe::create(0, operations1, scoped_ptr<Timi
ngFunction>())); | 133 scoped_ptr<WebKit::WebTransformOperations> operations3( |
| 130 curve->addKeyframe(TransformKeyframe::create(1, operations2, scoped_ptr<Timi
ngFunction>())); | 134 TransformOperations::Create()); |
| 131 curve->addKeyframe(TransformKeyframe::create(2, operations3, scoped_ptr<Timi
ngFunction>())); | 135 operations3->appendTranslate(8, 0, 0); |
| 136 curve->addKeyframe(TransformKeyframe::create(0, *operations1, scoped_ptr<Tim
ingFunction>())); |
| 137 curve->addKeyframe(TransformKeyframe::create(1, *operations2, scoped_ptr<Tim
ingFunction>())); |
| 138 curve->addKeyframe(TransformKeyframe::create(2, *operations3, scoped_ptr<Tim
ingFunction>())); |
| 132 expectTranslateX(2, curve->getValue(-1)); | 139 expectTranslateX(2, curve->getValue(-1)); |
| 133 expectTranslateX(2, curve->getValue(0)); | 140 expectTranslateX(2, curve->getValue(0)); |
| 134 expectTranslateX(3, curve->getValue(0.5)); | 141 expectTranslateX(3, curve->getValue(0.5)); |
| 135 expectTranslateX(4, curve->getValue(1)); | 142 expectTranslateX(4, curve->getValue(1)); |
| 136 expectTranslateX(6, curve->getValue(1.5)); | 143 expectTranslateX(6, curve->getValue(1.5)); |
| 137 expectTranslateX(8, curve->getValue(2)); | 144 expectTranslateX(8, curve->getValue(2)); |
| 138 expectTranslateX(8, curve->getValue(3)); | 145 expectTranslateX(8, curve->getValue(3)); |
| 139 } | 146 } |
| 140 | 147 |
| 141 // Tests that a transform animation with multiple keys at a given time works san
ely. | 148 // Tests that a transform animation with multiple keys at a given time works san
ely. |
| 142 TEST(KeyframedAnimationCurveTest, RepeatedTransformKeyTimes) | 149 TEST(KeyframedAnimationCurveTest, RepeatedTransformKeyTimes) |
| 143 { | 150 { |
| 144 scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimati
onCurve::create()); | 151 scoped_ptr<KeyframedTransformAnimationCurve> curve(KeyframedTransformAnimati
onCurve::create()); |
| 145 // A step function. | 152 // A step function. |
| 146 WebKit::WebTransformOperations operations1; | 153 scoped_ptr<WebKit::WebTransformOperations> operations1( |
| 147 operations1.appendTranslate(4, 0, 0); | 154 TransformOperations::Create()); |
| 148 WebKit::WebTransformOperations operations2; | 155 operations1->appendTranslate(4, 0, 0); |
| 149 operations2.appendTranslate(4, 0, 0); | 156 scoped_ptr<WebKit::WebTransformOperations> operations2( |
| 150 WebKit::WebTransformOperations operations3; | 157 TransformOperations::Create()); |
| 151 operations3.appendTranslate(6, 0, 0); | 158 operations2->appendTranslate(4, 0, 0); |
| 152 WebKit::WebTransformOperations operations4; | 159 scoped_ptr<WebKit::WebTransformOperations> operations3( |
| 153 operations4.appendTranslate(6, 0, 0); | 160 TransformOperations::Create()); |
| 154 curve->addKeyframe(TransformKeyframe::create(0, operations1, scoped_ptr<Timi
ngFunction>())); | 161 operations3->appendTranslate(6, 0, 0); |
| 155 curve->addKeyframe(TransformKeyframe::create(1, operations2, scoped_ptr<Timi
ngFunction>())); | 162 scoped_ptr<WebKit::WebTransformOperations> operations4( |
| 156 curve->addKeyframe(TransformKeyframe::create(1, operations3, scoped_ptr<Timi
ngFunction>())); | 163 TransformOperations::Create()); |
| 157 curve->addKeyframe(TransformKeyframe::create(2, operations4, scoped_ptr<Timi
ngFunction>())); | 164 operations4->appendTranslate(6, 0, 0); |
| 165 curve->addKeyframe(TransformKeyframe::create(0, *operations1, scoped_ptr<Tim
ingFunction>())); |
| 166 curve->addKeyframe(TransformKeyframe::create(1, *operations2, scoped_ptr<Tim
ingFunction>())); |
| 167 curve->addKeyframe(TransformKeyframe::create(1, *operations3, scoped_ptr<Tim
ingFunction>())); |
| 168 curve->addKeyframe(TransformKeyframe::create(2, *operations4, scoped_ptr<Tim
ingFunction>())); |
| 158 | 169 |
| 159 expectTranslateX(4, curve->getValue(-1)); | 170 expectTranslateX(4, curve->getValue(-1)); |
| 160 expectTranslateX(4, curve->getValue(0)); | 171 expectTranslateX(4, curve->getValue(0)); |
| 161 expectTranslateX(4, curve->getValue(0.5)); | 172 expectTranslateX(4, curve->getValue(0.5)); |
| 162 | 173 |
| 163 // There is a discontinuity at 1. Any value between 4 and 6 is valid. | 174 // There is a discontinuity at 1. Any value between 4 and 6 is valid. |
| 164 WebTransformationMatrix value = curve->getValue(1); | 175 WebTransformationMatrix value = curve->getValue(1); |
| 165 EXPECT_TRUE(value.m41() >= 4 && value.m41() <= 6); | 176 EXPECT_TRUE(value.m41() >= 4 && value.m41() <= 6); |
| 166 | 177 |
| 167 expectTranslateX(6, curve->getValue(1.5)); | 178 expectTranslateX(6, curve->getValue(1.5)); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 196 EXPECT_LT(0, curve->getValue(0.25)); | 207 EXPECT_LT(0, curve->getValue(0.25)); |
| 197 EXPECT_GT(0.25, curve->getValue(0.25)); | 208 EXPECT_GT(0.25, curve->getValue(0.25)); |
| 198 EXPECT_NEAR(curve->getValue(0.5), 0.5, 0.00015); | 209 EXPECT_NEAR(curve->getValue(0.5), 0.5, 0.00015); |
| 199 EXPECT_LT(0.75, curve->getValue(0.75)); | 210 EXPECT_LT(0.75, curve->getValue(0.75)); |
| 200 EXPECT_GT(1, curve->getValue(0.75)); | 211 EXPECT_GT(1, curve->getValue(0.75)); |
| 201 EXPECT_FLOAT_EQ(1, curve->getValue(1)); | 212 EXPECT_FLOAT_EQ(1, curve->getValue(1)); |
| 202 } | 213 } |
| 203 | 214 |
| 204 } // namespace | 215 } // namespace |
| 205 } // namespace cc | 216 } // namespace cc |
| OLD | NEW |