OLD | NEW |
---|---|
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" | 5 #include "base/compiler_specific.h" |
6 #include "base/logging.h" | 6 #include "base/logging.h" |
7 #include "base/test/simple_test_tick_clock.h" | 7 #include "base/test/simple_test_tick_clock.h" |
8 #include "base/time/clock.h" | 8 #include "base/time/clock.h" |
9 #include "media/base/clock.h" | 9 #include "media/base/clock.h" |
10 #include "testing/gmock/include/gmock/gmock.h" | 10 #include "testing/gmock/include/gmock/gmock.h" |
(...skipping 12 matching lines...) Expand all Loading... | |
23 } | 23 } |
24 | 24 |
25 } // namespace | 25 } // namespace |
26 | 26 |
27 namespace media { | 27 namespace media { |
28 | 28 |
29 static const int kDurationInSeconds = 120; | 29 static const int kDurationInSeconds = 120; |
30 | 30 |
31 class ClockTest : public ::testing::Test { | 31 class ClockTest : public ::testing::Test { |
32 public: | 32 public: |
33 ClockTest() : clock_(&test_tick_clock_) { | 33 ClockTest() |
34 SetDuration(); | 34 : clock_(&test_tick_clock_), |
35 } | 35 duration_(base::TimeDelta::FromSeconds(kDurationInSeconds)) {} |
36 | 36 |
37 protected: | 37 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) { | 38 void AdvanceSystemTime(base::TimeDelta delta) { |
46 test_tick_clock_.Advance(delta); | 39 test_tick_clock_.Advance(delta); |
47 } | 40 } |
48 | 41 |
49 base::SimpleTestTickClock test_tick_clock_; | 42 base::SimpleTestTickClock test_tick_clock_; |
50 Clock clock_; | 43 Clock clock_; |
51 base::TimeDelta time_elapsed_; | 44 base::TimeDelta time_elapsed_; |
45 base::TimeDelta duration_; | |
xhwang
2014/07/08 19:53:10
Now the Clock has no concept of duration. Rename t
scherkus (not reviewing)
2014/07/08 21:20:04
Actually I just removed it instead and created con
| |
52 }; | 46 }; |
53 | 47 |
54 TEST_F(ClockTest, Created) { | 48 TEST_F(ClockTest, Created) { |
55 const base::TimeDelta kExpected = base::TimeDelta::FromSeconds(0); | 49 const base::TimeDelta kExpected = base::TimeDelta::FromSeconds(0); |
56 EXPECT_EQ(kExpected, clock_.Elapsed()); | 50 EXPECT_EQ(kExpected, clock_.Elapsed()); |
57 } | 51 } |
58 | 52 |
59 TEST_F(ClockTest, Play_NormalSpeed) { | 53 TEST_F(ClockTest, Play_NormalSpeed) { |
60 const base::TimeDelta kZero; | 54 const base::TimeDelta kZero; |
61 const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(2); | 55 const base::TimeDelta kTimeToAdvance = base::TimeDelta::FromSeconds(2); |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
148 EXPECT_EQ(kExpectedFirstPause, clock_.Play()); | 142 EXPECT_EQ(kExpectedFirstPause, clock_.Play()); |
149 AdvanceSystemTime(kPlayDuration); | 143 AdvanceSystemTime(kPlayDuration); |
150 EXPECT_EQ(kExpectedSecondPause, clock_.Pause()); | 144 EXPECT_EQ(kExpectedSecondPause, clock_.Pause()); |
151 EXPECT_EQ(kExpectedSecondPause, clock_.Elapsed()); | 145 EXPECT_EQ(kExpectedSecondPause, clock_.Elapsed()); |
152 } | 146 } |
153 | 147 |
154 TEST_F(ClockTest, SetTime_Paused) { | 148 TEST_F(ClockTest, SetTime_Paused) { |
155 const base::TimeDelta kFirstTime = base::TimeDelta::FromSeconds(4); | 149 const base::TimeDelta kFirstTime = base::TimeDelta::FromSeconds(4); |
156 const base::TimeDelta kSecondTime = base::TimeDelta::FromSeconds(16); | 150 const base::TimeDelta kSecondTime = base::TimeDelta::FromSeconds(16); |
157 | 151 |
158 clock_.SetTime(kFirstTime, clock_.Duration()); | 152 clock_.SetTime(kFirstTime, duration_); |
159 EXPECT_EQ(kFirstTime, clock_.Elapsed()); | 153 EXPECT_EQ(kFirstTime, clock_.Elapsed()); |
160 clock_.SetTime(kSecondTime, clock_.Duration()); | 154 clock_.SetTime(kSecondTime, duration_); |
161 EXPECT_EQ(kSecondTime, clock_.Elapsed()); | 155 EXPECT_EQ(kSecondTime, clock_.Elapsed()); |
162 } | 156 } |
163 | 157 |
164 TEST_F(ClockTest, SetTime_Playing) { | 158 TEST_F(ClockTest, SetTime_Playing) { |
165 // We'll play for 4 seconds, then set the time to 12, then play for 4 more | 159 // We'll play for 4 seconds, then set the time to 12, then play for 4 more |
166 // seconds. | 160 // seconds. |
167 const base::TimeDelta kZero; | 161 const base::TimeDelta kZero; |
168 const base::TimeDelta kPlayDuration = base::TimeDelta::FromSeconds(4); | 162 const base::TimeDelta kPlayDuration = base::TimeDelta::FromSeconds(4); |
169 const base::TimeDelta kUpdatedTime = base::TimeDelta::FromSeconds(12); | 163 const base::TimeDelta kUpdatedTime = base::TimeDelta::FromSeconds(12); |
170 const base::TimeDelta kExpected = kUpdatedTime + kPlayDuration; | 164 const base::TimeDelta kExpected = kUpdatedTime + kPlayDuration; |
171 | 165 |
172 EXPECT_EQ(kZero, clock_.Play()); | 166 EXPECT_EQ(kZero, clock_.Play()); |
173 AdvanceSystemTime(kPlayDuration); | 167 AdvanceSystemTime(kPlayDuration); |
174 | 168 |
175 clock_.SetTime(kUpdatedTime, clock_.Duration()); | 169 clock_.SetTime(kUpdatedTime, duration_); |
176 AdvanceSystemTime(kPlayDuration); | 170 AdvanceSystemTime(kPlayDuration); |
177 EXPECT_EQ(kExpected, clock_.Elapsed()); | 171 EXPECT_EQ(kExpected, clock_.Elapsed()); |
178 } | 172 } |
179 | 173 |
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) { | 174 TEST_F(ClockTest, SetMaxTime) { |
209 const base::TimeDelta kZero; | 175 const base::TimeDelta kZero; |
210 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4); | 176 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4); |
211 const base::TimeDelta kMaxTime = base::TimeDelta::FromSeconds(6); | 177 const base::TimeDelta kMaxTime = base::TimeDelta::FromSeconds(6); |
212 | 178 |
213 EXPECT_EQ(kZero, clock_.Play()); | 179 EXPECT_EQ(kZero, clock_.Play()); |
214 clock_.SetMaxTime(kMaxTime); | 180 clock_.SetMaxTime(kMaxTime); |
215 AdvanceSystemTime(kTimeInterval); | 181 AdvanceSystemTime(kTimeInterval); |
216 EXPECT_EQ(kTimeInterval, clock_.Elapsed()); | 182 EXPECT_EQ(kTimeInterval, clock_.Elapsed()); |
217 | 183 |
218 AdvanceSystemTime(kTimeInterval); | 184 AdvanceSystemTime(kTimeInterval); |
219 EXPECT_EQ(kMaxTime, clock_.Elapsed()); | 185 EXPECT_EQ(kMaxTime, clock_.Elapsed()); |
220 | 186 |
221 AdvanceSystemTime(kTimeInterval); | 187 AdvanceSystemTime(kTimeInterval); |
222 EXPECT_EQ(kMaxTime, clock_.Elapsed()); | 188 EXPECT_EQ(kMaxTime, clock_.Elapsed()); |
223 } | 189 } |
224 | 190 |
225 TEST_F(ClockTest, SetMaxTime_MultipleTimes) { | 191 TEST_F(ClockTest, SetMaxTime_MultipleTimes) { |
226 const base::TimeDelta kZero; | 192 const base::TimeDelta kZero; |
227 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4); | 193 const base::TimeDelta kTimeInterval = base::TimeDelta::FromSeconds(4); |
228 const base::TimeDelta kMaxTime1 = base::TimeDelta::FromSeconds(6); | 194 const base::TimeDelta kMaxTime1 = base::TimeDelta::FromSeconds(6); |
229 const base::TimeDelta kMaxTime2 = base::TimeDelta::FromSeconds(12); | 195 const base::TimeDelta kMaxTime2 = base::TimeDelta::FromSeconds(12); |
230 | 196 |
231 EXPECT_EQ(kZero, clock_.Play()); | 197 EXPECT_EQ(kZero, clock_.Play()); |
232 clock_.SetMaxTime(clock_.Duration()); | 198 clock_.SetMaxTime(duration_); |
233 AdvanceSystemTime(kTimeInterval); | 199 AdvanceSystemTime(kTimeInterval); |
234 EXPECT_EQ(kTimeInterval, clock_.Elapsed()); | 200 EXPECT_EQ(kTimeInterval, clock_.Elapsed()); |
235 | 201 |
236 clock_.SetMaxTime(kMaxTime1); | 202 clock_.SetMaxTime(kMaxTime1); |
237 AdvanceSystemTime(kTimeInterval); | 203 AdvanceSystemTime(kTimeInterval); |
238 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); | 204 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); |
239 | 205 |
240 AdvanceSystemTime(kTimeInterval); | 206 AdvanceSystemTime(kTimeInterval); |
241 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); | 207 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); |
242 | 208 |
243 clock_.SetMaxTime(kMaxTime2); | 209 clock_.SetMaxTime(kMaxTime2); |
244 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); | 210 EXPECT_EQ(kMaxTime1, clock_.Elapsed()); |
245 | 211 |
246 AdvanceSystemTime(kTimeInterval); | 212 AdvanceSystemTime(kTimeInterval); |
247 EXPECT_EQ(kMaxTime1 + kTimeInterval, clock_.Elapsed()); | 213 EXPECT_EQ(kMaxTime1 + kTimeInterval, clock_.Elapsed()); |
248 | 214 |
249 AdvanceSystemTime(kTimeInterval); | 215 AdvanceSystemTime(kTimeInterval); |
250 EXPECT_EQ(kMaxTime2, clock_.Elapsed()); | 216 EXPECT_EQ(kMaxTime2, clock_.Elapsed()); |
251 } | 217 } |
252 | 218 |
253 } // namespace media | 219 } // namespace media |
OLD | NEW |