| 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/logging.h" | 5 #include "base/logging.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/time.h" | 7 #include "base/time.h" |
| 8 #include "media/base/data_buffer.h" | 8 #include "media/base/data_buffer.h" |
| 9 #include "media/base/seekable_buffer.h" | 9 #include "media/base/seekable_buffer.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 11 | 11 |
| 12 namespace media { | 12 namespace media { |
| 13 | 13 |
| 14 class SeekableBufferTest : public testing::Test { | 14 class SeekableBufferTest : public testing::Test { |
| 15 public: | 15 public: |
| 16 SeekableBufferTest() : buffer_(kBufferSize, kBufferSize) { | 16 SeekableBufferTest() : buffer_(kBufferSize, kBufferSize) { |
| 17 } | 17 } |
| 18 | 18 |
| 19 protected: | 19 protected: |
| 20 static const size_t kDataSize = 409600; | 20 static const int kDataSize = 409600; |
| 21 static const size_t kBufferSize = 4096; | 21 static const int kBufferSize = 4096; |
| 22 static const size_t kWriteSize = 512; | 22 static const int kWriteSize = 512; |
| 23 | 23 |
| 24 virtual void SetUp() { | 24 virtual void SetUp() { |
| 25 // Setup seed. | 25 // Setup seed. |
| 26 size_t seed = static_cast<int32>(base::Time::Now().ToInternalValue()); | 26 int seed = static_cast<int32>(base::Time::Now().ToInternalValue()); |
| 27 srand(seed); | 27 srand(seed); |
| 28 VLOG(1) << "Random seed: " << seed; | 28 VLOG(1) << "Random seed: " << seed; |
| 29 | 29 |
| 30 // Creates a test data. | 30 // Creates a test data. |
| 31 for (size_t i = 0; i < kDataSize; i++) | 31 for (int i = 0; i < kDataSize; i++) |
| 32 data_[i] = static_cast<char>(rand()); | 32 data_[i] = static_cast<char>(rand()); |
| 33 } | 33 } |
| 34 | 34 |
| 35 size_t GetRandomInt(size_t maximum) { | 35 int GetRandomInt(int maximum) { |
| 36 return rand() % maximum + 1; | 36 return rand() % maximum + 1; |
| 37 } | 37 } |
| 38 | 38 |
| 39 media::SeekableBuffer buffer_; | 39 media::SeekableBuffer buffer_; |
| 40 uint8 data_[kDataSize]; | 40 uint8 data_[kDataSize]; |
| 41 uint8 write_buffer_[kDataSize]; | 41 uint8 write_buffer_[kDataSize]; |
| 42 }; | 42 }; |
| 43 | 43 |
| 44 TEST_F(SeekableBufferTest, RandomReadWrite) { | 44 TEST_F(SeekableBufferTest, RandomReadWrite) { |
| 45 size_t write_position = 0; | 45 int write_position = 0; |
| 46 size_t read_position = 0; | 46 int read_position = 0; |
| 47 while (read_position < kDataSize) { | 47 while (read_position < kDataSize) { |
| 48 // Write a random amount of data. | 48 // Write a random amount of data. |
| 49 size_t write_size = GetRandomInt(kBufferSize); | 49 int write_size = GetRandomInt(kBufferSize); |
| 50 write_size = std::min(write_size, kDataSize - write_position); | 50 write_size = std::min(write_size, kDataSize - write_position); |
| 51 bool should_append = buffer_.Append(data_ + write_position, write_size); | 51 bool should_append = buffer_.Append(data_ + write_position, write_size); |
| 52 write_position += write_size; | 52 write_position += write_size; |
| 53 EXPECT_GE(write_position, read_position); | 53 EXPECT_GE(write_position, read_position); |
| 54 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); | 54 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); |
| 55 EXPECT_EQ(should_append, buffer_.forward_bytes() < kBufferSize) | 55 EXPECT_EQ(should_append, buffer_.forward_bytes() < kBufferSize) |
| 56 << "Incorrect buffer full reported"; | 56 << "Incorrect buffer full reported"; |
| 57 | 57 |
| 58 // Peek a random amount of data. | 58 // Peek a random amount of data. |
| 59 size_t copy_size = GetRandomInt(kBufferSize); | 59 int copy_size = GetRandomInt(kBufferSize); |
| 60 size_t bytes_copied = buffer_.Peek(write_buffer_, copy_size); | 60 int bytes_copied = buffer_.Peek(write_buffer_, copy_size); |
| 61 EXPECT_GE(copy_size, bytes_copied); | 61 EXPECT_GE(copy_size, bytes_copied); |
| 62 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, bytes_copied)); | 62 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, bytes_copied)); |
| 63 | 63 |
| 64 // Read a random amount of data. | 64 // Read a random amount of data. |
| 65 size_t read_size = GetRandomInt(kBufferSize); | 65 int read_size = GetRandomInt(kBufferSize); |
| 66 size_t bytes_read = buffer_.Read(write_buffer_, read_size); | 66 int bytes_read = buffer_.Read(write_buffer_, read_size); |
| 67 EXPECT_GE(read_size, bytes_read); | 67 EXPECT_GE(read_size, bytes_read); |
| 68 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, bytes_read)); | 68 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, bytes_read)); |
| 69 read_position += bytes_read; | 69 read_position += bytes_read; |
| 70 EXPECT_GE(write_position, read_position); | 70 EXPECT_GE(write_position, read_position); |
| 71 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); | 71 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); |
| 72 } | 72 } |
| 73 } | 73 } |
| 74 | 74 |
| 75 TEST_F(SeekableBufferTest, ReadWriteSeek) { | 75 TEST_F(SeekableBufferTest, ReadWriteSeek) { |
| 76 const size_t kReadSize = kWriteSize / 4; | 76 const int kReadSize = kWriteSize / 4; |
| 77 | 77 |
| 78 for (int i = 0; i < 10; ++i) { | 78 for (int i = 0; i < 10; ++i) { |
| 79 // Write until buffer is full. | 79 // Write until buffer is full. |
| 80 for (size_t j = 0; j < kBufferSize; j += kWriteSize) { | 80 for (int j = 0; j < kBufferSize; j += kWriteSize) { |
| 81 bool should_append = buffer_.Append(data_ + j, kWriteSize); | 81 bool should_append = buffer_.Append(data_ + j, kWriteSize); |
| 82 EXPECT_EQ(j < kBufferSize - kWriteSize, should_append) | 82 EXPECT_EQ(j < kBufferSize - kWriteSize, should_append) |
| 83 << "Incorrect buffer full reported"; | 83 << "Incorrect buffer full reported"; |
| 84 EXPECT_EQ(j + kWriteSize, buffer_.forward_bytes()); | 84 EXPECT_EQ(j + kWriteSize, buffer_.forward_bytes()); |
| 85 } | 85 } |
| 86 | 86 |
| 87 // Simulate a read and seek pattern. Each loop reads 4 times, each time | 87 // Simulate a read and seek pattern. Each loop reads 4 times, each time |
| 88 // reading a quarter of |kWriteSize|. | 88 // reading a quarter of |kWriteSize|. |
| 89 size_t read_position = 0; | 89 int read_position = 0; |
| 90 size_t forward_bytes = kBufferSize; | 90 int forward_bytes = kBufferSize; |
| 91 for (size_t j = 0; j < kBufferSize; j += kWriteSize) { | 91 for (int j = 0; j < kBufferSize; j += kWriteSize) { |
| 92 // Read. | 92 // Read. |
| 93 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); | 93 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); |
| 94 forward_bytes -= kReadSize; | 94 forward_bytes -= kReadSize; |
| 95 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); | 95 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); |
| 96 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, kReadSize)); | 96 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, kReadSize)); |
| 97 read_position += kReadSize; | 97 read_position += kReadSize; |
| 98 | 98 |
| 99 // Seek forward. | 99 // Seek forward. |
| 100 EXPECT_TRUE(buffer_.Seek(2 * kReadSize)); | 100 EXPECT_TRUE(buffer_.Seek(2 * kReadSize)); |
| 101 forward_bytes -= 2 * kReadSize; | 101 forward_bytes -= 2 * kReadSize; |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 // Seek forward. | 147 // Seek forward. |
| 148 EXPECT_TRUE(buffer_.Seek(kReadSize)); | 148 EXPECT_TRUE(buffer_.Seek(kReadSize)); |
| 149 forward_bytes -= kReadSize; | 149 forward_bytes -= kReadSize; |
| 150 read_position += kReadSize; | 150 read_position += kReadSize; |
| 151 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); | 151 EXPECT_EQ(forward_bytes, buffer_.forward_bytes()); |
| 152 } | 152 } |
| 153 } | 153 } |
| 154 } | 154 } |
| 155 | 155 |
| 156 TEST_F(SeekableBufferTest, BufferFull) { | 156 TEST_F(SeekableBufferTest, BufferFull) { |
| 157 const size_t kMaxWriteSize = 2 * kBufferSize; | 157 const int kMaxWriteSize = 2 * kBufferSize; |
| 158 | 158 |
| 159 // Write and expect the buffer to be not full. | 159 // Write and expect the buffer to be not full. |
| 160 for (size_t i = 0; i < kBufferSize - kWriteSize; i += kWriteSize) { | 160 for (int i = 0; i < kBufferSize - kWriteSize; i += kWriteSize) { |
| 161 EXPECT_TRUE(buffer_.Append(data_ + i, kWriteSize)); | 161 EXPECT_TRUE(buffer_.Append(data_ + i, kWriteSize)); |
| 162 EXPECT_EQ(i + kWriteSize, buffer_.forward_bytes()); | 162 EXPECT_EQ(i + kWriteSize, buffer_.forward_bytes()); |
| 163 } | 163 } |
| 164 | 164 |
| 165 // Write until we have kMaxWriteSize bytes in the buffer. Buffer is full in | 165 // Write until we have kMaxWriteSize bytes in the buffer. Buffer is full in |
| 166 // these writes. | 166 // these writes. |
| 167 for (size_t i = buffer_.forward_bytes(); i < kMaxWriteSize; i += kWriteSize) { | 167 for (int i = buffer_.forward_bytes(); i < kMaxWriteSize; i += kWriteSize) { |
| 168 EXPECT_FALSE(buffer_.Append(data_ + i, kWriteSize)); | 168 EXPECT_FALSE(buffer_.Append(data_ + i, kWriteSize)); |
| 169 EXPECT_EQ(i + kWriteSize, buffer_.forward_bytes()); | 169 EXPECT_EQ(i + kWriteSize, buffer_.forward_bytes()); |
| 170 } | 170 } |
| 171 | 171 |
| 172 // Read until the buffer is empty. | 172 // Read until the buffer is empty. |
| 173 size_t read_position = 0; | 173 int read_position = 0; |
| 174 while (buffer_.forward_bytes()) { | 174 while (buffer_.forward_bytes()) { |
| 175 // Read a random amount of data. | 175 // Read a random amount of data. |
| 176 size_t read_size = GetRandomInt(kBufferSize); | 176 int read_size = GetRandomInt(kBufferSize); |
| 177 size_t forward_bytes = buffer_.forward_bytes(); | 177 int forward_bytes = buffer_.forward_bytes(); |
| 178 size_t bytes_read = buffer_.Read(write_buffer_, read_size); | 178 int bytes_read = buffer_.Read(write_buffer_, read_size); |
| 179 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, bytes_read)); | 179 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, bytes_read)); |
| 180 if (read_size > forward_bytes) | 180 if (read_size > forward_bytes) |
| 181 EXPECT_EQ(forward_bytes, bytes_read); | 181 EXPECT_EQ(forward_bytes, bytes_read); |
| 182 else | 182 else |
| 183 EXPECT_EQ(read_size, bytes_read); | 183 EXPECT_EQ(read_size, bytes_read); |
| 184 read_position += bytes_read; | 184 read_position += bytes_read; |
| 185 EXPECT_GE(kMaxWriteSize, read_position); | 185 EXPECT_GE(kMaxWriteSize, read_position); |
| 186 EXPECT_EQ(kMaxWriteSize - read_position, buffer_.forward_bytes()); | 186 EXPECT_EQ(kMaxWriteSize - read_position, buffer_.forward_bytes()); |
| 187 } | 187 } |
| 188 | 188 |
| 189 // Expects we have no bytes left. | 189 // Expects we have no bytes left. |
| 190 EXPECT_EQ(0u, buffer_.forward_bytes()); | 190 EXPECT_EQ(0, buffer_.forward_bytes()); |
| 191 EXPECT_EQ(0u, buffer_.Read(write_buffer_, 1)); | 191 EXPECT_EQ(0, buffer_.Read(write_buffer_, 1)); |
| 192 } | 192 } |
| 193 | 193 |
| 194 TEST_F(SeekableBufferTest, SeekBackward) { | 194 TEST_F(SeekableBufferTest, SeekBackward) { |
| 195 EXPECT_EQ(0u, buffer_.forward_bytes()); | 195 EXPECT_EQ(0, buffer_.forward_bytes()); |
| 196 EXPECT_EQ(0u, buffer_.backward_bytes()); | 196 EXPECT_EQ(0, buffer_.backward_bytes()); |
| 197 EXPECT_FALSE(buffer_.Seek(1)); | 197 EXPECT_FALSE(buffer_.Seek(1)); |
| 198 EXPECT_FALSE(buffer_.Seek(-1)); | 198 EXPECT_FALSE(buffer_.Seek(-1)); |
| 199 | 199 |
| 200 const size_t kReadSize = 256; | 200 const int kReadSize = 256; |
| 201 | 201 |
| 202 // Write into buffer until it's full. | 202 // Write into buffer until it's full. |
| 203 for (size_t i = 0; i < kBufferSize; i += kWriteSize) { | 203 for (int i = 0; i < kBufferSize; i += kWriteSize) { |
| 204 // Write a random amount of data. | 204 // Write a random amount of data. |
| 205 buffer_.Append(data_ + i, kWriteSize); | 205 buffer_.Append(data_ + i, kWriteSize); |
| 206 } | 206 } |
| 207 | 207 |
| 208 // Read until buffer is empty. | 208 // Read until buffer is empty. |
| 209 for (size_t i = 0; i < kBufferSize; i += kReadSize) { | 209 for (int i = 0; i < kBufferSize; i += kReadSize) { |
| 210 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); | 210 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); |
| 211 EXPECT_EQ(0, memcmp(write_buffer_, data_ + i, kReadSize)); | 211 EXPECT_EQ(0, memcmp(write_buffer_, data_ + i, kReadSize)); |
| 212 } | 212 } |
| 213 | 213 |
| 214 // Seek backward. | 214 // Seek backward. |
| 215 EXPECT_TRUE(buffer_.Seek(-static_cast<int32>(kBufferSize))); | 215 EXPECT_TRUE(buffer_.Seek(-static_cast<int32>(kBufferSize))); |
| 216 EXPECT_FALSE(buffer_.Seek(-1)); | 216 EXPECT_FALSE(buffer_.Seek(-1)); |
| 217 | 217 |
| 218 // Read again. | 218 // Read again. |
| 219 for (size_t i = 0; i < kBufferSize; i += kReadSize) { | 219 for (int i = 0; i < kBufferSize; i += kReadSize) { |
| 220 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); | 220 EXPECT_EQ(kReadSize, buffer_.Read(write_buffer_, kReadSize)); |
| 221 EXPECT_EQ(0, memcmp(write_buffer_, data_ + i, kReadSize)); | 221 EXPECT_EQ(0, memcmp(write_buffer_, data_ + i, kReadSize)); |
| 222 } | 222 } |
| 223 } | 223 } |
| 224 | 224 |
| 225 TEST_F(SeekableBufferTest, GetCurrentChunk) { | 225 TEST_F(SeekableBufferTest, GetCurrentChunk) { |
| 226 const size_t kSeekSize = kWriteSize / 3; | 226 const int kSeekSize = kWriteSize / 3; |
| 227 | 227 |
| 228 scoped_refptr<media::DataBuffer> buffer(new media::DataBuffer(kWriteSize)); | 228 scoped_refptr<media::DataBuffer> buffer(new media::DataBuffer(kWriteSize)); |
| 229 memcpy(buffer->GetWritableData(), data_, kWriteSize); | 229 memcpy(buffer->GetWritableData(), data_, kWriteSize); |
| 230 buffer->SetDataSize(kWriteSize); | 230 buffer->SetDataSize(kWriteSize); |
| 231 | 231 |
| 232 const uint8* data; | 232 const uint8* data; |
| 233 size_t size; | 233 int size; |
| 234 EXPECT_FALSE(buffer_.GetCurrentChunk(&data, &size)); | 234 EXPECT_FALSE(buffer_.GetCurrentChunk(&data, &size)); |
| 235 | 235 |
| 236 buffer_.Append(buffer.get()); | 236 buffer_.Append(buffer.get()); |
| 237 EXPECT_TRUE(buffer_.GetCurrentChunk(&data, &size)); | 237 EXPECT_TRUE(buffer_.GetCurrentChunk(&data, &size)); |
| 238 EXPECT_EQ(data, buffer->GetData()); | 238 EXPECT_EQ(data, buffer->GetData()); |
| 239 EXPECT_EQ(size, buffer->GetDataSize()); | 239 EXPECT_EQ(size, buffer->GetDataSize()); |
| 240 | 240 |
| 241 buffer_.Seek(kSeekSize); | 241 buffer_.Seek(kSeekSize); |
| 242 EXPECT_TRUE(buffer_.GetCurrentChunk(&data, &size)); | 242 EXPECT_TRUE(buffer_.GetCurrentChunk(&data, &size)); |
| 243 EXPECT_EQ(data, buffer->GetData() + kSeekSize); | 243 EXPECT_EQ(data, buffer->GetData() + kSeekSize); |
| 244 EXPECT_EQ(size, buffer->GetDataSize() - kSeekSize); | 244 EXPECT_EQ(size, buffer->GetDataSize() - kSeekSize); |
| 245 } | 245 } |
| 246 | 246 |
| 247 TEST_F(SeekableBufferTest, SeekForward) { | 247 TEST_F(SeekableBufferTest, SeekForward) { |
| 248 size_t write_position = 0; | 248 int write_position = 0; |
| 249 size_t read_position = 0; | 249 int read_position = 0; |
| 250 while (read_position < kDataSize) { | 250 while (read_position < kDataSize) { |
| 251 for (int i = 0; i < 10 && write_position < kDataSize; ++i) { | 251 for (int i = 0; i < 10 && write_position < kDataSize; ++i) { |
| 252 // Write a random amount of data. | 252 // Write a random amount of data. |
| 253 size_t write_size = GetRandomInt(kBufferSize); | 253 int write_size = GetRandomInt(kBufferSize); |
| 254 write_size = std::min(write_size, kDataSize - write_position); | 254 write_size = std::min(write_size, kDataSize - write_position); |
| 255 | 255 |
| 256 bool should_append = buffer_.Append(data_ + write_position, write_size); | 256 bool should_append = buffer_.Append(data_ + write_position, write_size); |
| 257 write_position += write_size; | 257 write_position += write_size; |
| 258 EXPECT_GE(write_position, read_position); | 258 EXPECT_GE(write_position, read_position); |
| 259 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); | 259 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); |
| 260 EXPECT_EQ(should_append, buffer_.forward_bytes() < kBufferSize) | 260 EXPECT_EQ(should_append, buffer_.forward_bytes() < kBufferSize) |
| 261 << "Incorrect buffer full status reported"; | 261 << "Incorrect buffer full status reported"; |
| 262 } | 262 } |
| 263 | 263 |
| 264 // Read a random amount of data. | 264 // Read a random amount of data. |
| 265 size_t seek_size = GetRandomInt(kBufferSize); | 265 int seek_size = GetRandomInt(kBufferSize); |
| 266 if (buffer_.Seek(seek_size)) | 266 if (buffer_.Seek(seek_size)) |
| 267 read_position += seek_size; | 267 read_position += seek_size; |
| 268 EXPECT_GE(write_position, read_position); | 268 EXPECT_GE(write_position, read_position); |
| 269 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); | 269 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); |
| 270 | 270 |
| 271 // Read a random amount of data. | 271 // Read a random amount of data. |
| 272 size_t read_size = GetRandomInt(kBufferSize); | 272 int read_size = GetRandomInt(kBufferSize); |
| 273 size_t bytes_read = buffer_.Read(write_buffer_, read_size); | 273 int bytes_read = buffer_.Read(write_buffer_, read_size); |
| 274 EXPECT_GE(read_size, bytes_read); | 274 EXPECT_GE(read_size, bytes_read); |
| 275 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, bytes_read)); | 275 EXPECT_EQ(0, memcmp(write_buffer_, data_ + read_position, bytes_read)); |
| 276 read_position += bytes_read; | 276 read_position += bytes_read; |
| 277 EXPECT_GE(write_position, read_position); | 277 EXPECT_GE(write_position, read_position); |
| 278 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); | 278 EXPECT_EQ(write_position - read_position, buffer_.forward_bytes()); |
| 279 } | 279 } |
| 280 } | 280 } |
| 281 | 281 |
| 282 TEST_F(SeekableBufferTest, AllMethods) { | 282 TEST_F(SeekableBufferTest, AllMethods) { |
| 283 EXPECT_EQ(0u, buffer_.Read(write_buffer_, 0)); | 283 EXPECT_EQ(0, buffer_.Read(write_buffer_, 0)); |
| 284 EXPECT_EQ(0u, buffer_.Read(write_buffer_, 1)); | 284 EXPECT_EQ(0, buffer_.Read(write_buffer_, 1)); |
| 285 EXPECT_TRUE(buffer_.Seek(0)); | 285 EXPECT_TRUE(buffer_.Seek(0)); |
| 286 EXPECT_FALSE(buffer_.Seek(-1)); | 286 EXPECT_FALSE(buffer_.Seek(-1)); |
| 287 EXPECT_FALSE(buffer_.Seek(1)); | 287 EXPECT_FALSE(buffer_.Seek(1)); |
| 288 EXPECT_EQ(0u, buffer_.forward_bytes()); | 288 EXPECT_EQ(0, buffer_.forward_bytes()); |
| 289 EXPECT_EQ(0u, buffer_.backward_bytes()); | 289 EXPECT_EQ(0, buffer_.backward_bytes()); |
| 290 } | 290 } |
| 291 | 291 |
| 292 | 292 |
| 293 TEST_F(SeekableBufferTest, GetTime) { | 293 TEST_F(SeekableBufferTest, GetTime) { |
| 294 const struct { | 294 const struct { |
| 295 int64 first_time_useconds; | 295 int64 first_time_useconds; |
| 296 int64 duration_useconds; | 296 int64 duration_useconds; |
| 297 size_t consume_bytes; | 297 int consume_bytes; |
| 298 int64 expected_time; | 298 int64 expected_time; |
| 299 } tests[] = { | 299 } tests[] = { |
| 300 // Timestamps of 0 are treated as garbage. | 300 // Timestamps of 0 are treated as garbage. |
| 301 { 0, 1000000, 0, kNoTimestamp().ToInternalValue() }, | 301 { 0, 1000000, 0, kNoTimestamp().ToInternalValue() }, |
| 302 { 0, 4000000, 0, kNoTimestamp().ToInternalValue() }, | 302 { 0, 4000000, 0, kNoTimestamp().ToInternalValue() }, |
| 303 { 0, 8000000, 0, kNoTimestamp().ToInternalValue() }, | 303 { 0, 8000000, 0, kNoTimestamp().ToInternalValue() }, |
| 304 { 0, 1000000, 4, kNoTimestamp().ToInternalValue() }, | 304 { 0, 1000000, 4, kNoTimestamp().ToInternalValue() }, |
| 305 { 0, 4000000, 4, kNoTimestamp().ToInternalValue() }, | 305 { 0, 4000000, 4, kNoTimestamp().ToInternalValue() }, |
| 306 { 0, 8000000, 4, kNoTimestamp().ToInternalValue() }, | 306 { 0, 8000000, 4, kNoTimestamp().ToInternalValue() }, |
| 307 { 0, 1000000, kWriteSize, kNoTimestamp().ToInternalValue() }, | 307 { 0, 1000000, kWriteSize, kNoTimestamp().ToInternalValue() }, |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 EXPECT_EQ(tests[i].expected_time, actual) << "With test = { start:" | 339 EXPECT_EQ(tests[i].expected_time, actual) << "With test = { start:" |
| 340 << tests[i].first_time_useconds << ", duration:" | 340 << tests[i].first_time_useconds << ", duration:" |
| 341 << tests[i].duration_useconds << ", consumed:" | 341 << tests[i].duration_useconds << ", consumed:" |
| 342 << tests[i].consume_bytes << "}\n"; | 342 << tests[i].consume_bytes << "}\n"; |
| 343 | 343 |
| 344 buffer_.Clear(); | 344 buffer_.Clear(); |
| 345 } | 345 } |
| 346 } | 346 } |
| 347 | 347 |
| 348 } // namespace media | 348 } // namespace media |
| OLD | NEW |