Chromium Code Reviews| 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 |