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

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

Issue 9155003: Fix media timeline so that thumb never exceeds buffered data (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 11 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/mock_time_provider.h" 6 #include "base/test/mock_time_provider.h"
7 #include "media/base/clock.h" 7 #include "media/base/clock.h"
8 #include "testing/gmock/include/gmock/gmock.h" 8 #include "testing/gmock/include/gmock/gmock.h"
9 9
10 using ::testing::InSequence; 10 using ::testing::InSequence;
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 EXPECT_EQ(kFirstPause, clock.Elapsed()); 149 EXPECT_EQ(kFirstPause, clock.Elapsed());
150 EXPECT_EQ(kFirstPause, clock.Play()); 150 EXPECT_EQ(kFirstPause, clock.Play());
151 EXPECT_EQ(kSecondPause, clock.Pause()); 151 EXPECT_EQ(kSecondPause, clock.Pause());
152 EXPECT_EQ(kSecondPause, clock.Elapsed()); 152 EXPECT_EQ(kSecondPause, clock.Elapsed());
153 } 153 }
154 154
155 TEST(ClockTest, SetTime_Paused) { 155 TEST(ClockTest, SetTime_Paused) {
156 // We'll remain paused while we set the time. The time should be simply 156 // We'll remain paused while we set the time. The time should be simply
157 // updated without accessing the time provider. 157 // updated without accessing the time provider.
158 InSequence s; 158 InSequence s;
159 StrictMock<base::MockTimeProvider> mock_time; 159 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(120);
160 const base::TimeDelta kFirstTime = base::TimeDelta::FromSeconds(4); 160 const base::TimeDelta kFirstTime = base::TimeDelta::FromSeconds(4);
161 const base::TimeDelta kSecondTime = base::TimeDelta::FromSeconds(16); 161 const base::TimeDelta kSecondTime = base::TimeDelta::FromSeconds(16);
162 162
163 Clock clock(&base::MockTimeProvider::StaticNow); 163 Clock clock(&base::MockTimeProvider::StaticNow);
164 clock.SetTime(kFirstTime); 164 clock.SetTime(kFirstTime, kDuration);
165 EXPECT_EQ(kFirstTime, clock.Elapsed()); 165 EXPECT_EQ(kFirstTime, clock.Elapsed());
166 clock.SetTime(kSecondTime); 166 clock.SetTime(kSecondTime, kDuration);
167 EXPECT_EQ(kSecondTime, clock.Elapsed()); 167 EXPECT_EQ(kSecondTime, clock.Elapsed());
168 } 168 }
169 169
170 TEST(ClockTest, SetTime_Playing) { 170 TEST(ClockTest, SetTime_Playing) {
171 // We'll play for 4 seconds, then set the time to 12, then play for 4 more 171 // We'll play for 4 seconds, then set the time to 12, then play for 4 more
172 // seconds. We'll expect a media time of 16. 172 // seconds. We'll expect a media time of 16.
173 InSequence s; 173 InSequence s;
174 StrictMock<base::MockTimeProvider> mock_time; 174 StrictMock<base::MockTimeProvider> mock_time;
175 EXPECT_CALL(mock_time, Now()) 175 EXPECT_CALL(mock_time, Now())
176 .WillOnce(Return(base::Time::FromDoubleT(4))); 176 .WillOnce(Return(base::Time::FromDoubleT(4)));
177 EXPECT_CALL(mock_time, Now()) 177 EXPECT_CALL(mock_time, Now())
178 .WillOnce(Return(base::Time::FromDoubleT(8))); 178 .WillOnce(Return(base::Time::FromDoubleT(8)));
179 EXPECT_CALL(mock_time, Now()) 179 EXPECT_CALL(mock_time, Now())
180 .WillOnce(Return(base::Time::FromDoubleT(12))); 180 .WillOnce(Return(base::Time::FromDoubleT(12)));
181 const base::TimeDelta kZero; 181 const base::TimeDelta kZero;
182 const base::TimeDelta kExepected = base::TimeDelta::FromSeconds(16); 182 const base::TimeDelta kExpected = base::TimeDelta::FromSeconds(16);
183 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(120);
183 184
184 Clock clock(&base::MockTimeProvider::StaticNow); 185 Clock clock(&base::MockTimeProvider::StaticNow);
185 EXPECT_EQ(kZero, clock.Play()); 186 EXPECT_EQ(kZero, clock.Play());
186 clock.SetTime(base::TimeDelta::FromSeconds(12)); 187 clock.SetTime(base::TimeDelta::FromSeconds(12), kDuration);
187 EXPECT_EQ(kExepected, clock.Elapsed()); 188 EXPECT_EQ(kExpected, clock.Elapsed());
189 }
190
191 TEST(ClockTest, SetMediaDuration_Paused) {
192 InSequence s;
193 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(120);
194 const base::TimeDelta kTimeOverDuration =
195 kDuration + base::TimeDelta::FromSeconds(4);
196
197 Clock clock(&base::MockTimeProvider::StaticNow);
198 clock.set_media_duration(kDuration);
199 EXPECT_EQ(kDuration, clock.media_duration());
200
201 // Elapsed time should always be capped at the duration of the media.
202 clock.SetTime(kTimeOverDuration, kTimeOverDuration);
203 EXPECT_EQ(kDuration, clock.Elapsed());
204 }
205
206 TEST(ClockTest, SetMediaDuration_Playing) {
207 InSequence s;
208 StrictMock<base::MockTimeProvider> mock_time;
209 EXPECT_CALL(mock_time, Now())
210 .WillOnce(Return(base::Time::FromDoubleT(4)));
211 EXPECT_CALL(mock_time, Now())
212 .WillOnce(Return(base::Time::FromDoubleT(124)));
213 EXPECT_CALL(mock_time, Now())
214 .WillOnce(Return(base::Time::FromDoubleT(128)));
215 const base::TimeDelta kZero;
216 const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(120);
217 const base::TimeDelta kTimeOverDuration =
218 kDuration + base::TimeDelta::FromSeconds(4);
219
220 Clock clock(&base::MockTimeProvider::StaticNow);
221 EXPECT_EQ(kZero, clock.Play());
222 clock.set_media_duration(kDuration);
223 EXPECT_EQ(kDuration, clock.media_duration());
224 clock.SetTime(kTimeOverDuration, kTimeOverDuration);
225 EXPECT_EQ(kDuration, clock.Elapsed());
188 } 226 }
189 227
acolwell GONE FROM CHROMIUM 2012/01/13 22:51:21 Please add some unit tests for set_max_time enforc
vrk (LEFT CHROMIUM) 2012/01/21 00:54:14 Done... and actually this was such an annoying tes
190 } // namespace media 228 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698