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

Side by Side Diff: media/base/time_delta_interpolator_unittest.cc

Issue 376013003: Rename media::Clock to media::TimeDeltaInterpolator and update API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: SetBounds Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « media/base/time_delta_interpolator.cc ('k') | media/filters/pipeline_integration_test_base.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "base/logging.h" 5 #include "base/logging.h"
6 #include "base/test/simple_test_tick_clock.h" 6 #include "base/test/simple_test_tick_clock.h"
7 #include "media/base/clock.h" 7 #include "media/base/time_delta_interpolator.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace media { 10 namespace media {
11 11
12 class ClockTest : public ::testing::Test { 12 class TimeDeltaInterpolatorTest : public ::testing::Test {
13 public: 13 public:
14 ClockTest() : clock_(&test_tick_clock_) {} 14 TimeDeltaInterpolatorTest() : interpolator_(&test_tick_clock_) {}
15 15
16 protected: 16 protected:
17 void AdvanceSystemTime(base::TimeDelta delta) { 17 void AdvanceSystemTime(base::TimeDelta delta) {
18 test_tick_clock_.Advance(delta); 18 test_tick_clock_.Advance(delta);
19 } 19 }
20 20
21 base::SimpleTestTickClock test_tick_clock_; 21 base::SimpleTestTickClock test_tick_clock_;
22 Clock clock_; 22 TimeDeltaInterpolator interpolator_;
23 base::TimeDelta time_elapsed_;
24 }; 23 };
25 24
26 TEST_F(ClockTest, Created) { 25 TEST_F(TimeDeltaInterpolatorTest, Created) {
27 const base::TimeDelta kExpected = base::TimeDelta::FromSeconds(0); 26 const base::TimeDelta kExpected = base::TimeDelta::FromSeconds(0);
28 EXPECT_EQ(kExpected, clock_.Elapsed()); 27 EXPECT_EQ(kExpected, interpolator_.GetInterpolatedTime());
29 } 28 }
30 29
31 TEST_F(ClockTest, Play_NormalSpeed) { 30 TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_NormalSpeed) {
32 const base::TimeDelta kZero; 31 const base::TimeDelta kZero;
33 const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(2); 32 const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(2);
34 33
35 EXPECT_EQ(kZero, clock_.Play()); 34 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
36 AdvanceSystemTime(kTimeToAdvance); 35 AdvanceSystemTime(kTimeToAdvance);
37 EXPECT_EQ(kTimeToAdvance, clock_.Elapsed()); 36 EXPECT_EQ(kTimeToAdvance, interpolator_.GetInterpolatedTime());
38 } 37 }
39 38
40 TEST_F(ClockTest, Play_DoubleSpeed) { 39 TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_DoubleSpeed) {
41 const base::TimeDelta kZero; 40 const base::TimeDelta kZero;
42 const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(5); 41 const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(5);
43 42
44 clock_.SetPlaybackRate(2.0f); 43 interpolator_.SetPlaybackRate(2.0f);
45 EXPECT_EQ(kZero, clock_.Play()); 44 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
46 AdvanceSystemTime(kTimeToAdvance); 45 AdvanceSystemTime(kTimeToAdvance);
47 EXPECT_EQ(2 * kTimeToAdvance, clock_.Elapsed()); 46 EXPECT_EQ(2 * kTimeToAdvance, interpolator_.GetInterpolatedTime());
48 } 47 }
49 48
50 TEST_F(ClockTest, Play_HalfSpeed) { 49 TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_HalfSpeed) {
51 const base::TimeDelta kZero; 50 const base::TimeDelta kZero;
52 const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(4); 51 const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(4);
53 52
54 clock_.SetPlaybackRate(0.5f); 53 interpolator_.SetPlaybackRate(0.5f);
55 EXPECT_EQ(kZero, clock_.Play()); 54 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
56 AdvanceSystemTime(kTimeToAdvance); 55 AdvanceSystemTime(kTimeToAdvance);
57 EXPECT_EQ(kTimeToAdvance / 2, clock_.Elapsed()); 56 EXPECT_EQ(kTimeToAdvance / 2, interpolator_.GetInterpolatedTime());
58 } 57 }
59 58
60 TEST_F(ClockTest, Play_ZeroSpeed) { 59 TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_ZeroSpeed) {
61 // We'll play for 2 seconds at normal speed, 4 seconds at zero speed, and 8 60 // We'll play for 2 seconds at normal speed, 4 seconds at zero speed, and 8
62 // seconds at normal speed. 61 // seconds at normal speed.
63 const base::TimeDelta kZero; 62 const base::TimeDelta kZero;
64 const base::TimeDelta kPlayDuration1 = base::TimeDelta::FromSeconds(2); 63 const base::TimeDelta kPlayDuration1 = base::TimeDelta::FromSeconds(2);
65 const base::TimeDelta kPlayDuration2 = base::TimeDelta::FromSeconds(4); 64 const base::TimeDelta kPlayDuration2 = base::TimeDelta::FromSeconds(4);
66 const base::TimeDelta kPlayDuration3 = base::TimeDelta::FromSeconds(8); 65 const base::TimeDelta kPlayDuration3 = base::TimeDelta::FromSeconds(8);
67 const base::TimeDelta kExpected = kPlayDuration1 + kPlayDuration3; 66 const base::TimeDelta kExpected = kPlayDuration1 + kPlayDuration3;
68 67
69 EXPECT_EQ(kZero, clock_.Play()); 68 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
70 69
71 AdvanceSystemTime(kPlayDuration1); 70 AdvanceSystemTime(kPlayDuration1);
72 clock_.SetPlaybackRate(0.0f); 71 interpolator_.SetPlaybackRate(0.0f);
73 AdvanceSystemTime(kPlayDuration2); 72 AdvanceSystemTime(kPlayDuration2);
74 clock_.SetPlaybackRate(1.0f); 73 interpolator_.SetPlaybackRate(1.0f);
75 AdvanceSystemTime(kPlayDuration3); 74 AdvanceSystemTime(kPlayDuration3);
76 75
77 EXPECT_EQ(kExpected, clock_.Elapsed()); 76 EXPECT_EQ(kExpected, interpolator_.GetInterpolatedTime());
78 } 77 }
79 78
80 TEST_F(ClockTest, Play_MultiSpeed) { 79 TEST_F(TimeDeltaInterpolatorTest, StartInterpolating_MultiSpeed) {
81 // We'll play for 2 seconds at half speed, 4 seconds at normal speed, and 8 80 // We'll play for 2 seconds at half speed, 4 seconds at normal speed, and 8
82 // seconds at double speed. 81 // seconds at double speed.
83 const base::TimeDelta kZero; 82 const base::TimeDelta kZero;
84 const base::TimeDelta kPlayDuration1 = base::TimeDelta::FromSeconds(2); 83 const base::TimeDelta kPlayDuration1 = base::TimeDelta::FromSeconds(2);
85 const base::TimeDelta kPlayDuration2 = base::TimeDelta::FromSeconds(4); 84 const base::TimeDelta kPlayDuration2 = base::TimeDelta::FromSeconds(4);
86 const base::TimeDelta kPlayDuration3 = base::TimeDelta::FromSeconds(8); 85 const base::TimeDelta kPlayDuration3 = base::TimeDelta::FromSeconds(8);
87 const base::TimeDelta kExpected = 86 const base::TimeDelta kExpected =
88 kPlayDuration1 / 2 + kPlayDuration2 + 2 * kPlayDuration3; 87 kPlayDuration1 / 2 + kPlayDuration2 + 2 * kPlayDuration3;
89 88
90 clock_.SetPlaybackRate(0.5f); 89 interpolator_.SetPlaybackRate(0.5f);
91 EXPECT_EQ(kZero, clock_.Play()); 90 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
92 AdvanceSystemTime(kPlayDuration1); 91 AdvanceSystemTime(kPlayDuration1);
93 92
94 clock_.SetPlaybackRate(1.0f); 93 interpolator_.SetPlaybackRate(1.0f);
95 AdvanceSystemTime(kPlayDuration2); 94 AdvanceSystemTime(kPlayDuration2);
96 95
97 clock_.SetPlaybackRate(2.0f); 96 interpolator_.SetPlaybackRate(2.0f);
98 AdvanceSystemTime(kPlayDuration3); 97 AdvanceSystemTime(kPlayDuration3);
99 EXPECT_EQ(kExpected, clock_.Elapsed()); 98 EXPECT_EQ(kExpected, interpolator_.GetInterpolatedTime());
100 } 99 }
101 100
102 TEST_F(ClockTest, Pause) { 101 TEST_F(TimeDeltaInterpolatorTest, StopInterpolating) {
103 const base::TimeDelta kZero; 102 const base::TimeDelta kZero;
104 const base::TimeDelta kPlayDuration = base::TimeDelta::FromSeconds(4); 103 const base::TimeDelta kPlayDuration = base::TimeDelta::FromSeconds(4);
105 const base::TimeDelta kPauseDuration = base::TimeDelta::FromSeconds(20); 104 const base::TimeDelta kPauseDuration = base::TimeDelta::FromSeconds(20);
106 const base::TimeDelta kExpectedFirstPause = kPlayDuration; 105 const base::TimeDelta kExpectedFirstPause = kPlayDuration;
107 const base::TimeDelta kExpectedSecondPause = 2 * kPlayDuration; 106 const base::TimeDelta kExpectedSecondPause = 2 * kPlayDuration;
108 107
109 // Play for 4 seconds. 108 // Play for 4 seconds.
110 EXPECT_EQ(kZero, clock_.Play()); 109 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
111 AdvanceSystemTime(kPlayDuration); 110 AdvanceSystemTime(kPlayDuration);
112 111
113 // Pause for 20 seconds. 112 // Pause for 20 seconds.
114 EXPECT_EQ(kExpectedFirstPause, clock_.Pause()); 113 EXPECT_EQ(kExpectedFirstPause, interpolator_.StopInterpolating());
115 EXPECT_EQ(kExpectedFirstPause, clock_.Elapsed()); 114 EXPECT_EQ(kExpectedFirstPause, interpolator_.GetInterpolatedTime());
116 AdvanceSystemTime(kPauseDuration); 115 AdvanceSystemTime(kPauseDuration);
117 EXPECT_EQ(kExpectedFirstPause, clock_.Elapsed()); 116 EXPECT_EQ(kExpectedFirstPause, interpolator_.GetInterpolatedTime());
118 117
119 // Play again for 4 more seconds. 118 // Play again for 4 more seconds.
120 EXPECT_EQ(kExpectedFirstPause, clock_.Play()); 119 EXPECT_EQ(kExpectedFirstPause, interpolator_.StartInterpolating());
121 AdvanceSystemTime(kPlayDuration); 120 AdvanceSystemTime(kPlayDuration);
122 EXPECT_EQ(kExpectedSecondPause, clock_.Pause()); 121 EXPECT_EQ(kExpectedSecondPause, interpolator_.StopInterpolating());
123 EXPECT_EQ(kExpectedSecondPause, clock_.Elapsed()); 122 EXPECT_EQ(kExpectedSecondPause, interpolator_.GetInterpolatedTime());
124 } 123 }
125 124
126 TEST_F(ClockTest, SetTime_Paused) { 125 TEST_F(TimeDeltaInterpolatorTest, SetBounds_Stopped) {
127 const base::TimeDelta kFirstTime = base::TimeDelta::FromSeconds(4); 126 const base::TimeDelta kFirstTime = base::TimeDelta::FromSeconds(4);
128 const base::TimeDelta kSecondTime = base::TimeDelta::FromSeconds(16); 127 const base::TimeDelta kSecondTime = base::TimeDelta::FromSeconds(16);
129 const base::TimeDelta kArbitraryMaxTime = base::TimeDelta::FromSeconds(100); 128 const base::TimeDelta kArbitraryMaxTime = base::TimeDelta::FromSeconds(100);
130 129
131 clock_.SetTime(kFirstTime, kArbitraryMaxTime); 130 interpolator_.SetBounds(kFirstTime, kArbitraryMaxTime);
132 EXPECT_EQ(kFirstTime, clock_.Elapsed()); 131 EXPECT_EQ(kFirstTime, interpolator_.GetInterpolatedTime());
133 clock_.SetTime(kSecondTime, kArbitraryMaxTime); 132 interpolator_.SetBounds(kSecondTime, kArbitraryMaxTime);
134 EXPECT_EQ(kSecondTime, clock_.Elapsed()); 133 EXPECT_EQ(kSecondTime, interpolator_.GetInterpolatedTime());
135 } 134 }
136 135
137 TEST_F(ClockTest, SetTime_Playing) { 136 TEST_F(TimeDeltaInterpolatorTest, SetBounds_Started) {
138 // We'll play for 4 seconds, then set the time to 12, then play for 4 more 137 // We'll play for 4 seconds, then set the time to 12, then play for 4 more
139 // seconds. 138 // seconds.
140 const base::TimeDelta kZero; 139 const base::TimeDelta kZero;
141 const base::TimeDelta kPlayDuration = base::TimeDelta::FromSeconds(4); 140 const base::TimeDelta kPlayDuration = base::TimeDelta::FromSeconds(4);
142 const base::TimeDelta kUpdatedTime = base::TimeDelta::FromSeconds(12); 141 const base::TimeDelta kUpdatedTime = base::TimeDelta::FromSeconds(12);
143 const base::TimeDelta kArbitraryMaxTime = base::TimeDelta::FromSeconds(100); 142 const base::TimeDelta kArbitraryMaxTime = base::TimeDelta::FromSeconds(100);
144 const base::TimeDelta kExpected = kUpdatedTime + kPlayDuration; 143 const base::TimeDelta kExpected = kUpdatedTime + kPlayDuration;
145 144
146 EXPECT_EQ(kZero, clock_.Play()); 145 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
147 AdvanceSystemTime(kPlayDuration); 146 AdvanceSystemTime(kPlayDuration);
148 147
149 clock_.SetTime(kUpdatedTime, kArbitraryMaxTime); 148 interpolator_.SetBounds(kUpdatedTime, kArbitraryMaxTime);
150 AdvanceSystemTime(kPlayDuration); 149 AdvanceSystemTime(kPlayDuration);
151 EXPECT_EQ(kExpected, clock_.Elapsed()); 150 EXPECT_EQ(kExpected, interpolator_.GetInterpolatedTime());
152 } 151 }
153 152
154 TEST_F(ClockTest, SetMaxTime) { 153 TEST_F(TimeDeltaInterpolatorTest, SetUpperBound) {
155 const base::TimeDelta kZero; 154 const base::TimeDelta kZero;
156 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4); 155 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4);
157 const base::TimeDelta kMaxTime = base::TimeDelta::FromSeconds(6); 156 const base::TimeDelta kMaxTime = base::TimeDelta::FromSeconds(6);
158 157
159 EXPECT_EQ(kZero, clock_.Play()); 158 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
160 clock_.SetMaxTime(kMaxTime); 159 interpolator_.SetUpperBound(kMaxTime);
161 AdvanceSystemTime(kTimeInterval); 160 AdvanceSystemTime(kTimeInterval);
162 EXPECT_EQ(kTimeInterval, clock_.Elapsed()); 161 EXPECT_EQ(kTimeInterval, interpolator_.GetInterpolatedTime());
163 162
164 AdvanceSystemTime(kTimeInterval); 163 AdvanceSystemTime(kTimeInterval);
165 EXPECT_EQ(kMaxTime, clock_.Elapsed()); 164 EXPECT_EQ(kMaxTime, interpolator_.GetInterpolatedTime());
166 165
167 AdvanceSystemTime(kTimeInterval); 166 AdvanceSystemTime(kTimeInterval);
168 EXPECT_EQ(kMaxTime, clock_.Elapsed()); 167 EXPECT_EQ(kMaxTime, interpolator_.GetInterpolatedTime());
169 } 168 }
170 169
171 TEST_F(ClockTest, SetMaxTime_MultipleTimes) { 170 TEST_F(TimeDeltaInterpolatorTest, SetUpperBound_MultipleTimes) {
172 const base::TimeDelta kZero; 171 const base::TimeDelta kZero;
173 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4); 172 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4);
174 const base::TimeDelta kMaxTime0 = base::TimeDelta::FromSeconds(120); 173 const base::TimeDelta kMaxTime0 = base::TimeDelta::FromSeconds(120);
175 const base::TimeDelta kMaxTime1 = base::TimeDelta::FromSeconds(6); 174 const base::TimeDelta kMaxTime1 = base::TimeDelta::FromSeconds(6);
176 const base::TimeDelta kMaxTime2 = base::TimeDelta::FromSeconds(12); 175 const base::TimeDelta kMaxTime2 = base::TimeDelta::FromSeconds(12);
177 176
178 EXPECT_EQ(kZero, clock_.Play()); 177 EXPECT_EQ(kZero, interpolator_.StartInterpolating());
179 clock_.SetMaxTime(kMaxTime0); 178 interpolator_.SetUpperBound(kMaxTime0);
180 AdvanceSystemTime(kTimeInterval); 179 AdvanceSystemTime(kTimeInterval);
181 EXPECT_EQ(kTimeInterval, clock_.Elapsed()); 180 EXPECT_EQ(kTimeInterval, interpolator_.GetInterpolatedTime());
182 181
183 clock_.SetMaxTime(kMaxTime1); 182 interpolator_.SetUpperBound(kMaxTime1);
184 AdvanceSystemTime(kTimeInterval); 183 AdvanceSystemTime(kTimeInterval);
185 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); 184 EXPECT_EQ(kMaxTime1, interpolator_.GetInterpolatedTime());
186 185
187 AdvanceSystemTime(kTimeInterval); 186 AdvanceSystemTime(kTimeInterval);
188 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); 187 EXPECT_EQ(kMaxTime1, interpolator_.GetInterpolatedTime());
189 188
190 clock_.SetMaxTime(kMaxTime2); 189 interpolator_.SetUpperBound(kMaxTime2);
191 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); 190 EXPECT_EQ(kMaxTime1, interpolator_.GetInterpolatedTime());
192 191
193 AdvanceSystemTime(kTimeInterval); 192 AdvanceSystemTime(kTimeInterval);
194 EXPECT_EQ(kMaxTime1 + kTimeInterval, clock_.Elapsed()); 193 EXPECT_EQ(kMaxTime1 + kTimeInterval, interpolator_.GetInterpolatedTime());
195 194
196 AdvanceSystemTime(kTimeInterval); 195 AdvanceSystemTime(kTimeInterval);
197 EXPECT_EQ(kMaxTime2, clock_.Elapsed()); 196 EXPECT_EQ(kMaxTime2, interpolator_.GetInterpolatedTime());
198 } 197 }
199 198
200 } // namespace media 199 } // namespace media
OLDNEW
« no previous file with comments | « media/base/time_delta_interpolator.cc ('k') | media/filters/pipeline_integration_test_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698