Index: media/filters/fake_demuxer_stream_unittest.cc |
diff --git a/media/filters/fake_demuxer_stream_unittest.cc b/media/filters/fake_demuxer_stream_unittest.cc |
index 3a63e96fdb3a2d2e2ccc28e08bb2af9be3b99420..aa9ee47cdab852ec7aa2c24113013efbaed00671 100644 |
--- a/media/filters/fake_demuxer_stream_unittest.cc |
+++ b/media/filters/fake_demuxer_stream_unittest.cc |
@@ -13,10 +13,10 @@ |
namespace media { |
-static const int kNumFramesInOneConfig = 9; |
-static const int kNumFramesToReadFirst = 5; |
+static const int kNumBuffersInOneConfig = 9; |
+static const int kNumBuffersToReadFirst = 5; |
static const int kNumConfigs = 3; |
-COMPILE_ASSERT(kNumFramesToReadFirst < kNumFramesInOneConfig, |
+COMPILE_ASSERT(kNumBuffersToReadFirst < kNumBuffersInOneConfig, |
do_not_read_too_many_buffers); |
COMPILE_ASSERT(kNumConfigs > 0, need_multiple_configs_to_trigger_config_change); |
@@ -45,21 +45,14 @@ class FakeDemuxerStreamTest : public testing::Test { |
void EnterNormalReadState() { |
stream_.reset( |
- new FakeDemuxerStream(kNumConfigs, kNumFramesInOneConfig, false)); |
- for (int i = 0; i < kNumFramesToReadFirst; ++i) |
- ReadAndExpect(OK); |
- } |
- |
- void EnterBeforeConfigChangedState() { |
- stream_.reset( |
- new FakeDemuxerStream(kNumConfigs, kNumFramesInOneConfig, false)); |
- for (int i = 0; i < kNumFramesInOneConfig; ++i) |
+ new FakeDemuxerStream(kNumConfigs, kNumBuffersInOneConfig, false)); |
+ for (int i = 0; i < kNumBuffersToReadFirst; ++i) |
ReadAndExpect(OK); |
} |
void EnterBeforeEOSState() { |
- stream_.reset(new FakeDemuxerStream(1, kNumFramesInOneConfig, false)); |
- for (int i = 0; i < kNumFramesInOneConfig; ++i) |
+ stream_.reset(new FakeDemuxerStream(1, kNumBuffersInOneConfig, false)); |
+ for (int i = 0; i < kNumBuffersInOneConfig; ++i) |
ReadAndExpect(OK); |
} |
@@ -106,6 +99,17 @@ class FakeDemuxerStreamTest : public testing::Test { |
ExpectReadResult(result); |
} |
+ void ReadUntilPending() { |
+ while (1) { |
scherkus (not reviewing)
2013/05/28 15:56:57
for (;;) {} ?
xhwang
2013/05/28 19:34:10
Done.
|
+ read_pending_ = true; |
+ stream_->Read(base::Bind(&FakeDemuxerStreamTest::BufferReady, |
+ base::Unretained(this))); |
+ message_loop_.RunUntilIdle(); |
+ if (read_pending_) |
+ break; |
+ } |
+ } |
+ |
void SatisfyReadAndExpect(ReadResult result) { |
EXPECT_TRUE(read_pending_); |
stream_->SatisfyRead(); |
@@ -124,18 +128,23 @@ class FakeDemuxerStreamTest : public testing::Test { |
} |
void TestRead(int num_configs, |
- int num_frames_in_one_config, |
+ int num_buffers_in_one_config, |
bool is_encrypted) { |
stream_.reset(new FakeDemuxerStream( |
- num_configs, num_frames_in_one_config, is_encrypted)); |
+ num_configs, num_buffers_in_one_config, is_encrypted)); |
+ |
+ int num_buffers_received = 0; |
const VideoDecoderConfig& config = stream_->video_decoder_config(); |
EXPECT_TRUE(config.IsValidConfig()); |
EXPECT_EQ(is_encrypted, config.is_encrypted()); |
for (int i = 0; i < num_configs; ++i) { |
- for (int j = 0; j < num_frames_in_one_config; ++j) |
+ for (int j = 0; j < num_buffers_in_one_config; ++j) { |
ReadAndExpect(OK); |
+ num_buffers_received++; |
+ EXPECT_EQ(num_buffers_received, stream_->num_buffers_returned()); |
+ } |
if (i == num_configs - 1) |
ReadAndExpect(EOS); |
@@ -145,6 +154,8 @@ class FakeDemuxerStreamTest : public testing::Test { |
// Will always get EOS after we hit EOS. |
ReadAndExpect(EOS); |
+ |
+ EXPECT_EQ(num_configs * num_buffers_in_one_config, num_buffers_received); |
} |
base::MessageLoop message_loop_; |
@@ -153,6 +164,7 @@ class FakeDemuxerStreamTest : public testing::Test { |
DemuxerStream::Status status_; |
scoped_refptr<DecoderBuffer> buffer_; |
bool read_pending_; |
+ int num_buffers_received_; |
private: |
DISALLOW_COPY_AND_ASSIGN(FakeDemuxerStreamTest); |
@@ -166,7 +178,7 @@ TEST_F(FakeDemuxerStreamTest, Read_MultipleConfigs) { |
TestRead(3, 5, false); |
} |
-TEST_F(FakeDemuxerStreamTest, Read_OneFramePerConfig) { |
+TEST_F(FakeDemuxerStreamTest, Read_OneBufferPerConfig) { |
TestRead(3, 1, false); |
} |
@@ -182,9 +194,9 @@ TEST_F(FakeDemuxerStreamTest, HoldRead_Normal) { |
} |
TEST_F(FakeDemuxerStreamTest, HoldRead_BeforeConfigChanged) { |
- EnterBeforeConfigChangedState(); |
- stream_->HoldNextRead(); |
- ReadAndExpect(PENDING); |
+ EnterNormalReadState(); |
+ stream_->HoldNextConfigChangeRead(); |
+ ReadUntilPending(); |
SatisfyReadAndExpect(CONFIG_CHANGED); |
} |
@@ -217,9 +229,9 @@ TEST_F(FakeDemuxerStreamTest, Reset_DuringPendingRead) { |
} |
TEST_F(FakeDemuxerStreamTest, Reset_BeforeConfigChanged) { |
- EnterBeforeConfigChangedState(); |
- stream_->HoldNextRead(); |
- ReadAndExpect(PENDING); |
+ EnterNormalReadState(); |
+ stream_->HoldNextConfigChangeRead(); |
+ ReadUntilPending(); |
Reset(); |
ReadAndExpect(CONFIG_CHANGED); |
} |