| 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/keyframed_animation_curve.h" | 5 #include "cc/animation/keyframed_animation_curve.h" |
| 6 | 6 |
| 7 #include "cc/animation/transform_operations.h" | 7 #include "cc/animation/transform_operations.h" |
| 8 #include "testing/gmock/include/gmock/gmock.h" | 8 #include "testing/gmock/include/gmock/gmock.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 #include "ui/gfx/animation/tween.h" | 10 #include "ui/gfx/animation/tween.h" |
| (...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 979 curve->GetValue(base::TimeDelta::FromSecondsD(scale * 2.f))); | 979 curve->GetValue(base::TimeDelta::FromSecondsD(scale * 2.f))); |
| 980 EXPECT_NEAR(8.72f, | 980 EXPECT_NEAR(8.72f, |
| 981 curve->GetValue(base::TimeDelta::FromSecondsD(scale * 3.5f)), | 981 curve->GetValue(base::TimeDelta::FromSecondsD(scale * 3.5f)), |
| 982 0.01f); | 982 0.01f); |
| 983 EXPECT_FLOAT_EQ(9.f, | 983 EXPECT_FLOAT_EQ(9.f, |
| 984 curve->GetValue(base::TimeDelta::FromSecondsD(scale * 4.f))); | 984 curve->GetValue(base::TimeDelta::FromSecondsD(scale * 4.f))); |
| 985 EXPECT_FLOAT_EQ(9.f, | 985 EXPECT_FLOAT_EQ(9.f, |
| 986 curve->GetValue(base::TimeDelta::FromSecondsD(scale * 5.f))); | 986 curve->GetValue(base::TimeDelta::FromSecondsD(scale * 5.f))); |
| 987 } | 987 } |
| 988 | 988 |
| 989 // Tests that a size animation with one keyframe works as expected. |
| 990 TEST(KeyframedAnimationCurveTest, OneSizeKeyFrame) { |
| 991 gfx::SizeF size = gfx::SizeF(100, 100); |
| 992 std::unique_ptr<KeyframedSizeAnimationCurve> curve( |
| 993 KeyframedSizeAnimationCurve::Create()); |
| 994 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta(), size, nullptr)); |
| 995 |
| 996 EXPECT_SIZEF_EQ(size, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f))); |
| 997 EXPECT_SIZEF_EQ(size, curve->GetValue(base::TimeDelta::FromSecondsD(0.f))); |
| 998 EXPECT_SIZEF_EQ(size, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f))); |
| 999 EXPECT_SIZEF_EQ(size, curve->GetValue(base::TimeDelta::FromSecondsD(1.f))); |
| 1000 EXPECT_SIZEF_EQ(size, curve->GetValue(base::TimeDelta::FromSecondsD(2.f))); |
| 1001 } |
| 1002 |
| 1003 // Tests that a size animation with two keyframes works as expected. |
| 1004 TEST(KeyframedAnimationCurveTest, TwoSizeKeyFrame) { |
| 1005 gfx::SizeF size_a = gfx::SizeF(100, 100); |
| 1006 gfx::SizeF size_b = gfx::SizeF(100, 0); |
| 1007 gfx::SizeF size_midpoint = gfx::Tween::SizeValueBetween(0.5, size_a, size_b); |
| 1008 std::unique_ptr<KeyframedSizeAnimationCurve> curve( |
| 1009 KeyframedSizeAnimationCurve::Create()); |
| 1010 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta(), size_a, nullptr)); |
| 1011 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), |
| 1012 size_b, nullptr)); |
| 1013 |
| 1014 EXPECT_SIZEF_EQ(size_a, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f))); |
| 1015 EXPECT_SIZEF_EQ(size_a, curve->GetValue(base::TimeDelta::FromSecondsD(0.f))); |
| 1016 EXPECT_SIZEF_EQ(size_midpoint, |
| 1017 curve->GetValue(base::TimeDelta::FromSecondsD(0.5f))); |
| 1018 EXPECT_SIZEF_EQ(size_b, curve->GetValue(base::TimeDelta::FromSecondsD(1.f))); |
| 1019 EXPECT_SIZEF_EQ(size_b, curve->GetValue(base::TimeDelta::FromSecondsD(2.f))); |
| 1020 } |
| 1021 |
| 1022 // Tests that a size animation with three keyframes works as expected. |
| 1023 TEST(KeyframedAnimationCurveTest, ThreeSizeKeyFrame) { |
| 1024 gfx::SizeF size_a = gfx::SizeF(100, 100); |
| 1025 gfx::SizeF size_b = gfx::SizeF(100, 0); |
| 1026 gfx::SizeF size_c = gfx::SizeF(200, 0); |
| 1027 gfx::SizeF size_midpoint1 = gfx::Tween::SizeValueBetween(0.5, size_a, size_b); |
| 1028 gfx::SizeF size_midpoint2 = gfx::Tween::SizeValueBetween(0.5, size_b, size_c); |
| 1029 std::unique_ptr<KeyframedSizeAnimationCurve> curve( |
| 1030 KeyframedSizeAnimationCurve::Create()); |
| 1031 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta(), size_a, nullptr)); |
| 1032 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), |
| 1033 size_b, nullptr)); |
| 1034 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta::FromSecondsD(2.0), |
| 1035 size_c, nullptr)); |
| 1036 |
| 1037 EXPECT_SIZEF_EQ(size_a, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f))); |
| 1038 EXPECT_SIZEF_EQ(size_a, curve->GetValue(base::TimeDelta::FromSecondsD(0.f))); |
| 1039 EXPECT_SIZEF_EQ(size_midpoint1, |
| 1040 curve->GetValue(base::TimeDelta::FromSecondsD(0.5f))); |
| 1041 EXPECT_SIZEF_EQ(size_b, curve->GetValue(base::TimeDelta::FromSecondsD(1.f))); |
| 1042 EXPECT_SIZEF_EQ(size_midpoint2, |
| 1043 curve->GetValue(base::TimeDelta::FromSecondsD(1.5f))); |
| 1044 EXPECT_SIZEF_EQ(size_c, curve->GetValue(base::TimeDelta::FromSecondsD(2.f))); |
| 1045 EXPECT_SIZEF_EQ(size_c, curve->GetValue(base::TimeDelta::FromSecondsD(3.f))); |
| 1046 } |
| 1047 |
| 1048 // Tests that a size animation with multiple keys at a given time works sanely. |
| 1049 TEST(KeyframedAnimationCurveTest, RepeatedSizeKeyFrame) { |
| 1050 gfx::SizeF size_a = gfx::SizeF(100, 64); |
| 1051 gfx::SizeF size_b = gfx::SizeF(100, 192); |
| 1052 |
| 1053 std::unique_ptr<KeyframedSizeAnimationCurve> curve( |
| 1054 KeyframedSizeAnimationCurve::Create()); |
| 1055 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta(), size_a, nullptr)); |
| 1056 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), |
| 1057 size_a, nullptr)); |
| 1058 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta::FromSecondsD(1.0), |
| 1059 size_b, nullptr)); |
| 1060 curve->AddKeyframe(SizeKeyframe::Create(base::TimeDelta::FromSecondsD(2.0), |
| 1061 size_b, nullptr)); |
| 1062 |
| 1063 EXPECT_SIZEF_EQ(size_a, curve->GetValue(base::TimeDelta::FromSecondsD(-1.f))); |
| 1064 EXPECT_SIZEF_EQ(size_a, curve->GetValue(base::TimeDelta::FromSecondsD(0.f))); |
| 1065 EXPECT_SIZEF_EQ(size_a, curve->GetValue(base::TimeDelta::FromSecondsD(0.5f))); |
| 1066 |
| 1067 gfx::SizeF value = curve->GetValue(base::TimeDelta::FromSecondsD(1.0f)); |
| 1068 EXPECT_FLOAT_EQ(100.0f, value.width()); |
| 1069 EXPECT_LE(64.0f, value.height()); |
| 1070 EXPECT_GE(192.0f, value.height()); |
| 1071 |
| 1072 EXPECT_SIZEF_EQ(size_b, curve->GetValue(base::TimeDelta::FromSecondsD(1.5f))); |
| 1073 EXPECT_SIZEF_EQ(size_b, curve->GetValue(base::TimeDelta::FromSecondsD(2.f))); |
| 1074 EXPECT_SIZEF_EQ(size_b, curve->GetValue(base::TimeDelta::FromSecondsD(3.f))); |
| 1075 } |
| 1076 |
| 989 } // namespace | 1077 } // namespace |
| 990 } // namespace cc | 1078 } // namespace cc |
| OLD | NEW |