| Index: cc/animation/keyframed_animation_curve_unittest.cc
|
| diff --git a/cc/animation/keyframed_animation_curve_unittest.cc b/cc/animation/keyframed_animation_curve_unittest.cc
|
| index 71fd52196266da07aaffceb1fb9fc2b7f71165d8..314ce9da2fdb765d49fee9bd61f57814236b14a3 100644
|
| --- a/cc/animation/keyframed_animation_curve_unittest.cc
|
| +++ b/cc/animation/keyframed_animation_curve_unittest.cc
|
| @@ -29,13 +29,15 @@ TEST(KeyframedAnimationCurveTest, OneColorKeyFrame) {
|
| SkColor color = SkColorSetARGB(255, 255, 255, 255);
|
| scoped_ptr<KeyframedColorAnimationCurve> curve(
|
| KeyframedColorAnimationCurve::Create());
|
| - curve->AddKeyframe(ColorKeyframe::Create(0.0, color, nullptr));
|
| -
|
| - EXPECT_SKCOLOR_EQ(color, curve->GetValue(-1.f));
|
| - EXPECT_SKCOLOR_EQ(color, curve->GetValue(0.f));
|
| - EXPECT_SKCOLOR_EQ(color, curve->GetValue(0.5f));
|
| - EXPECT_SKCOLOR_EQ(color, curve->GetValue(1.f));
|
| - EXPECT_SKCOLOR_EQ(color, curve->GetValue(2.f));
|
| + curve->AddKeyframe(ColorKeyframe::Create(base::TimeDelta(), color, nullptr));
|
| +
|
| + EXPECT_SKCOLOR_EQ(color,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_SKCOLOR_EQ(color, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_SKCOLOR_EQ(color,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_SKCOLOR_EQ(color, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_SKCOLOR_EQ(color, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that a color animation with two keyframes works as expected.
|
| @@ -45,14 +47,21 @@ TEST(KeyframedAnimationCurveTest, TwoColorKeyFrame) {
|
| SkColor color_midpoint = gfx::Tween::ColorValueBetween(0.5, color_a, color_b);
|
| scoped_ptr<KeyframedColorAnimationCurve> curve(
|
| KeyframedColorAnimationCurve::Create());
|
| - curve->AddKeyframe(ColorKeyframe::Create(0.0, color_a, nullptr));
|
| - curve->AddKeyframe(ColorKeyframe::Create(1.0, color_b, nullptr));
|
| -
|
| - EXPECT_SKCOLOR_EQ(color_a, curve->GetValue(-1.f));
|
| - EXPECT_SKCOLOR_EQ(color_a, curve->GetValue(0.f));
|
| - EXPECT_SKCOLOR_EQ(color_midpoint, curve->GetValue(0.5f));
|
| - EXPECT_SKCOLOR_EQ(color_b, curve->GetValue(1.f));
|
| - EXPECT_SKCOLOR_EQ(color_b, curve->GetValue(2.f));
|
| + curve->AddKeyframe(
|
| + ColorKeyframe::Create(base::TimeDelta(), color_a, nullptr));
|
| + curve->AddKeyframe(ColorKeyframe::Create(base::TimeDelta::FromSecondsD(1.0),
|
| + color_b, nullptr));
|
| +
|
| + EXPECT_SKCOLOR_EQ(color_a,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_SKCOLOR_EQ(color_a,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_SKCOLOR_EQ(color_midpoint,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_SKCOLOR_EQ(color_b,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_SKCOLOR_EQ(color_b,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that a color animation with three keyframes works as expected.
|
| @@ -66,17 +75,27 @@ TEST(KeyframedAnimationCurveTest, ThreeColorKeyFrame) {
|
| gfx::Tween::ColorValueBetween(0.5, color_b, color_c);
|
| scoped_ptr<KeyframedColorAnimationCurve> curve(
|
| KeyframedColorAnimationCurve::Create());
|
| - curve->AddKeyframe(ColorKeyframe::Create(0.0, color_a, nullptr));
|
| - curve->AddKeyframe(ColorKeyframe::Create(1.0, color_b, nullptr));
|
| - curve->AddKeyframe(ColorKeyframe::Create(2.0, color_c, nullptr));
|
| -
|
| - EXPECT_SKCOLOR_EQ(color_a, curve->GetValue(-1.f));
|
| - EXPECT_SKCOLOR_EQ(color_a, curve->GetValue(0.f));
|
| - EXPECT_SKCOLOR_EQ(color_midpoint1, curve->GetValue(0.5f));
|
| - EXPECT_SKCOLOR_EQ(color_b, curve->GetValue(1.f));
|
| - EXPECT_SKCOLOR_EQ(color_midpoint2, curve->GetValue(1.5f));
|
| - EXPECT_SKCOLOR_EQ(color_c, curve->GetValue(2.f));
|
| - EXPECT_SKCOLOR_EQ(color_c, curve->GetValue(3.f));
|
| + curve->AddKeyframe(
|
| + ColorKeyframe::Create(base::TimeDelta(), color_a, nullptr));
|
| + curve->AddKeyframe(ColorKeyframe::Create(base::TimeDelta::FromSecondsD(1.0),
|
| + color_b, nullptr));
|
| + curve->AddKeyframe(ColorKeyframe::Create(base::TimeDelta::FromSecondsD(2.0),
|
| + color_c, nullptr));
|
| +
|
| + EXPECT_SKCOLOR_EQ(color_a,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_SKCOLOR_EQ(color_a,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_SKCOLOR_EQ(color_midpoint1,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_SKCOLOR_EQ(color_b,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_SKCOLOR_EQ(color_midpoint2,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + EXPECT_SKCOLOR_EQ(color_c,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + EXPECT_SKCOLOR_EQ(color_c,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that a colro animation with multiple keys at a given time works sanely.
|
| @@ -86,87 +105,103 @@ TEST(KeyframedAnimationCurveTest, RepeatedColorKeyFrame) {
|
|
|
| scoped_ptr<KeyframedColorAnimationCurve> curve(
|
| KeyframedColorAnimationCurve::Create());
|
| - curve->AddKeyframe(ColorKeyframe::Create(0.0, color_a, nullptr));
|
| - curve->AddKeyframe(ColorKeyframe::Create(1.0, color_a, nullptr));
|
| - curve->AddKeyframe(ColorKeyframe::Create(1.0, color_b, nullptr));
|
| - curve->AddKeyframe(ColorKeyframe::Create(2.0, color_b, nullptr));
|
| -
|
| - EXPECT_SKCOLOR_EQ(color_a, curve->GetValue(-1.f));
|
| - EXPECT_SKCOLOR_EQ(color_a, curve->GetValue(0.f));
|
| - EXPECT_SKCOLOR_EQ(color_a, curve->GetValue(0.5f));
|
| -
|
| - SkColor value = curve->GetValue(1.0f);
|
| + curve->AddKeyframe(
|
| + ColorKeyframe::Create(base::TimeDelta(), color_a, nullptr));
|
| + curve->AddKeyframe(ColorKeyframe::Create(base::TimeDelta::FromSecondsD(1.0),
|
| + color_a, nullptr));
|
| + curve->AddKeyframe(ColorKeyframe::Create(base::TimeDelta::FromSecondsD(1.0),
|
| + color_b, nullptr));
|
| + curve->AddKeyframe(ColorKeyframe::Create(base::TimeDelta::FromSecondsD(2.0),
|
| + color_b, nullptr));
|
| +
|
| + EXPECT_SKCOLOR_EQ(color_a,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_SKCOLOR_EQ(color_a,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_SKCOLOR_EQ(color_a,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| +
|
| + SkColor value = curve->GetValue(base::TimeDelta::FromSecondsD(1.0f));
|
| EXPECT_EQ(255u, SkColorGetA(value));
|
| int red_value = SkColorGetR(value);
|
| EXPECT_LE(64, red_value);
|
| EXPECT_GE(192, red_value);
|
|
|
| - EXPECT_SKCOLOR_EQ(color_b, curve->GetValue(1.5f));
|
| - EXPECT_SKCOLOR_EQ(color_b, curve->GetValue(2.f));
|
| - EXPECT_SKCOLOR_EQ(color_b, curve->GetValue(3.f));
|
| + EXPECT_SKCOLOR_EQ(color_b,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + EXPECT_SKCOLOR_EQ(color_b,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + EXPECT_SKCOLOR_EQ(color_b,
|
| + curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that a float animation with one keyframe works as expected.
|
| TEST(KeyframedAnimationCurveTest, OneFloatKeyframe) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| - curve->AddKeyframe(FloatKeyframe::Create(0.0, 2.f, nullptr));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(-1.f));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(0.f));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(0.5f));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(1.f));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(2.f));
|
| + curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 2.f, nullptr));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that a float animation with two keyframes works as expected.
|
| TEST(KeyframedAnimationCurveTest, TwoFloatKeyframe) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| - curve->AddKeyframe(FloatKeyframe::Create(0.0, 2.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 4.f, nullptr));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(-1.f));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(0.f));
|
| - EXPECT_FLOAT_EQ(3.f, curve->GetValue(0.5f));
|
| - EXPECT_FLOAT_EQ(4.f, curve->GetValue(1.f));
|
| - EXPECT_FLOAT_EQ(4.f, curve->GetValue(2.f));
|
| + curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 2.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 4.f, nullptr));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_FLOAT_EQ(3.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_FLOAT_EQ(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_FLOAT_EQ(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that a float animation with three keyframes works as expected.
|
| TEST(KeyframedAnimationCurveTest, ThreeFloatKeyframe) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| - curve->AddKeyframe(FloatKeyframe::Create(0.0, 2.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 4.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(2.0, 8.f, nullptr));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(-1.f));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(0.f));
|
| - EXPECT_FLOAT_EQ(3.f, curve->GetValue(0.5f));
|
| - EXPECT_FLOAT_EQ(4.f, curve->GetValue(1.f));
|
| - EXPECT_FLOAT_EQ(6.f, curve->GetValue(1.5f));
|
| - EXPECT_FLOAT_EQ(8.f, curve->GetValue(2.f));
|
| - EXPECT_FLOAT_EQ(8.f, curve->GetValue(3.f));
|
| + curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 2.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 4.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(2.0), 8.f, nullptr));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_FLOAT_EQ(3.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_FLOAT_EQ(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_FLOAT_EQ(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + EXPECT_FLOAT_EQ(8.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + EXPECT_FLOAT_EQ(8.f, curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that a float animation with multiple keys at a given time works sanely.
|
| TEST(KeyframedAnimationCurveTest, RepeatedFloatKeyTimes) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| - curve->AddKeyframe(FloatKeyframe::Create(0.0, 4.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 4.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 6.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(2.0, 6.f, nullptr));
|
| -
|
| - EXPECT_FLOAT_EQ(4.f, curve->GetValue(-1.f));
|
| - EXPECT_FLOAT_EQ(4.f, curve->GetValue(0.f));
|
| - EXPECT_FLOAT_EQ(4.f, curve->GetValue(0.5f));
|
| + curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 4.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 4.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 6.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(2.0), 6.f, nullptr));
|
| +
|
| + EXPECT_FLOAT_EQ(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_FLOAT_EQ(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_FLOAT_EQ(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
|
|
| // There is a discontinuity at 1. Any value between 4 and 6 is valid.
|
| - float value = curve->GetValue(1.f);
|
| + float value = curve->GetValue(base::TimeDelta::FromSecondsD(1.f));
|
| EXPECT_TRUE(value >= 4 && value <= 6);
|
|
|
| - EXPECT_FLOAT_EQ(6.f, curve->GetValue(1.5f));
|
| - EXPECT_FLOAT_EQ(6.f, curve->GetValue(2.f));
|
| - EXPECT_FLOAT_EQ(6.f, curve->GetValue(3.f));
|
| + EXPECT_FLOAT_EQ(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + EXPECT_FLOAT_EQ(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + EXPECT_FLOAT_EQ(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that a transform animation with one keyframe works as expected.
|
| @@ -175,13 +210,14 @@ TEST(KeyframedAnimationCurveTest, OneTransformKeyframe) {
|
| KeyframedTransformAnimationCurve::Create());
|
| TransformOperations operations;
|
| operations.AppendTranslate(2.f, 0.f, 0.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.f, operations, nullptr));
|
| -
|
| - ExpectTranslateX(2.f, curve->GetValue(-1.f));
|
| - ExpectTranslateX(2.f, curve->GetValue(0.f));
|
| - ExpectTranslateX(2.f, curve->GetValue(0.5f));
|
| - ExpectTranslateX(2.f, curve->GetValue(1.f));
|
| - ExpectTranslateX(2.f, curve->GetValue(2.f));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta(), operations, nullptr));
|
| +
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that a transform animation with two keyframes works as expected.
|
| @@ -193,13 +229,15 @@ TEST(KeyframedAnimationCurveTest, TwoTransformKeyframe) {
|
| TransformOperations operations2;
|
| operations2.AppendTranslate(4.f, 0.f, 0.f);
|
|
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.f, operations1, nullptr));
|
| - curve->AddKeyframe(TransformKeyframe::Create(1.f, operations2, nullptr));
|
| - ExpectTranslateX(2.f, curve->GetValue(-1.f));
|
| - ExpectTranslateX(2.f, curve->GetValue(0.f));
|
| - ExpectTranslateX(3.f, curve->GetValue(0.5f));
|
| - ExpectTranslateX(4.f, curve->GetValue(1.f));
|
| - ExpectTranslateX(4.f, curve->GetValue(2.f));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(1.0), operations2, nullptr));
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + ExpectTranslateX(3.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + ExpectTranslateX(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + ExpectTranslateX(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that a transform animation with three keyframes works as expected.
|
| @@ -212,16 +250,19 @@ TEST(KeyframedAnimationCurveTest, ThreeTransformKeyframe) {
|
| operations2.AppendTranslate(4.f, 0.f, 0.f);
|
| TransformOperations operations3;
|
| operations3.AppendTranslate(8.f, 0.f, 0.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.f, operations1, nullptr));
|
| - curve->AddKeyframe(TransformKeyframe::Create(1.f, operations2, nullptr));
|
| - curve->AddKeyframe(TransformKeyframe::Create(2.f, operations3, nullptr));
|
| - ExpectTranslateX(2.f, curve->GetValue(-1.f));
|
| - ExpectTranslateX(2.f, curve->GetValue(0.f));
|
| - ExpectTranslateX(3.f, curve->GetValue(0.5f));
|
| - ExpectTranslateX(4.f, curve->GetValue(1.f));
|
| - ExpectTranslateX(6.f, curve->GetValue(1.5f));
|
| - ExpectTranslateX(8.f, curve->GetValue(2.f));
|
| - ExpectTranslateX(8.f, curve->GetValue(3.f));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(1.0), operations2, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(2.0), operations3, nullptr));
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + ExpectTranslateX(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + ExpectTranslateX(3.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + ExpectTranslateX(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + ExpectTranslateX(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + ExpectTranslateX(8.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + ExpectTranslateX(8.f, curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that a transform animation with multiple keys at a given time works
|
| @@ -238,23 +279,27 @@ TEST(KeyframedAnimationCurveTest, RepeatedTransformKeyTimes) {
|
| operations3.AppendTranslate(6.f, 0.f, 0.f);
|
| TransformOperations operations4;
|
| operations4.AppendTranslate(6.f, 0.f, 0.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.f, operations1, nullptr));
|
| - curve->AddKeyframe(TransformKeyframe::Create(1.f, operations2, nullptr));
|
| - curve->AddKeyframe(TransformKeyframe::Create(1.f, operations3, nullptr));
|
| - curve->AddKeyframe(TransformKeyframe::Create(2.f, operations4, nullptr));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(1.0), operations2, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(1.0), operations3, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(2.0), operations4, nullptr));
|
|
|
| - ExpectTranslateX(4.f, curve->GetValue(-1.f));
|
| - ExpectTranslateX(4.f, curve->GetValue(0.f));
|
| - ExpectTranslateX(4.f, curve->GetValue(0.5f));
|
| + ExpectTranslateX(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + ExpectTranslateX(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + ExpectTranslateX(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
|
|
| // There is a discontinuity at 1. Any value between 4 and 6 is valid.
|
| - gfx::Transform value = curve->GetValue(1.f);
|
| + gfx::Transform value = curve->GetValue(base::TimeDelta::FromSecondsD(1.f));
|
| EXPECT_GE(value.matrix().get(0, 3), 4.f);
|
| EXPECT_LE(value.matrix().get(0, 3), 6.f);
|
|
|
| - ExpectTranslateX(6.f, curve->GetValue(1.5f));
|
| - ExpectTranslateX(6.f, curve->GetValue(2.f));
|
| - ExpectTranslateX(6.f, curve->GetValue(3.f));
|
| + ExpectTranslateX(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + ExpectTranslateX(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + ExpectTranslateX(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that a filter animation with one keyframe works as expected.
|
| @@ -263,13 +308,14 @@ TEST(KeyframedAnimationCurveTest, OneFilterKeyframe) {
|
| KeyframedFilterAnimationCurve::Create());
|
| FilterOperations operations;
|
| operations.Append(FilterOperation::CreateBrightnessFilter(2.f));
|
| - curve->AddKeyframe(FilterKeyframe::Create(0.f, operations, nullptr));
|
| -
|
| - ExpectBrightness(2.f, curve->GetValue(-1.f));
|
| - ExpectBrightness(2.f, curve->GetValue(0.f));
|
| - ExpectBrightness(2.f, curve->GetValue(0.5f));
|
| - ExpectBrightness(2.f, curve->GetValue(1.f));
|
| - ExpectBrightness(2.f, curve->GetValue(2.f));
|
| + curve->AddKeyframe(
|
| + FilterKeyframe::Create(base::TimeDelta(), operations, nullptr));
|
| +
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that a filter animation with two keyframes works as expected.
|
| @@ -281,13 +327,15 @@ TEST(KeyframedAnimationCurveTest, TwoFilterKeyframe) {
|
| FilterOperations operations2;
|
| operations2.Append(FilterOperation::CreateBrightnessFilter(4.f));
|
|
|
| - curve->AddKeyframe(FilterKeyframe::Create(0.f, operations1, nullptr));
|
| - curve->AddKeyframe(FilterKeyframe::Create(1.f, operations2, nullptr));
|
| - ExpectBrightness(2.f, curve->GetValue(-1.f));
|
| - ExpectBrightness(2.f, curve->GetValue(0.f));
|
| - ExpectBrightness(3.f, curve->GetValue(0.5f));
|
| - ExpectBrightness(4.f, curve->GetValue(1.f));
|
| - ExpectBrightness(4.f, curve->GetValue(2.f));
|
| + curve->AddKeyframe(
|
| + FilterKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| + curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(1.f),
|
| + operations2, nullptr));
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + ExpectBrightness(3.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + ExpectBrightness(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + ExpectBrightness(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that a filter animation with three keyframes works as expected.
|
| @@ -300,16 +348,19 @@ TEST(KeyframedAnimationCurveTest, ThreeFilterKeyframe) {
|
| operations2.Append(FilterOperation::CreateBrightnessFilter(4.f));
|
| FilterOperations operations3;
|
| operations3.Append(FilterOperation::CreateBrightnessFilter(8.f));
|
| - curve->AddKeyframe(FilterKeyframe::Create(0.f, operations1, nullptr));
|
| - curve->AddKeyframe(FilterKeyframe::Create(1.f, operations2, nullptr));
|
| - curve->AddKeyframe(FilterKeyframe::Create(2.f, operations3, nullptr));
|
| - ExpectBrightness(2.f, curve->GetValue(-1.f));
|
| - ExpectBrightness(2.f, curve->GetValue(0.f));
|
| - ExpectBrightness(3.f, curve->GetValue(0.5f));
|
| - ExpectBrightness(4.f, curve->GetValue(1.f));
|
| - ExpectBrightness(6.f, curve->GetValue(1.5f));
|
| - ExpectBrightness(8.f, curve->GetValue(2.f));
|
| - ExpectBrightness(8.f, curve->GetValue(3.f));
|
| + curve->AddKeyframe(
|
| + FilterKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| + curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(1.f),
|
| + operations2, nullptr));
|
| + curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(2.f),
|
| + operations3, nullptr));
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + ExpectBrightness(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + ExpectBrightness(3.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + ExpectBrightness(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + ExpectBrightness(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + ExpectBrightness(8.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + ExpectBrightness(8.f, curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that a filter animation with multiple keys at a given time works
|
| @@ -326,41 +377,47 @@ TEST(KeyframedAnimationCurveTest, RepeatedFilterKeyTimes) {
|
| operations3.Append(FilterOperation::CreateBrightnessFilter(6.f));
|
| FilterOperations operations4;
|
| operations4.Append(FilterOperation::CreateBrightnessFilter(6.f));
|
| - curve->AddKeyframe(FilterKeyframe::Create(0.f, operations1, nullptr));
|
| - curve->AddKeyframe(FilterKeyframe::Create(1.f, operations2, nullptr));
|
| - curve->AddKeyframe(FilterKeyframe::Create(1.f, operations3, nullptr));
|
| - curve->AddKeyframe(FilterKeyframe::Create(2.f, operations4, nullptr));
|
| -
|
| - ExpectBrightness(4.f, curve->GetValue(-1.f));
|
| - ExpectBrightness(4.f, curve->GetValue(0.f));
|
| - ExpectBrightness(4.f, curve->GetValue(0.5f));
|
| + curve->AddKeyframe(
|
| + FilterKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| + curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(1.f),
|
| + operations2, nullptr));
|
| + curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(1.f),
|
| + operations3, nullptr));
|
| + curve->AddKeyframe(FilterKeyframe::Create(base::TimeDelta::FromSecondsD(2.f),
|
| + operations4, nullptr));
|
| +
|
| + ExpectBrightness(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + ExpectBrightness(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + ExpectBrightness(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
|
|
| // There is a discontinuity at 1. Any value between 4 and 6 is valid.
|
| - FilterOperations value = curve->GetValue(1.f);
|
| + FilterOperations value = curve->GetValue(base::TimeDelta::FromSecondsD(1.f));
|
| EXPECT_EQ(1u, value.size());
|
| EXPECT_EQ(FilterOperation::BRIGHTNESS, value.at(0).type());
|
| EXPECT_GE(value.at(0).amount(), 4);
|
| EXPECT_LE(value.at(0).amount(), 6);
|
|
|
| - ExpectBrightness(6.f, curve->GetValue(1.5f));
|
| - ExpectBrightness(6.f, curve->GetValue(2.f));
|
| - ExpectBrightness(6.f, curve->GetValue(3.f));
|
| + ExpectBrightness(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + ExpectBrightness(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + ExpectBrightness(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that the keyframes may be added out of order.
|
| TEST(KeyframedAnimationCurveTest, UnsortedKeyframes) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| - curve->AddKeyframe(FloatKeyframe::Create(2.0, 8.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(0.0, 2.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 4.f, nullptr));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(-1.f));
|
| - EXPECT_FLOAT_EQ(2.f, curve->GetValue(0.f));
|
| - EXPECT_FLOAT_EQ(3.f, curve->GetValue(0.5f));
|
| - EXPECT_FLOAT_EQ(4.f, curve->GetValue(1.f));
|
| - EXPECT_FLOAT_EQ(6.f, curve->GetValue(1.5f));
|
| - EXPECT_FLOAT_EQ(8.f, curve->GetValue(2.f));
|
| - EXPECT_FLOAT_EQ(8.f, curve->GetValue(3.f));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(2.f), 8.f, nullptr));
|
| + curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 2.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.f), 4.f, nullptr));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_FLOAT_EQ(2.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_FLOAT_EQ(3.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_FLOAT_EQ(4.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_FLOAT_EQ(6.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.5f)));
|
| + EXPECT_FLOAT_EQ(8.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + EXPECT_FLOAT_EQ(8.f, curve->GetValue(base::TimeDelta::FromSecondsD(3.f)));
|
| }
|
|
|
| // Tests that a cubic bezier timing function works as expected.
|
| @@ -368,16 +425,19 @@ TEST(KeyframedAnimationCurveTest, CubicBezierTimingFunction) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| curve->AddKeyframe(FloatKeyframe::Create(
|
| - 0.0, 0.f, CubicBezierTimingFunction::Create(0.25f, 0.f, 0.75f, 1.f)));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 1.f, nullptr));
|
| -
|
| - EXPECT_FLOAT_EQ(0.f, curve->GetValue(0.f));
|
| - EXPECT_LT(0.f, curve->GetValue(0.25f));
|
| - EXPECT_GT(0.25f, curve->GetValue(0.25f));
|
| - EXPECT_NEAR(curve->GetValue(0.5f), 0.5f, 0.00015f);
|
| - EXPECT_LT(0.75f, curve->GetValue(0.75f));
|
| - EXPECT_GT(1.f, curve->GetValue(0.75f));
|
| - EXPECT_FLOAT_EQ(1.f, curve->GetValue(1.f));
|
| + base::TimeDelta(), 0.f,
|
| + CubicBezierTimingFunction::Create(0.25f, 0.f, 0.75f, 1.f)));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 1.f, nullptr));
|
| +
|
| + EXPECT_FLOAT_EQ(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_LT(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.25f)));
|
| + EXPECT_GT(0.25f, curve->GetValue(base::TimeDelta::FromSecondsD(0.25f)));
|
| + EXPECT_NEAR(curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)), 0.5f,
|
| + 0.00015f);
|
| + EXPECT_LT(0.75f, curve->GetValue(base::TimeDelta::FromSecondsD(0.75f)));
|
| + EXPECT_GT(1.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.75f)));
|
| + EXPECT_FLOAT_EQ(1.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| }
|
|
|
| // Tests that animated bounds are computed as expected.
|
| @@ -386,13 +446,16 @@ TEST(KeyframedAnimationCurveTest, AnimatedBounds) {
|
| KeyframedTransformAnimationCurve::Create());
|
|
|
| TransformOperations operations1;
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.0, operations1, nullptr));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| operations1.AppendTranslate(2.0, 3.0, -1.0);
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.5, operations1, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(0.5f), operations1, nullptr));
|
| TransformOperations operations2;
|
| operations2.AppendTranslate(4.0, 1.0, 2.0);
|
| - curve->AddKeyframe(TransformKeyframe::Create(
|
| - 1.0, operations2, EaseTimingFunction::Create()));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta::FromSecondsD(1.f), operations2,
|
| + EaseTimingFunction::Create()));
|
|
|
| gfx::BoxF box(2.f, 3.f, 4.f, 1.f, 3.f, 2.f);
|
| gfx::BoxF bounds;
|
| @@ -408,23 +471,27 @@ TEST(KeyframedAnimationCurveTest, AffectsScale) {
|
| KeyframedTransformAnimationCurve::Create());
|
|
|
| TransformOperations operations1;
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.0, operations1, nullptr));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| operations1.AppendTranslate(2.0, 3.0, -1.0);
|
| TransformOperations operations2;
|
| operations2.AppendTranslate(4.0, 1.0, 2.0);
|
| - curve->AddKeyframe(TransformKeyframe::Create(1.0, operations2, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(1.f), operations2, nullptr));
|
|
|
| EXPECT_FALSE(curve->AffectsScale());
|
|
|
| TransformOperations operations3;
|
| operations3.AppendScale(2.f, 2.f, 2.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(2.0, operations3, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(2.f), operations3, nullptr));
|
|
|
| EXPECT_TRUE(curve->AffectsScale());
|
|
|
| TransformOperations operations4;
|
| operations3.AppendTranslate(2.f, 2.f, 2.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(3.0, operations4, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(3.f), operations4, nullptr));
|
|
|
| EXPECT_TRUE(curve->AffectsScale());
|
| }
|
| @@ -435,23 +502,27 @@ TEST(KeyframedAnimationCurveTest, IsTranslation) {
|
| KeyframedTransformAnimationCurve::Create());
|
|
|
| TransformOperations operations1;
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.0, operations1, nullptr));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| operations1.AppendTranslate(2.0, 3.0, -1.0);
|
| TransformOperations operations2;
|
| operations2.AppendTranslate(4.0, 1.0, 2.0);
|
| - curve->AddKeyframe(TransformKeyframe::Create(1.0, operations2, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(1.f), operations2, nullptr));
|
|
|
| EXPECT_TRUE(curve->IsTranslation());
|
|
|
| TransformOperations operations3;
|
| operations3.AppendScale(2.f, 2.f, 2.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(2.0, operations3, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(2.f), operations3, nullptr));
|
|
|
| EXPECT_FALSE(curve->IsTranslation());
|
|
|
| TransformOperations operations4;
|
| operations3.AppendTranslate(2.f, 2.f, 2.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(3.0, operations4, nullptr));
|
| + curve->AddKeyframe(TransformKeyframe::Create(
|
| + base::TimeDelta::FromSecondsD(3.f), operations4, nullptr));
|
|
|
| EXPECT_FALSE(curve->IsTranslation());
|
| }
|
| @@ -462,10 +533,12 @@ TEST(KeyframedAnimationCurveTest, MaximumTargetScale) {
|
| KeyframedTransformAnimationCurve::Create());
|
|
|
| TransformOperations operations1;
|
| - curve->AddKeyframe(TransformKeyframe::Create(0.0, operations1, nullptr));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta(), operations1, nullptr));
|
| operations1.AppendScale(2.f, -3.f, 1.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(
|
| - 1.0, operations1, EaseTimingFunction::Create()));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta::FromSecondsD(1.f), operations1,
|
| + EaseTimingFunction::Create()));
|
|
|
| float maximum_scale = 0.f;
|
| EXPECT_TRUE(curve->MaximumTargetScale(true, &maximum_scale));
|
| @@ -473,16 +546,18 @@ TEST(KeyframedAnimationCurveTest, MaximumTargetScale) {
|
|
|
| TransformOperations operations2;
|
| operations2.AppendScale(6.f, 3.f, 2.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(
|
| - 2.0, operations2, EaseTimingFunction::Create()));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta::FromSecondsD(2.f), operations2,
|
| + EaseTimingFunction::Create()));
|
|
|
| EXPECT_TRUE(curve->MaximumTargetScale(true, &maximum_scale));
|
| EXPECT_EQ(6.f, maximum_scale);
|
|
|
| TransformOperations operations3;
|
| operations3.AppendRotate(1.f, 0.f, 0.f, 90.f);
|
| - curve->AddKeyframe(TransformKeyframe::Create(
|
| - 3.0, operations3, EaseTimingFunction::Create()));
|
| + curve->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta::FromSecondsD(3.f), operations3,
|
| + EaseTimingFunction::Create()));
|
|
|
| EXPECT_FALSE(curve->MaximumTargetScale(true, &maximum_scale));
|
|
|
| @@ -492,12 +567,13 @@ TEST(KeyframedAnimationCurveTest, MaximumTargetScale) {
|
|
|
| TransformOperations operations4;
|
| operations4.AppendScale(0.4f, 0.2f, 0.6f);
|
| - curve2->AddKeyframe(TransformKeyframe::Create(
|
| - 0.0, operations4, EaseTimingFunction::Create()));
|
| + curve2->AddKeyframe(TransformKeyframe::Create(base::TimeDelta(), operations4,
|
| + EaseTimingFunction::Create()));
|
| TransformOperations operations5;
|
| operations5.AppendScale(0.5f, 0.3f, -0.8f);
|
| - curve2->AddKeyframe(TransformKeyframe::Create(
|
| - 1.0, operations5, EaseTimingFunction::Create()));
|
| + curve2->AddKeyframe(
|
| + TransformKeyframe::Create(base::TimeDelta::FromSecondsD(1.f), operations5,
|
| + EaseTimingFunction::Create()));
|
|
|
| EXPECT_TRUE(curve2->MaximumTargetScale(true, &maximum_scale));
|
| EXPECT_EQ(0.8f, maximum_scale);
|
| @@ -510,17 +586,20 @@ TEST(KeyframedAnimationCurveTest, MaximumTargetScale) {
|
| TEST(KeyframedAnimationCurveTest, CurveTiming) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| - curve->AddKeyframe(FloatKeyframe::Create(0.0, 0.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 1.f, nullptr));
|
| + curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 0.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.f), 1.f, nullptr));
|
| curve->SetTimingFunction(
|
| CubicBezierTimingFunction::Create(0.75f, 0.f, 0.25f, 1.f).Pass());
|
| - EXPECT_FLOAT_EQ(0.f, curve->GetValue(-1.f));
|
| - EXPECT_FLOAT_EQ(0.f, curve->GetValue(0.f));
|
| - EXPECT_NEAR(0.05f, curve->GetValue(0.25f), 0.005f);
|
| - EXPECT_FLOAT_EQ(0.5f, curve->GetValue(0.5f));
|
| - EXPECT_NEAR(0.95f, curve->GetValue(0.75f), 0.005f);
|
| - EXPECT_FLOAT_EQ(1.f, curve->GetValue(1.f));
|
| - EXPECT_FLOAT_EQ(1.f, curve->GetValue(2.f));
|
| + EXPECT_FLOAT_EQ(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_FLOAT_EQ(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_NEAR(0.05f, curve->GetValue(base::TimeDelta::FromSecondsD(0.25f)),
|
| + 0.005f);
|
| + EXPECT_FLOAT_EQ(0.5f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_NEAR(0.95f, curve->GetValue(base::TimeDelta::FromSecondsD(0.75f)),
|
| + 0.005f);
|
| + EXPECT_FLOAT_EQ(1.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_FLOAT_EQ(1.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that an animation with a curve and keyframe timing function works as
|
| @@ -529,22 +608,26 @@ TEST(KeyframedAnimationCurveTest, CurveAndKeyframeTiming) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| curve->AddKeyframe(FloatKeyframe::Create(
|
| - 0.0,
|
| - 0.f,
|
| + base::TimeDelta(), 0.f,
|
| CubicBezierTimingFunction::Create(0.35f, 0.f, 0.65f, 1.f).Pass()));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 1.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.f), 1.f, nullptr));
|
| // Curve timing function producing outputs outside of range [0,1].
|
| curve->SetTimingFunction(
|
| CubicBezierTimingFunction::Create(0.5f, -0.5f, 0.5f, 1.5f).Pass());
|
| - EXPECT_FLOAT_EQ(0.f, curve->GetValue(-1.f));
|
| - EXPECT_FLOAT_EQ(0.f, curve->GetValue(0.f));
|
| - EXPECT_FLOAT_EQ(0.f, curve->GetValue(0.25f)); // Clamped. c(.25) < 0
|
| - EXPECT_NEAR(0.17f, curve->GetValue(0.42f), 0.005f); // c(.42)=.27, k(.27)=.17
|
| - EXPECT_FLOAT_EQ(0.5f, curve->GetValue(0.5f));
|
| - EXPECT_NEAR(0.83f, curve->GetValue(0.58f), 0.005f); // c(.58)=.73, k(.73)=.83
|
| - EXPECT_FLOAT_EQ(1.f, curve->GetValue(0.75f)); // Clamped. c(.75) > 1
|
| - EXPECT_FLOAT_EQ(1.f, curve->GetValue(1.f));
|
| - EXPECT_FLOAT_EQ(1.f, curve->GetValue(2.f));
|
| + EXPECT_FLOAT_EQ(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_FLOAT_EQ(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_FLOAT_EQ(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(
|
| + 0.25f))); // Clamped. c(.25) < 0
|
| + EXPECT_NEAR(0.17f, curve->GetValue(base::TimeDelta::FromSecondsD(0.42f)),
|
| + 0.005f); // c(.42)=.27, k(.27)=.17
|
| + EXPECT_FLOAT_EQ(0.5f, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f)));
|
| + EXPECT_NEAR(0.83f, curve->GetValue(base::TimeDelta::FromSecondsD(0.58f)),
|
| + 0.005f); // c(.58)=.73, k(.73)=.83
|
| + EXPECT_FLOAT_EQ(1.f, curve->GetValue(base::TimeDelta::FromSecondsD(
|
| + 0.75f))); // Clamped. c(.75) > 1
|
| + EXPECT_FLOAT_EQ(1.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)));
|
| + EXPECT_FLOAT_EQ(1.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| }
|
|
|
| // Tests that an animation with a curve timing function and multiple keyframes
|
| @@ -552,21 +635,28 @@ TEST(KeyframedAnimationCurveTest, CurveAndKeyframeTiming) {
|
| TEST(KeyframedAnimationCurveTest, CurveTimingMultipleKeyframes) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| - curve->AddKeyframe(FloatKeyframe::Create(0.0, 0.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 1.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(2.0, 3.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(3.0, 6.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(4.0, 9.f, nullptr));
|
| + curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 0.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.f), 1.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(2.f), 3.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(3.f), 6.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(4.f), 9.f, nullptr));
|
| curve->SetTimingFunction(
|
| CubicBezierTimingFunction::Create(0.5f, 0.f, 0.5f, 1.f).Pass());
|
| - EXPECT_FLOAT_EQ(0.f, curve->GetValue(-1.f));
|
| - EXPECT_FLOAT_EQ(0.f, curve->GetValue(0.f));
|
| - EXPECT_NEAR(0.42f, curve->GetValue(1.f), 0.005f);
|
| - EXPECT_NEAR(1.f, curve->GetValue(1.455f), 0.005f);
|
| - EXPECT_FLOAT_EQ(3.f, curve->GetValue(2.f));
|
| - EXPECT_NEAR(8.72f, curve->GetValue(3.5f), 0.01f);
|
| - EXPECT_FLOAT_EQ(9.f, curve->GetValue(4.f));
|
| - EXPECT_FLOAT_EQ(9.f, curve->GetValue(5.f));
|
| + EXPECT_FLOAT_EQ(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f)));
|
| + EXPECT_FLOAT_EQ(0.f, curve->GetValue(base::TimeDelta::FromSecondsD(0.f)));
|
| + EXPECT_NEAR(0.42f, curve->GetValue(base::TimeDelta::FromSecondsD(1.f)),
|
| + 0.005f);
|
| + EXPECT_NEAR(1.f, curve->GetValue(base::TimeDelta::FromSecondsD(1.455f)),
|
| + 0.005f);
|
| + EXPECT_FLOAT_EQ(3.f, curve->GetValue(base::TimeDelta::FromSecondsD(2.f)));
|
| + EXPECT_NEAR(8.72f, curve->GetValue(base::TimeDelta::FromSecondsD(3.5f)),
|
| + 0.01f);
|
| + EXPECT_FLOAT_EQ(9.f, curve->GetValue(base::TimeDelta::FromSecondsD(4.f)));
|
| + EXPECT_FLOAT_EQ(9.f, curve->GetValue(base::TimeDelta::FromSecondsD(5.f)));
|
| }
|
|
|
| // Tests that an animation with a curve timing function that overshoots works as
|
| @@ -574,16 +664,22 @@ TEST(KeyframedAnimationCurveTest, CurveTimingMultipleKeyframes) {
|
| TEST(KeyframedAnimationCurveTest, CurveTimingOvershootMultipeKeyframes) {
|
| scoped_ptr<KeyframedFloatAnimationCurve> curve(
|
| KeyframedFloatAnimationCurve::Create());
|
| - curve->AddKeyframe(FloatKeyframe::Create(0.0, 0.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(1.0, 1.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(2.0, 3.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(3.0, 6.f, nullptr));
|
| - curve->AddKeyframe(FloatKeyframe::Create(4.0, 9.f, nullptr));
|
| + curve->AddKeyframe(FloatKeyframe::Create(base::TimeDelta(), 0.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), 1.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(2.0), 3.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(3.0), 6.f, nullptr));
|
| + curve->AddKeyframe(
|
| + FloatKeyframe::Create(base::TimeDelta::FromSecondsD(4.0), 9.f, nullptr));
|
| // Curve timing function producing outputs outside of range [0,1].
|
| curve->SetTimingFunction(
|
| CubicBezierTimingFunction::Create(0.5f, -0.5f, 0.5f, 1.5f).Pass());
|
| - EXPECT_LE(curve->GetValue(1.f), 0.f); // c(.25) < 0
|
| - EXPECT_GE(curve->GetValue(3.f), 9.f); // c(.75) > 1
|
| + EXPECT_LE(curve->GetValue(base::TimeDelta::FromSecondsD(1.f)),
|
| + 0.f); // c(.25) < 0
|
| + EXPECT_GE(curve->GetValue(base::TimeDelta::FromSecondsD(3.f)),
|
| + 9.f); // c(.75) > 1
|
| }
|
|
|
| } // namespace
|
|
|