Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(236)

Side by Side Diff: cc/animation/scroll_offset_animation_curve_unittest.cc

Issue 719453007: Make Keyframe use TimeTicks/TimeDelta to represent time instead of double. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/scroll_offset_animation_curve.h" 5 #include "cc/animation/scroll_offset_animation_curve.h"
6 6
7 #include "cc/animation/timing_function.h" 7 #include "cc/animation/timing_function.h"
8 #include "cc/base/time_util.h"
8 #include "cc/test/geometry_test_utils.h" 9 #include "cc/test/geometry_test_utils.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 TEST(ScrollOffsetAnimationCurveTest, Duration) { 15 TEST(ScrollOffsetAnimationCurveTest, Duration) {
15 gfx::ScrollOffset target_value(100.f, 200.f); 16 gfx::ScrollOffset target_value(100.f, 200.f);
16 scoped_ptr<ScrollOffsetAnimationCurve> curve( 17 scoped_ptr<ScrollOffsetAnimationCurve> curve(
17 ScrollOffsetAnimationCurve::Create( 18 ScrollOffsetAnimationCurve::Create(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 EaseInOutTimingFunction::Create().Pass())); 64 EaseInOutTimingFunction::Create().Pass()));
64 curve->SetInitialValue(initial_value); 65 curve->SetInitialValue(initial_value);
65 66
66 double duration_in_seconds = curve->Duration().InSecondsF(); 67 double duration_in_seconds = curve->Duration().InSecondsF();
67 EXPECT_GT(curve->Duration().InSecondsF(), 0); 68 EXPECT_GT(curve->Duration().InSecondsF(), 0);
68 EXPECT_LT(curve->Duration().InSecondsF(), 0.1); 69 EXPECT_LT(curve->Duration().InSecondsF(), 0.1);
69 70
70 EXPECT_EQ(AnimationCurve::ScrollOffset, curve->Type()); 71 EXPECT_EQ(AnimationCurve::ScrollOffset, curve->Type());
71 EXPECT_EQ(duration_in_seconds, curve->Duration().InSecondsF()); 72 EXPECT_EQ(duration_in_seconds, curve->Duration().InSecondsF());
72 73
73 EXPECT_VECTOR2DF_EQ(initial_value, curve->GetValue(-1.0)); 74 EXPECT_VECTOR2DF_EQ(initial_value,
74 EXPECT_VECTOR2DF_EQ(initial_value, curve->GetValue(0.0)); 75 curve->GetValue(base::TimeDelta::FromSecondsD(-1.0)));
76 EXPECT_VECTOR2DF_EQ(initial_value, curve->GetValue(base::TimeDelta()));
75 EXPECT_VECTOR2DF_EQ(gfx::ScrollOffset(6.f, 30.f), 77 EXPECT_VECTOR2DF_EQ(gfx::ScrollOffset(6.f, 30.f),
76 curve->GetValue(duration_in_seconds / 2.0)); 78 curve->GetValue(base::TimeDelta::FromSecondsD(
77 EXPECT_VECTOR2DF_EQ(target_value, curve->GetValue(duration_in_seconds)); 79 duration_in_seconds / 2.0)));
78 EXPECT_VECTOR2DF_EQ(target_value, curve->GetValue(duration_in_seconds + 1.0)); 80 EXPECT_VECTOR2DF_EQ(
81 target_value,
82 curve->GetValue(base::TimeDelta::FromSecondsD(duration_in_seconds)));
83 EXPECT_VECTOR2DF_EQ(target_value,
84 curve->GetValue(base::TimeDelta::FromSecondsD(
85 duration_in_seconds + 1.0)));
79 86
80 // Verify that GetValue takes the timing function into account. 87 // Verify that GetValue takes the timing function into account.
81 gfx::ScrollOffset value = curve->GetValue(duration_in_seconds / 4.0); 88 gfx::ScrollOffset value =
89 curve->GetValue(base::TimeDelta::FromSecondsD(duration_in_seconds / 4.0));
82 EXPECT_NEAR(3.0333f, value.x(), 0.00015f); 90 EXPECT_NEAR(3.0333f, value.x(), 0.00015f);
83 EXPECT_NEAR(37.4168f, value.y(), 0.00015f); 91 EXPECT_NEAR(37.4168f, value.y(), 0.00015f);
84 } 92 }
85 93
86 // Verify that a clone behaves exactly like the original. 94 // Verify that a clone behaves exactly like the original.
87 TEST(ScrollOffsetAnimationCurveTest, Clone) { 95 TEST(ScrollOffsetAnimationCurveTest, Clone) {
88 gfx::ScrollOffset initial_value(2.f, 40.f); 96 gfx::ScrollOffset initial_value(2.f, 40.f);
89 gfx::ScrollOffset target_value(10.f, 20.f); 97 gfx::ScrollOffset target_value(10.f, 20.f);
90 scoped_ptr<ScrollOffsetAnimationCurve> curve( 98 scoped_ptr<ScrollOffsetAnimationCurve> curve(
91 ScrollOffsetAnimationCurve::Create( 99 ScrollOffsetAnimationCurve::Create(
92 target_value, 100 target_value,
93 EaseInOutTimingFunction::Create().Pass())); 101 EaseInOutTimingFunction::Create().Pass()));
94 curve->SetInitialValue(initial_value); 102 curve->SetInitialValue(initial_value);
95 double duration_in_seconds = curve->Duration().InSecondsF(); 103 base::TimeDelta duration = curve->Duration();
96 104
97 scoped_ptr<AnimationCurve> clone(curve->Clone().Pass()); 105 scoped_ptr<AnimationCurve> clone(curve->Clone().Pass());
98 106
99 EXPECT_EQ(AnimationCurve::ScrollOffset, clone->Type()); 107 EXPECT_EQ(AnimationCurve::ScrollOffset, clone->Type());
100 EXPECT_EQ(duration_in_seconds, clone->Duration().InSecondsF()); 108 EXPECT_EQ(duration, clone->Duration());
101 109
102 EXPECT_VECTOR2DF_EQ(initial_value, 110 EXPECT_VECTOR2DF_EQ(initial_value,
103 clone->ToScrollOffsetAnimationCurve()->GetValue(-1.0)); 111 clone->ToScrollOffsetAnimationCurve()->GetValue(
104 EXPECT_VECTOR2DF_EQ(initial_value, 112 base::TimeDelta::FromSecondsD(-1.0)));
105 clone->ToScrollOffsetAnimationCurve()->GetValue(0.0)); 113 EXPECT_VECTOR2DF_EQ(
114 initial_value,
115 clone->ToScrollOffsetAnimationCurve()->GetValue(base::TimeDelta()));
106 EXPECT_VECTOR2DF_EQ(gfx::ScrollOffset(6.f, 30.f), 116 EXPECT_VECTOR2DF_EQ(gfx::ScrollOffset(6.f, 30.f),
107 clone->ToScrollOffsetAnimationCurve()->GetValue( 117 clone->ToScrollOffsetAnimationCurve()->GetValue(
108 duration_in_seconds / 2.0)); 118 TimeUtil::Scale(duration, 0.5f)));
109 EXPECT_VECTOR2DF_EQ( 119 EXPECT_VECTOR2DF_EQ(
110 target_value, 120 target_value, clone->ToScrollOffsetAnimationCurve()->GetValue(duration));
111 clone->ToScrollOffsetAnimationCurve()->GetValue(duration_in_seconds));
112 EXPECT_VECTOR2DF_EQ(target_value, 121 EXPECT_VECTOR2DF_EQ(target_value,
113 clone->ToScrollOffsetAnimationCurve()->GetValue( 122 clone->ToScrollOffsetAnimationCurve()->GetValue(
114 duration_in_seconds + 1.0)); 123 duration + base::TimeDelta::FromSecondsD(1.f)));
115 124
116 // Verify that the timing function was cloned correctly. 125 // Verify that the timing function was cloned correctly.
117 gfx::ScrollOffset value = clone->ToScrollOffsetAnimationCurve()->GetValue( 126 gfx::ScrollOffset value = clone->ToScrollOffsetAnimationCurve()->GetValue(
118 duration_in_seconds / 4.0); 127 TimeUtil::Scale(duration, 0.25f));
119 EXPECT_NEAR(3.0333f, value.x(), 0.00015f); 128 EXPECT_NEAR(3.0333f, value.x(), 0.00015f);
120 EXPECT_NEAR(37.4168f, value.y(), 0.00015f); 129 EXPECT_NEAR(37.4168f, value.y(), 0.00015f);
121 } 130 }
122 131
123 TEST(ScrollOffsetAnimationCurveTest, UpdateTarget) { 132 TEST(ScrollOffsetAnimationCurveTest, UpdateTarget) {
124 gfx::ScrollOffset initial_value(0.f, 0.f); 133 gfx::ScrollOffset initial_value(0.f, 0.f);
125 gfx::ScrollOffset target_value(0.f, 3600.f); 134 gfx::ScrollOffset target_value(0.f, 3600.f);
126 scoped_ptr<ScrollOffsetAnimationCurve> curve( 135 scoped_ptr<ScrollOffsetAnimationCurve> curve(
127 ScrollOffsetAnimationCurve::Create( 136 ScrollOffsetAnimationCurve::Create(
128 target_value, EaseInOutTimingFunction::Create().Pass())); 137 target_value, EaseInOutTimingFunction::Create().Pass()));
129 curve->SetInitialValue(initial_value); 138 curve->SetInitialValue(initial_value);
130 EXPECT_EQ(1.0, curve->Duration().InSecondsF()); 139 EXPECT_EQ(1.0, curve->Duration().InSecondsF());
131 EXPECT_EQ(1800.0, curve->GetValue(0.5).y()); 140 EXPECT_EQ(1800.0, curve->GetValue(base::TimeDelta::FromSecondsD(0.5)).y());
132 EXPECT_EQ(3600.0, curve->GetValue(1.0).y()); 141 EXPECT_EQ(3600.0, curve->GetValue(base::TimeDelta::FromSecondsD(1.0)).y());
133 142
134 curve->UpdateTarget(0.5, gfx::ScrollOffset(0.0, 9900.0)); 143 curve->UpdateTarget(0.5, gfx::ScrollOffset(0.0, 9900.0));
135 144
136 EXPECT_EQ(2.0, curve->Duration().InSecondsF()); 145 EXPECT_EQ(2.0, curve->Duration().InSecondsF());
137 EXPECT_EQ(1800.0, curve->GetValue(0.5).y()); 146 EXPECT_EQ(1800.0, curve->GetValue(base::TimeDelta::FromSecondsD(0.5)).y());
138 EXPECT_NEAR(5566.49, curve->GetValue(1.0).y(), 0.01); 147 EXPECT_NEAR(5566.49, curve->GetValue(base::TimeDelta::FromSecondsD(1.0)).y(),
139 EXPECT_EQ(9900.0, curve->GetValue(2.0).y()); 148 0.01);
149 EXPECT_EQ(9900.0, curve->GetValue(base::TimeDelta::FromSecondsD(2.0)).y());
140 150
141 curve->UpdateTarget(1.0, gfx::ScrollOffset(0.0, 7200.0)); 151 curve->UpdateTarget(1.0, gfx::ScrollOffset(0.0, 7200.0));
142 152
143 EXPECT_NEAR(1.674, curve->Duration().InSecondsF(), 0.01); 153 EXPECT_NEAR(1.674, curve->Duration().InSecondsF(), 0.01);
144 EXPECT_NEAR(5566.49, curve->GetValue(1.0).y(), 0.01); 154 EXPECT_NEAR(5566.49, curve->GetValue(base::TimeDelta::FromSecondsD(1.0)).y(),
145 EXPECT_EQ(7200.0, curve->GetValue(1.674).y()); 155 0.01);
156 EXPECT_EQ(7200.0, curve->GetValue(base::TimeDelta::FromSecondsD(1.674)).y());
146 } 157 }
147 158
148 } // namespace 159 } // namespace
149 } // namespace cc 160 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698