summaryrefslogtreecommitdiffstats
path: root/chromium/media/filters/fake_demuxer_stream_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/filters/fake_demuxer_stream_unittest.cc')
-rw-r--r--chromium/media/filters/fake_demuxer_stream_unittest.cc76
1 files changed, 57 insertions, 19 deletions
diff --git a/chromium/media/filters/fake_demuxer_stream_unittest.cc b/chromium/media/filters/fake_demuxer_stream_unittest.cc
index 553a2f080c3..ced749623cf 100644
--- a/chromium/media/filters/fake_demuxer_stream_unittest.cc
+++ b/chromium/media/filters/fake_demuxer_stream_unittest.cc
@@ -13,9 +13,9 @@
namespace media {
-static const int kNumBuffersInOneConfig = 9;
-static const int kNumBuffersToReadFirst = 5;
-static const int kNumConfigs = 3;
+const int kNumBuffersInOneConfig = 9;
+const int kNumBuffersToReadFirst = 5;
+const int kNumConfigs = 3;
COMPILE_ASSERT(kNumBuffersToReadFirst < kNumBuffersInOneConfig,
do_not_read_too_many_buffers);
COMPILE_ASSERT(kNumConfigs > 0, need_multiple_configs_to_trigger_config_change);
@@ -24,7 +24,8 @@ class FakeDemuxerStreamTest : public testing::Test {
public:
FakeDemuxerStreamTest()
: status_(DemuxerStream::kAborted),
- read_pending_(false) {}
+ read_pending_(false),
+ num_buffers_received_(0) {}
virtual ~FakeDemuxerStreamTest() {}
void BufferReady(DemuxerStream::Status status,
@@ -33,6 +34,8 @@ class FakeDemuxerStreamTest : public testing::Test {
read_pending_ = false;
status_ = status;
buffer_ = buffer;
+ if (status == DemuxerStream::kOk && !buffer->end_of_stream())
+ num_buffers_received_++;
}
enum ReadResult {
@@ -48,12 +51,14 @@ class FakeDemuxerStreamTest : public testing::Test {
new FakeDemuxerStream(kNumConfigs, kNumBuffersInOneConfig, false));
for (int i = 0; i < kNumBuffersToReadFirst; ++i)
ReadAndExpect(OK);
+ DCHECK_EQ(kNumBuffersToReadFirst, num_buffers_received_);
}
void EnterBeforeEOSState() {
stream_.reset(new FakeDemuxerStream(1, kNumBuffersInOneConfig, false));
for (int i = 0; i < kNumBuffersInOneConfig; ++i)
ReadAndExpect(OK);
+ DCHECK_EQ(kNumBuffersInOneConfig, num_buffers_received_);
}
void ExpectReadResult(ReadResult result) {
@@ -72,6 +77,7 @@ class FakeDemuxerStreamTest : public testing::Test {
break;
case CONFIG_CHANGED:
+ EXPECT_TRUE(stream_->SupportsConfigChanges());
EXPECT_FALSE(read_pending_);
EXPECT_EQ(DemuxerStream::kConfigChanged, status_);
EXPECT_FALSE(buffer_.get());
@@ -127,23 +133,12 @@ class FakeDemuxerStreamTest : public testing::Test {
ExpectReadResult(ABORTED);
}
- void TestRead(int num_configs,
- int num_buffers_in_one_config,
- bool is_encrypted) {
- stream_.reset(new FakeDemuxerStream(
- 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());
-
+ void ReadAllBuffers(int num_configs, int num_buffers_in_one_config) {
+ DCHECK_EQ(0, num_buffers_received_);
for (int i = 0; i < num_configs; ++i) {
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());
+ EXPECT_EQ(num_buffers_received_, stream_->num_buffers_returned());
}
if (i == num_configs - 1)
@@ -155,7 +150,20 @@ 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);
+ EXPECT_EQ(num_configs * num_buffers_in_one_config, num_buffers_received_);
+ }
+
+ void TestRead(int num_configs,
+ int num_buffers_in_one_config,
+ bool is_encrypted) {
+ stream_.reset(new FakeDemuxerStream(
+ num_configs, num_buffers_in_one_config, is_encrypted));
+
+ const VideoDecoderConfig& config = stream_->video_decoder_config();
+ EXPECT_TRUE(config.IsValidConfig());
+ EXPECT_EQ(is_encrypted, config.is_encrypted());
+
+ ReadAllBuffers(num_configs, num_buffers_in_one_config);
}
base::MessageLoop message_loop_;
@@ -244,4 +252,34 @@ TEST_F(FakeDemuxerStreamTest, Reset_BeforeEOS) {
ReadAndExpect(EOS);
}
+TEST_F(FakeDemuxerStreamTest, NoConfigChanges) {
+ stream_.reset(
+ new FakeDemuxerStream(1, kNumBuffersInOneConfig, false));
+ EXPECT_FALSE(stream_->SupportsConfigChanges());
+ for (int i = 0; i < kNumBuffersInOneConfig; ++i)
+ ReadAndExpect(OK);
+ ReadAndExpect(EOS);
+}
+
+TEST_F(FakeDemuxerStreamTest, SeekToStart_Normal) {
+ EnterNormalReadState();
+ stream_->SeekToStart();
+ num_buffers_received_ = 0;
+ ReadAllBuffers(kNumConfigs, kNumBuffersInOneConfig);
+}
+
+TEST_F(FakeDemuxerStreamTest, SeekToStart_BeforeEOS) {
+ EnterBeforeEOSState();
+ stream_->SeekToStart();
+ num_buffers_received_ = 0;
+ ReadAllBuffers(1, kNumBuffersInOneConfig);
+}
+
+TEST_F(FakeDemuxerStreamTest, SeekToStart_AfterEOS) {
+ TestRead(3, 5, false);
+ stream_->SeekToStart();
+ num_buffers_received_ = 0;
+ ReadAllBuffers(3, 5);
+}
+
} // namespace media