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

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

Issue 375003002: Remove duration from media::Clock. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix android 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/clock.cc ('k') | media/base/pipeline.h » ('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/compiler_specific.h"
6 #include "base/logging.h" 5 #include "base/logging.h"
7 #include "base/test/simple_test_tick_clock.h" 6 #include "base/test/simple_test_tick_clock.h"
8 #include "base/time/clock.h"
9 #include "media/base/clock.h" 7 #include "media/base/clock.h"
10 #include "testing/gmock/include/gmock/gmock.h" 8 #include "testing/gtest/include/gtest/gtest.h"
11
12 using ::testing::InSequence;
13 using ::testing::Return;
14 using ::testing::StrictMock;
15
16 namespace base {
17
18 // Provide a stream output operator so we can use EXPECT_EQ(...) with TimeDelta.
19 //
20 // TODO(scherkus): move this into the testing package.
21 static std::ostream& operator<<(std::ostream& stream, const TimeDelta& time) {
22 return (stream << time.ToInternalValue());
23 }
24
25 } // namespace
26 9
27 namespace media { 10 namespace media {
28 11
29 static const int kDurationInSeconds = 120;
30
31 class ClockTest : public ::testing::Test { 12 class ClockTest : public ::testing::Test {
32 public: 13 public:
33 ClockTest() : clock_(&test_tick_clock_) { 14 ClockTest() : clock_(&test_tick_clock_) {}
34 SetDuration();
35 }
36 15
37 protected: 16 protected:
38 void SetDuration() {
39 const base::TimeDelta kDuration =
40 base::TimeDelta::FromSeconds(kDurationInSeconds);
41 clock_.SetDuration(kDuration);
42 EXPECT_EQ(kDuration, clock_.Duration());
43 }
44
45 void AdvanceSystemTime(base::TimeDelta delta) { 17 void AdvanceSystemTime(base::TimeDelta delta) {
46 test_tick_clock_.Advance(delta); 18 test_tick_clock_.Advance(delta);
47 } 19 }
48 20
49 base::SimpleTestTickClock test_tick_clock_; 21 base::SimpleTestTickClock test_tick_clock_;
50 Clock clock_; 22 Clock clock_;
51 base::TimeDelta time_elapsed_; 23 base::TimeDelta time_elapsed_;
52 }; 24 };
53 25
54 TEST_F(ClockTest, Created) { 26 TEST_F(ClockTest, Created) {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 // Play again for 4 more seconds. 119 // Play again for 4 more seconds.
148 EXPECT_EQ(kExpectedFirstPause, clock_.Play()); 120 EXPECT_EQ(kExpectedFirstPause, clock_.Play());
149 AdvanceSystemTime(kPlayDuration); 121 AdvanceSystemTime(kPlayDuration);
150 EXPECT_EQ(kExpectedSecondPause, clock_.Pause()); 122 EXPECT_EQ(kExpectedSecondPause, clock_.Pause());
151 EXPECT_EQ(kExpectedSecondPause, clock_.Elapsed()); 123 EXPECT_EQ(kExpectedSecondPause, clock_.Elapsed());
152 } 124 }
153 125
154 TEST_F(ClockTest, SetTime_Paused) { 126 TEST_F(ClockTest, SetTime_Paused) {
155 const base::TimeDelta kFirstTime = base::TimeDelta::FromSeconds(4); 127 const base::TimeDelta kFirstTime = base::TimeDelta::FromSeconds(4);
156 const base::TimeDelta kSecondTime = base::TimeDelta::FromSeconds(16); 128 const base::TimeDelta kSecondTime = base::TimeDelta::FromSeconds(16);
129 const base::TimeDelta kArbitraryMaxTime = base::TimeDelta::FromSeconds(100);
157 130
158 clock_.SetTime(kFirstTime, clock_.Duration()); 131 clock_.SetTime(kFirstTime, kArbitraryMaxTime);
159 EXPECT_EQ(kFirstTime, clock_.Elapsed()); 132 EXPECT_EQ(kFirstTime, clock_.Elapsed());
160 clock_.SetTime(kSecondTime, clock_.Duration()); 133 clock_.SetTime(kSecondTime, kArbitraryMaxTime);
161 EXPECT_EQ(kSecondTime, clock_.Elapsed()); 134 EXPECT_EQ(kSecondTime, clock_.Elapsed());
162 } 135 }
163 136
164 TEST_F(ClockTest, SetTime_Playing) { 137 TEST_F(ClockTest, SetTime_Playing) {
165 // We'll play for 4 seconds, then set the time to 12, then play for 4 more 138 // We'll play for 4 seconds, then set the time to 12, then play for 4 more
166 // seconds. 139 // seconds.
167 const base::TimeDelta kZero; 140 const base::TimeDelta kZero;
168 const base::TimeDelta kPlayDuration = base::TimeDelta::FromSeconds(4); 141 const base::TimeDelta kPlayDuration = base::TimeDelta::FromSeconds(4);
169 const base::TimeDelta kUpdatedTime = base::TimeDelta::FromSeconds(12); 142 const base::TimeDelta kUpdatedTime = base::TimeDelta::FromSeconds(12);
143 const base::TimeDelta kArbitraryMaxTime = base::TimeDelta::FromSeconds(100);
170 const base::TimeDelta kExpected = kUpdatedTime + kPlayDuration; 144 const base::TimeDelta kExpected = kUpdatedTime + kPlayDuration;
171 145
172 EXPECT_EQ(kZero, clock_.Play()); 146 EXPECT_EQ(kZero, clock_.Play());
173 AdvanceSystemTime(kPlayDuration); 147 AdvanceSystemTime(kPlayDuration);
174 148
175 clock_.SetTime(kUpdatedTime, clock_.Duration()); 149 clock_.SetTime(kUpdatedTime, kArbitraryMaxTime);
176 AdvanceSystemTime(kPlayDuration); 150 AdvanceSystemTime(kPlayDuration);
177 EXPECT_EQ(kExpected, clock_.Elapsed()); 151 EXPECT_EQ(kExpected, clock_.Elapsed());
178 } 152 }
179 153
180 TEST_F(ClockTest, CapAtMediaDuration_Paused) {
181 const base::TimeDelta kDuration =
182 base::TimeDelta::FromSeconds(kDurationInSeconds);
183 const base::TimeDelta kTimeOverDuration =
184 base::TimeDelta::FromSeconds(kDurationInSeconds + 4);
185
186 // Elapsed time should always be capped at the duration of the media.
187 clock_.SetTime(kTimeOverDuration, kTimeOverDuration);
188 EXPECT_EQ(kDuration, clock_.Elapsed());
189 }
190
191 TEST_F(ClockTest, CapAtMediaDuration_Playing) {
192 const base::TimeDelta kZero;
193 const base::TimeDelta kDuration =
194 base::TimeDelta::FromSeconds(kDurationInSeconds);
195 const base::TimeDelta kTimeOverDuration =
196 base::TimeDelta::FromSeconds(kDurationInSeconds + 4);
197
198 // Play for twice as long as the duration of the media.
199 EXPECT_EQ(kZero, clock_.Play());
200 AdvanceSystemTime(2 * kDuration);
201 EXPECT_EQ(kDuration, clock_.Elapsed());
202
203 // Manually set the time past the duration.
204 clock_.SetTime(kTimeOverDuration, kTimeOverDuration);
205 EXPECT_EQ(kDuration, clock_.Elapsed());
206 }
207
208 TEST_F(ClockTest, SetMaxTime) { 154 TEST_F(ClockTest, SetMaxTime) {
209 const base::TimeDelta kZero; 155 const base::TimeDelta kZero;
210 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4); 156 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4);
211 const base::TimeDelta kMaxTime = base::TimeDelta::FromSeconds(6); 157 const base::TimeDelta kMaxTime = base::TimeDelta::FromSeconds(6);
212 158
213 EXPECT_EQ(kZero, clock_.Play()); 159 EXPECT_EQ(kZero, clock_.Play());
214 clock_.SetMaxTime(kMaxTime); 160 clock_.SetMaxTime(kMaxTime);
215 AdvanceSystemTime(kTimeInterval); 161 AdvanceSystemTime(kTimeInterval);
216 EXPECT_EQ(kTimeInterval, clock_.Elapsed()); 162 EXPECT_EQ(kTimeInterval, clock_.Elapsed());
217 163
218 AdvanceSystemTime(kTimeInterval); 164 AdvanceSystemTime(kTimeInterval);
219 EXPECT_EQ(kMaxTime, clock_.Elapsed()); 165 EXPECT_EQ(kMaxTime, clock_.Elapsed());
220 166
221 AdvanceSystemTime(kTimeInterval); 167 AdvanceSystemTime(kTimeInterval);
222 EXPECT_EQ(kMaxTime, clock_.Elapsed()); 168 EXPECT_EQ(kMaxTime, clock_.Elapsed());
223 } 169 }
224 170
225 TEST_F(ClockTest, SetMaxTime_MultipleTimes) { 171 TEST_F(ClockTest, SetMaxTime_MultipleTimes) {
226 const base::TimeDelta kZero; 172 const base::TimeDelta kZero;
227 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4); 173 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4);
174 const base::TimeDelta kMaxTime0 = base::TimeDelta::FromSeconds(120);
228 const base::TimeDelta kMaxTime1 = base::TimeDelta::FromSeconds(6); 175 const base::TimeDelta kMaxTime1 = base::TimeDelta::FromSeconds(6);
229 const base::TimeDelta kMaxTime2 = base::TimeDelta::FromSeconds(12); 176 const base::TimeDelta kMaxTime2 = base::TimeDelta::FromSeconds(12);
230 177
231 EXPECT_EQ(kZero, clock_.Play()); 178 EXPECT_EQ(kZero, clock_.Play());
232 clock_.SetMaxTime(clock_.Duration()); 179 clock_.SetMaxTime(kMaxTime0);
233 AdvanceSystemTime(kTimeInterval); 180 AdvanceSystemTime(kTimeInterval);
234 EXPECT_EQ(kTimeInterval, clock_.Elapsed()); 181 EXPECT_EQ(kTimeInterval, clock_.Elapsed());
235 182
236 clock_.SetMaxTime(kMaxTime1); 183 clock_.SetMaxTime(kMaxTime1);
237 AdvanceSystemTime(kTimeInterval); 184 AdvanceSystemTime(kTimeInterval);
238 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); 185 EXPECT_EQ(kMaxTime1, clock_.Elapsed());
239 186
240 AdvanceSystemTime(kTimeInterval); 187 AdvanceSystemTime(kTimeInterval);
241 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); 188 EXPECT_EQ(kMaxTime1, clock_.Elapsed());
242 189
243 clock_.SetMaxTime(kMaxTime2); 190 clock_.SetMaxTime(kMaxTime2);
244 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); 191 EXPECT_EQ(kMaxTime1, clock_.Elapsed());
245 192
246 AdvanceSystemTime(kTimeInterval); 193 AdvanceSystemTime(kTimeInterval);
247 EXPECT_EQ(kMaxTime1 + kTimeInterval, clock_.Elapsed()); 194 EXPECT_EQ(kMaxTime1 + kTimeInterval, clock_.Elapsed());
248 195
249 AdvanceSystemTime(kTimeInterval); 196 AdvanceSystemTime(kTimeInterval);
250 EXPECT_EQ(kMaxTime2, clock_.Elapsed()); 197 EXPECT_EQ(kMaxTime2, clock_.Elapsed());
251 } 198 }
252 199
253 } // namespace media 200 } // namespace media
OLDNEW
« no previous file with comments | « media/base/clock.cc ('k') | media/base/pipeline.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698