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

Side by Side Diff: ui/gfx/android/scroller_unittest.cc

Issue 172933004: [Android] Port Scroller.java to C++ and use for fling animations (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 10 months 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
« no previous file with comments | « ui/gfx/android/scroller.cc ('k') | ui/gfx/gfx.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/time/time.h"
6 #include "testing/gtest/include/gtest/gtest.h"
7 #include "ui/gfx/android/scroller.h"
8
9 namespace gfx {
10
11 namespace {
12
13 const float kDefaultStartX = 7.f;
14 const float kDefaultStartY = 25.f;
15 const float kDefaultDeltaX = -20.f;
16 const float kDefaultDeltaY = 73.f;
17 const float kDefaultVelocityX = -35.f;
18 const float kDefaultVelocityY = 22.f;
19 const float kEpsilon = 1e-3f;
20
21 Scroller::Config DefaultConfig() {
22 return Scroller::Config();
23 }
24
25 } // namespace
26
27 class ScrollerTest : public testing::Test {};
28
29 TEST_F(ScrollerTest, Scroll) {
30 Scroller scroller(DefaultConfig());
31 base::TimeTicks start_time = base::TimeTicks::Now();
32
33 // Start a scroll and verify initialized values.
34 scroller.StartScroll(kDefaultStartX,
35 kDefaultStartY,
36 kDefaultDeltaX,
37 kDefaultDeltaY,
38 start_time);
39
40 EXPECT_EQ(kDefaultStartX, scroller.GetStartX());
41 EXPECT_EQ(kDefaultStartY, scroller.GetStartY());
42 EXPECT_EQ(kDefaultStartX, scroller.GetCurrX());
43 EXPECT_EQ(kDefaultStartY, scroller.GetCurrY());
44 EXPECT_EQ(kDefaultStartX + kDefaultDeltaX, scroller.GetFinalX());
45 EXPECT_EQ(kDefaultStartY + kDefaultDeltaY, scroller.GetFinalY());
46 EXPECT_FALSE(scroller.IsFinished());
47 EXPECT_EQ(base::TimeDelta(), scroller.GetTimePassed());
48
49 // Advance halfway through the scroll.
50 const base::TimeDelta scroll_duration = scroller.GetDuration();
51 scroller.ComputeScrollOffset(start_time + scroll_duration / 2);
52
53 // Ensure we've moved in the direction of the delta, but have yet to reach
54 // the target.
55 EXPECT_GT(kDefaultStartX, scroller.GetCurrX());
56 EXPECT_LT(kDefaultStartY, scroller.GetCurrY());
57 EXPECT_LT(scroller.GetFinalX(), scroller.GetCurrX());
58 EXPECT_GT(scroller.GetFinalY(), scroller.GetCurrY());
59 EXPECT_FALSE(scroller.IsFinished());
60
61 // Ensure our velocity is non-zero and in the same direction as the delta.
62 EXPECT_GT(0.f, scroller.GetCurrVelocityX() * kDefaultDeltaX);
63 EXPECT_GT(0.f, scroller.GetCurrVelocityY() * kDefaultDeltaY);
64 EXPECT_TRUE(scroller.IsScrollingInDirection(kDefaultDeltaX, kDefaultDeltaY));
65
66 // Advance to the end.
67 scroller.ComputeScrollOffset(start_time + scroll_duration);
68 EXPECT_EQ(scroller.GetFinalX(), scroller.GetCurrX());
69 EXPECT_EQ(scroller.GetFinalY(), scroller.GetCurrY());
70 EXPECT_TRUE(scroller.IsFinished());
71 EXPECT_EQ(scroll_duration, scroller.GetTimePassed());
72 EXPECT_NEAR(0.f, scroller.GetCurrVelocityX(), kEpsilon);
73 EXPECT_NEAR(0.f, scroller.GetCurrVelocityY(), kEpsilon);
74
75 // Try to advance further; nothing should change.
76 scroller.ComputeScrollOffset(start_time + scroll_duration * 2);
77 EXPECT_EQ(scroller.GetFinalX(), scroller.GetCurrX());
78 EXPECT_EQ(scroller.GetFinalY(), scroller.GetCurrY());
79 EXPECT_TRUE(scroller.IsFinished());
80 EXPECT_EQ(scroll_duration, scroller.GetTimePassed());
81 }
82
83 TEST_F(ScrollerTest, Fling) {
84 Scroller scroller(DefaultConfig());
85 base::TimeTicks start_time = base::TimeTicks::Now();
86
87 // Start a fling and verify initialized values.
88 scroller.Fling(kDefaultStartX,
89 kDefaultStartY,
90 kDefaultVelocityX,
91 kDefaultVelocityY,
92 INT_MIN,
93 INT_MAX,
94 INT_MIN,
95 INT_MAX,
96 start_time);
97
98 EXPECT_EQ(kDefaultStartX, scroller.GetStartX());
99 EXPECT_EQ(kDefaultStartY, scroller.GetStartY());
100 EXPECT_EQ(kDefaultStartX, scroller.GetCurrX());
101 EXPECT_EQ(kDefaultStartY, scroller.GetCurrY());
102 EXPECT_GT(kDefaultStartX, scroller.GetFinalX());
103 EXPECT_LT(kDefaultStartY, scroller.GetFinalY());
104 EXPECT_FALSE(scroller.IsFinished());
105 EXPECT_EQ(base::TimeDelta(), scroller.GetTimePassed());
106
107 // Advance halfway through the fling.
108 const base::TimeDelta scroll_duration = scroller.GetDuration();
109 scroller.ComputeScrollOffset(start_time + scroll_duration / 2);
110
111 // Ensure we've moved in the direction of the velocity, but have yet to reach
112 // the target.
113 EXPECT_GT(kDefaultStartX, scroller.GetCurrX());
114 EXPECT_LT(kDefaultStartY, scroller.GetCurrY());
115 EXPECT_LT(scroller.GetFinalX(), scroller.GetCurrX());
116 EXPECT_GT(scroller.GetFinalY(), scroller.GetCurrY());
117 EXPECT_FALSE(scroller.IsFinished());
118
119 // Ensure our velocity is non-zero and in the same direction as the original
120 // velocity.
121 EXPECT_LT(0.f, scroller.GetCurrVelocityX() * kDefaultVelocityX);
122 EXPECT_LT(0.f, scroller.GetCurrVelocityY() * kDefaultVelocityY);
123 EXPECT_TRUE(
124 scroller.IsScrollingInDirection(kDefaultVelocityX, kDefaultVelocityY));
125
126 // Advance to the end.
127 scroller.ComputeScrollOffset(start_time + scroll_duration);
128 EXPECT_EQ(scroller.GetFinalX(), scroller.GetCurrX());
129 EXPECT_EQ(scroller.GetFinalY(), scroller.GetCurrY());
130 EXPECT_TRUE(scroller.IsFinished());
131 EXPECT_EQ(scroll_duration, scroller.GetTimePassed());
132 EXPECT_NEAR(0.f, scroller.GetCurrVelocityX(), kEpsilon);
133 EXPECT_NEAR(0.f, scroller.GetCurrVelocityY(), kEpsilon);
134
135 // Try to advance further; nothing should change.
136 scroller.ComputeScrollOffset(start_time + scroll_duration * 2);
137 EXPECT_EQ(scroller.GetFinalX(), scroller.GetCurrX());
138 EXPECT_EQ(scroller.GetFinalY(), scroller.GetCurrY());
139 EXPECT_TRUE(scroller.IsFinished());
140 EXPECT_EQ(scroll_duration, scroller.GetTimePassed());
141 }
142
143 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/android/scroller.cc ('k') | ui/gfx/gfx.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698