Chromium Code Reviews| Index: media/filters/chunk_demuxer_unittest.cc |
| diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc |
| index d55dff4fc2d00fff1676bf6badba0e24d0afe798..4078dea4d41f66f2ba7b6bab0a69e6af43aabd9c 100644 |
| --- a/media/filters/chunk_demuxer_unittest.cc |
| +++ b/media/filters/chunk_demuxer_unittest.cc |
| @@ -256,7 +256,7 @@ class ChunkDemuxerTest : public testing::Test { |
| return false; |
| start += append_size; |
| - EXPECT_GT(buffered_bytes_, old_buffered_bytes); |
| + EXPECT_GE(buffered_bytes_, old_buffered_bytes); |
| } |
| return true; |
| } |
| @@ -284,8 +284,11 @@ class ChunkDemuxerTest : public testing::Test { |
| PipelineStatusCB CreateInitDoneCB(const base::TimeDelta& expected_duration, |
| PipelineStatus expected_status) { |
| - if (expected_status == PIPELINE_OK) |
| + if (expected_status == PIPELINE_OK) { |
| + if (expected_duration != kInfiniteDuration()) |
| + EXPECT_CALL(host_, SetTotalBytes(_)); |
| EXPECT_CALL(host_, SetDuration(expected_duration)); |
| + } |
| return base::Bind(&ChunkDemuxerTest::InitDoneCalled, |
| base::Unretained(this), |
| @@ -463,26 +466,17 @@ class ChunkDemuxerTest : public testing::Test { |
| } |
| } |
| - std::pair<base::TimeDelta, base::TimeDelta> CreateRange( |
| - int start_time, int block_count, int block_duration) { |
| - return std::make_pair(base::TimeDelta::FromMilliseconds(start_time), |
| - base::TimeDelta::FromMilliseconds(start_time + |
| - (block_count * block_duration))); |
| - } |
| + void CheckExpectedRanges(const std::string& expected) { |
| + Ranges<base::TimeDelta> r = demuxer_->GetBufferedRanges(kSourceId); |
| - void CheckExpectedRanges(const ChunkDemuxer::Ranges& expected_times) { |
| - ChunkDemuxer::Ranges actual_times; |
| - demuxer_->GetBufferedRanges(kSourceId, &actual_times); |
| - EXPECT_EQ(expected_times.size(), actual_times.size()); |
| - |
| - for (ChunkDemuxer::Ranges::const_iterator actual_itr = |
| - actual_times.begin(), expected_itr = expected_times.begin(); |
| - actual_itr != actual_times.end() && |
| - expected_itr != expected_times.end(); |
| - actual_itr++, expected_itr++) { |
| - EXPECT_EQ(expected_itr->first, actual_itr->first); |
| - EXPECT_EQ(expected_itr->second, actual_itr->second); |
| + std::stringstream ss; |
| + ss << "{ "; |
| + for (size_t i = 0; i < r.size(); ++i) { |
| + ss << "[" << r.start(i).InMilliseconds() << "," |
| + << r.end(i).InMilliseconds() << ") "; |
| } |
| + ss << "}"; |
| + EXPECT_EQ(expected, ss.str()); |
|
Ami GONE FROM CHROMIUM
2012/06/19 17:40:37
reverse args?
acolwell GONE FROM CHROMIUM
2012/06/19 19:50:15
This order makes |expected| appear with the error
Ami GONE FROM CHROMIUM
2012/06/19 20:23:38
True, but it runs counter to the order used in mos
acolwell GONE FROM CHROMIUM
2012/06/19 22:39:36
Switched here and in source_buffer_stream_unittest
|
| } |
| MOCK_METHOD1(ReadDone, void(const scoped_refptr<DecoderBuffer>&)); |
| @@ -1427,21 +1421,17 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioIdOnly) { |
| // Test a simple cluster. |
| scoped_ptr<Cluster> cluster_1(GenerateSingleStreamCluster(0, 4, |
| kAudioTrackNum, kAudioBlockDuration)); |
| - ChunkDemuxer::Ranges expected; |
| - expected.push_back(CreateRange(0, 4, kAudioBlockDuration)); |
| - |
| ASSERT_TRUE(AppendData(cluster_1->data(), cluster_1->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,92) }"); |
|
Ami GONE FROM CHROMIUM
2012/06/19 17:40:37
Is it easy to see that these numbers are right, he
acolwell GONE FROM CHROMIUM
2012/06/19 19:50:15
I've changed GenerateSingleStreamCluster() so that
|
| // Append a disjoint cluster to check for two separate ranges. |
| scoped_ptr<Cluster> cluster_2(GenerateSingleStreamCluster(150, 3, |
| kAudioTrackNum, kAudioBlockDuration)); |
| - expected.push_back(CreateRange(150, 3, kAudioBlockDuration)); |
| ASSERT_TRUE(AppendData(cluster_2->data(), cluster_2->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,92) [150,219) }"); |
| } |
| // Test ranges in a video-only stream. |
| @@ -1456,21 +1446,18 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_VideoIdOnly) { |
| // Test a simple cluster. |
| scoped_ptr<Cluster> cluster_1(GenerateSingleStreamCluster(0, 4, |
| kVideoTrackNum, kVideoBlockDuration)); |
| - ChunkDemuxer::Ranges expected; |
| - expected.push_back(CreateRange(0, 4, kVideoBlockDuration)); |
| ASSERT_TRUE(AppendData(cluster_1->data(), cluster_1->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,132) }"); |
| // Append a disjoint cluster to check for two separate ranges. |
| scoped_ptr<Cluster> cluster_2(GenerateSingleStreamCluster(150, 3, |
| kVideoTrackNum, kVideoBlockDuration)); |
| - expected.push_back(CreateRange(150, 3, kVideoBlockDuration)); |
| ASSERT_TRUE(AppendData(cluster_2->data(), cluster_2->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,132) [150,249) }"); |
| } |
| TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { |
| @@ -1487,13 +1474,10 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { |
| scoped_ptr<Cluster> cluster_v0( |
| GenerateSingleStreamCluster(0, 1, kVideoTrackNum, kVideoBlockDuration)); |
| - ChunkDemuxer::Ranges expected; |
| - expected.push_back(CreateRange(0, 1, kAudioBlockDuration)); |
| - |
| ASSERT_TRUE(AppendData(cluster_a0->data(), cluster_a0->size())); |
| ASSERT_TRUE(AppendData(cluster_v0->data(), cluster_v0->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,23) }"); |
| // Audio: 100 -> 150 |
| // Video: 120 -> 170 |
| @@ -1504,12 +1488,10 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { |
| scoped_ptr<Cluster> cluster_v1( |
| GenerateSingleStreamCluster(120, 1, kVideoTrackNum, 50)); |
| - expected.push_back(CreateRange(120, 1, 30)); |
| - |
| ASSERT_TRUE(AppendData(cluster_a1->data(), cluster_a1->size())); |
| ASSERT_TRUE(AppendData(cluster_v1->data(), cluster_v1->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,23) [120,150) }"); |
| // Audio: 220 -> 290 |
| // Video: 200 -> 270 |
| @@ -1520,12 +1502,10 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { |
| scoped_ptr<Cluster> cluster_v2( |
| GenerateSingleStreamCluster(200, 1, kVideoTrackNum, 70)); |
| - expected.push_back(CreateRange(220, 1, 50)); |
| - |
| ASSERT_TRUE(AppendData(cluster_a2->data(), cluster_a2->size())); |
| ASSERT_TRUE(AppendData(cluster_v2->data(), cluster_v2->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,23) [120,150) [220,270) }"); |
| // Audio: 320 -> 350 |
| // Video: 300 -> 370 |
| @@ -1536,12 +1516,10 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { |
| scoped_ptr<Cluster> cluster_v3( |
| GenerateSingleStreamCluster(300, 1, kVideoTrackNum, 70)); |
| - expected.push_back(CreateRange(320, 1, 30)); |
| - |
| ASSERT_TRUE(AppendData(cluster_a3->data(), cluster_a3->size())); |
| ASSERT_TRUE(AppendData(cluster_v3->data(), cluster_v3->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) }"); |
| // Audio: 400 -> 470 |
| // Video: 420 -> 450 |
| @@ -1552,25 +1530,23 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { |
| scoped_ptr<Cluster> cluster_v4( |
| GenerateSingleStreamCluster(420, 1, kVideoTrackNum, 30)); |
| - expected.push_back(CreateRange(420, 1, 30)); |
| - |
| ASSERT_TRUE(AppendData(cluster_a4->data(), cluster_a4->size())); |
| ASSERT_TRUE(AppendData(cluster_v4->data(), cluster_v4->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }"); |
| // Appending within buffered range should not affect buffered ranges. |
| scoped_ptr<Cluster> cluster_a5( |
| GenerateSingleStreamCluster(430, 1, kAudioTrackNum, 20)); |
| ASSERT_TRUE(AppendData(cluster_a5->data(), cluster_a5->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }"); |
| // Appending to single stream outside buffered ranges should not affect |
| // buffered ranges. |
| scoped_ptr<Cluster> cluster_v5( |
| GenerateSingleStreamCluster(530, 1, kVideoTrackNum, 10)); |
| ASSERT_TRUE(AppendData(cluster_v5->data(), cluster_v5->size())); |
| - CheckExpectedRanges(expected); |
| + CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }"); |
| } |
| // Once EndOfStream() is called, GetBufferedRanges should not cut off any |
| @@ -1583,14 +1559,15 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_EndOfStream) { |
| GenerateSingleStreamCluster(0, 1, kAudioTrackNum, 90)); |
| scoped_ptr<Cluster> cluster_v( |
| GenerateSingleStreamCluster(0, 1, kVideoTrackNum, 100)); |
| - ChunkDemuxer::Ranges expected; |
| - expected.push_back(CreateRange(0, 1, 100)); |
| ASSERT_TRUE(AppendData(cluster_a->data(), cluster_a->size())); |
| ASSERT_TRUE(AppendData(cluster_v->data(), cluster_v->size())); |
| + CheckExpectedRanges("{ [0,90) }"); |
| + |
| demuxer_->EndOfStream(PIPELINE_OK); |
| - CheckExpectedRanges(expected); |
| + |
| + CheckExpectedRanges("{ [0,100) }"); |
| } |
| TEST_F(ChunkDemuxerTest, TestDifferentStreamTimecodes) { |