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 <cstdlib> | 5 #include <cstdlib> |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
10 #include "media/base/data_buffer.h" | 10 #include "media/base/data_buffer.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 // Create random test data samples. | 34 // Create random test data samples. |
35 for (int i = 0; i < kDataSize; i++) | 35 for (int i = 0; i < kDataSize; i++) |
36 data_[i] = static_cast<char>(rand()); | 36 data_[i] = static_cast<char>(rand()); |
37 } | 37 } |
38 | 38 |
39 int GetRandomInt(int maximum) { | 39 int GetRandomInt(int maximum) { |
40 return rand() % (maximum + 1); | 40 return rand() % (maximum + 1); |
41 } | 41 } |
42 | 42 |
43 SeekableBuffer buffer_; | 43 SeekableBuffer buffer_; |
44 uint8 data_[kDataSize]; | 44 uint8_t data_[kDataSize]; |
45 uint8 write_buffer_[kDataSize]; | 45 uint8_t write_buffer_[kDataSize]; |
46 }; | 46 }; |
47 | 47 |
48 TEST_F(SeekableBufferTest, RandomReadWrite) { | 48 TEST_F(SeekableBufferTest, RandomReadWrite) { |
49 int write_position = 0; | 49 int write_position = 0; |
50 int read_position = 0; | 50 int read_position = 0; |
51 while (read_position < kDataSize) { | 51 while (read_position < kDataSize) { |
52 // Write a random amount of data. | 52 // Write a random amount of data. |
53 int write_size = GetRandomInt(kBufferSize); | 53 int write_size = GetRandomInt(kBufferSize); |
54 write_size = std::min(write_size, kDataSize - write_position); | 54 write_size = std::min(write_size, kDataSize - write_position); |
55 bool should_append = buffer_.Append(data_ + write_position, write_size); | 55 bool should_append = buffer_.Append(data_ + write_position, write_size); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, kReadSize)); | 112 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, kReadSize)); |
113 | 113 |
114 // Read. | 114 // Read. |
115 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); | 115 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); |
116 forward_bytes -= kReadSize; | 116 forward_bytes -= kReadSize; |
117 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); | 117 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); |
118 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, kReadSize)); | 118 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, kReadSize)); |
119 read_position += kReadSize; | 119 read_position += kReadSize; |
120 | 120 |
121 // Seek backward. | 121 // Seek backward. |
122 EXPECT_TRUE(buffer_.Seek(-3 * static_cast<int32>(kReadSize))); | 122 EXPECT_TRUE(buffer_.Seek(-3 * static_cast<int32_t>(kReadSize))); |
123 forward_bytes += 3 * kReadSize; | 123 forward_bytes += 3 * kReadSize; |
124 read_position -= 3 * kReadSize; | 124 read_position -= 3 * kReadSize; |
125 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); | 125 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); |
126 | 126 |
127 // Copy. | 127 // Copy. |
128 EXPECT_EQ(kReadSize, buffer_.Peek(write_buffer_, kReadSize)); | 128 EXPECT_EQ(kReadSize, buffer_.Peek(write_buffer_, kReadSize)); |
129 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); | 129 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); |
130 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, kReadSize)); | 130 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, kReadSize)); |
131 | 131 |
132 // Read. | 132 // Read. |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 buffer_.Append(data_ + i, kWriteSize); | 209 buffer_.Append(data_ + i, kWriteSize); |
210 } | 210 } |
211 | 211 |
212 // Read until buffer is empty. | 212 // Read until buffer is empty. |
213 for (int i = 0; i < kBufferSize; i += kReadSize) { | 213 for (int i = 0; i < kBufferSize; i += kReadSize) { |
214 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); | 214 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); |
215 EXPECT_EQ(0, memcmp(write_buffer_, data_ + i, kReadSize)); | 215 EXPECT_EQ(0, memcmp(write_buffer_, data_ + i, kReadSize)); |
216 } | 216 } |
217 | 217 |
218 // Seek backward. | 218 // Seek backward. |
219 EXPECT_TRUE(buffer_.Seek(-static_cast<int32>(kBufferSize))); | 219 EXPECT_TRUE(buffer_.Seek(-static_cast<int32_t>(kBufferSize))); |
220 EXPECT_FALSE(buffer_.Seek(-1)); | 220 EXPECT_FALSE(buffer_.Seek(-1)); |
221 | 221 |
222 // Read again. | 222 // Read again. |
223 for (int i = 0; i < kBufferSize; i += kReadSize) { | 223 for (int i = 0; i < kBufferSize; i += kReadSize) { |
224 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); | 224 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); |
225 EXPECT_EQ(0, memcmp(write_buffer_, data_ + i, kReadSize)); | 225 EXPECT_EQ(0, memcmp(write_buffer_, data_ + i, kReadSize)); |
226 } | 226 } |
227 } | 227 } |
228 | 228 |
229 TEST_F(SeekableBufferTest, GetCurrentChunk) { | 229 TEST_F(SeekableBufferTest, GetCurrentChunk) { |
230 const int kSeekSize = kWriteSize / 3; | 230 const int kSeekSize = kWriteSize / 3; |
231 | 231 |
232 scoped_refptr<DataBuffer> buffer = DataBuffer::CopyFrom(data_, kWriteSize); | 232 scoped_refptr<DataBuffer> buffer = DataBuffer::CopyFrom(data_, kWriteSize); |
233 | 233 |
234 const uint8* data; | 234 const uint8_t* data; |
235 int size; | 235 int size; |
236 EXPECT_FALSE(buffer_.GetCurrentChunk(&data, &size)); | 236 EXPECT_FALSE(buffer_.GetCurrentChunk(&data, &size)); |
237 | 237 |
238 buffer_.Append(buffer.get()); | 238 buffer_.Append(buffer.get()); |
239 EXPECT_TRUE(buffer_.GetCurrentChunk(&data, &size)); | 239 EXPECT_TRUE(buffer_.GetCurrentChunk(&data, &size)); |
240 EXPECT_EQ(data, buffer->data()); | 240 EXPECT_EQ(data, buffer->data()); |
241 EXPECT_EQ(size, buffer->data_size()); | 241 EXPECT_EQ(size, buffer->data_size()); |
242 | 242 |
243 buffer_.Seek(kSeekSize); | 243 buffer_.Seek(kSeekSize); |
244 EXPECT_TRUE(buffer_.GetCurrentChunk(&data, &size)); | 244 EXPECT_TRUE(buffer_.GetCurrentChunk(&data, &size)); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
285 EXPECT_EQ(0, buffer_.Read(write_buffer_, 0)); | 285 EXPECT_EQ(0, buffer_.Read(write_buffer_, 0)); |
286 EXPECT_EQ(0, buffer_.Read(write_buffer_, 1)); | 286 EXPECT_EQ(0, buffer_.Read(write_buffer_, 1)); |
287 EXPECT_TRUE(buffer_.Seek(0)); | 287 EXPECT_TRUE(buffer_.Seek(0)); |
288 EXPECT_FALSE(buffer_.Seek(-1)); | 288 EXPECT_FALSE(buffer_.Seek(-1)); |
289 EXPECT_FALSE(buffer_.Seek(1)); | 289 EXPECT_FALSE(buffer_.Seek(1)); |
290 EXPECT_EQ(0, buffer_.forward_bytes()); | 290 EXPECT_EQ(0, buffer_.forward_bytes()); |
291 EXPECT_EQ(0, buffer_.backward_bytes()); | 291 EXPECT_EQ(0, buffer_.backward_bytes()); |
292 } | 292 } |
293 | 293 |
294 TEST_F(SeekableBufferTest, GetTime) { | 294 TEST_F(SeekableBufferTest, GetTime) { |
295 const int64 kNoTS = kNoTimestamp().ToInternalValue(); | 295 const int64_t kNoTS = kNoTimestamp().ToInternalValue(); |
296 const struct { | 296 const struct { |
297 int64 first_time_useconds; | 297 int64_t first_time_useconds; |
298 int64 duration_useconds; | 298 int64_t duration_useconds; |
299 int consume_bytes; | 299 int consume_bytes; |
300 int64 expected_time; | 300 int64_t expected_time; |
301 } tests[] = { | 301 } tests[] = { |
302 { kNoTS, 1000000, 0, kNoTS }, | 302 { kNoTS, 1000000, 0, kNoTS }, |
303 { kNoTS, 4000000, 0, kNoTS }, | 303 { kNoTS, 4000000, 0, kNoTS }, |
304 { kNoTS, 8000000, 0, kNoTS }, | 304 { kNoTS, 8000000, 0, kNoTS }, |
305 { kNoTS, 1000000, kWriteSize / 2, kNoTS }, | 305 { kNoTS, 1000000, kWriteSize / 2, kNoTS }, |
306 { kNoTS, 4000000, kWriteSize / 2, kNoTS }, | 306 { kNoTS, 4000000, kWriteSize / 2, kNoTS }, |
307 { kNoTS, 8000000, kWriteSize / 2, kNoTS }, | 307 { kNoTS, 8000000, kWriteSize / 2, kNoTS }, |
308 { kNoTS, 1000000, kWriteSize, kNoTS }, | 308 { kNoTS, 1000000, kWriteSize, kNoTS }, |
309 { kNoTS, 4000000, kWriteSize, kNoTS }, | 309 { kNoTS, 4000000, kWriteSize, kNoTS }, |
310 { kNoTS, 8000000, kWriteSize, kNoTS }, | 310 { kNoTS, 8000000, kWriteSize, kNoTS }, |
(...skipping 24 matching lines...) Expand all Loading... |
335 scoped_refptr<DataBuffer> buffer = DataBuffer::CopyFrom(data_, kWriteSize); | 335 scoped_refptr<DataBuffer> buffer = DataBuffer::CopyFrom(data_, kWriteSize); |
336 | 336 |
337 for (size_t i = 0; i < arraysize(tests); ++i) { | 337 for (size_t i = 0; i < arraysize(tests); ++i) { |
338 buffer->set_timestamp(base::TimeDelta::FromMicroseconds( | 338 buffer->set_timestamp(base::TimeDelta::FromMicroseconds( |
339 tests[i].first_time_useconds)); | 339 tests[i].first_time_useconds)); |
340 buffer->set_duration(base::TimeDelta::FromMicroseconds( | 340 buffer->set_duration(base::TimeDelta::FromMicroseconds( |
341 tests[i].duration_useconds)); | 341 tests[i].duration_useconds)); |
342 buffer_.Append(buffer.get()); | 342 buffer_.Append(buffer.get()); |
343 EXPECT_TRUE(buffer_.Seek(tests[i].consume_bytes)); | 343 EXPECT_TRUE(buffer_.Seek(tests[i].consume_bytes)); |
344 | 344 |
345 int64 actual = buffer_.current_time().ToInternalValue(); | 345 int64_t actual = buffer_.current_time().ToInternalValue(); |
346 | 346 |
347 EXPECT_EQ(tests[i].expected_time, actual) << "With test = { start:" | 347 EXPECT_EQ(tests[i].expected_time, actual) << "With test = { start:" |
348 << tests[i].first_time_useconds << ", duration:" | 348 << tests[i].first_time_useconds << ", duration:" |
349 << tests[i].duration_useconds << ", consumed:" | 349 << tests[i].duration_useconds << ", consumed:" |
350 << tests[i].consume_bytes << " }\n"; | 350 << tests[i].consume_bytes << " }\n"; |
351 | 351 |
352 buffer_.Clear(); | 352 buffer_.Clear(); |
353 } | 353 } |
354 } | 354 } |
355 | 355 |
356 } // namespace media | 356 } // namespace media |
OLD | NEW |