Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(501)

Unified Diff: media/filters/audio_renderer_impl_unittest.cc

Issue 11148011: Move audio decoder initialization to AudioRendererImpl. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: nits Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/audio_renderer_impl.cc ('k') | media/filters/pipeline_integration_test_base.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/audio_renderer_impl_unittest.cc
diff --git a/media/filters/audio_renderer_impl_unittest.cc b/media/filters/audio_renderer_impl_unittest.cc
index 89c870b2be144a022c9f0b626ba750ef536e1a91..fe901f099465cc591d457303f3dac321e6ca7e73 100644
--- a/media/filters/audio_renderer_impl_unittest.cc
+++ b/media/filters/audio_renderer_impl_unittest.cc
@@ -20,6 +20,10 @@ using ::testing::Return;
using ::testing::NiceMock;
using ::testing::StrictMock;
+ACTION_P(RunPipelineStatusCB1, status) {
+ arg1.Run(status);
+}
+
namespace media {
// Constants for distinguishing between muted audio and playing audio when using
@@ -32,7 +36,10 @@ class AudioRendererImplTest : public ::testing::Test {
// Give the decoder some non-garbage media properties.
AudioRendererImplTest()
: renderer_(new AudioRendererImpl(new NiceMock<MockAudioRendererSink>())),
+ demuxer_stream_(new MockDemuxerStream()),
decoder_(new MockAudioDecoder()) {
+ EXPECT_CALL(*demuxer_stream_, type())
+ .WillRepeatedly(Return(DemuxerStream::AUDIO));
// Queue all reads from the decoder by default.
ON_CALL(*decoder_, Read(_))
@@ -46,6 +53,8 @@ class AudioRendererImplTest : public ::testing::Test {
.Times(AnyNumber());
EXPECT_CALL(*decoder_, samples_per_second())
.Times(AnyNumber());
+
+ decoders_.push_back(decoder_);
}
virtual ~AudioRendererImplTest() {
@@ -76,6 +85,7 @@ class AudioRendererImplTest : public ::testing::Test {
base::Unretained(this));
}
+ MOCK_METHOD1(OnStatistics, void(const PipelineStatistics&));
MOCK_METHOD0(OnUnderflow, void());
MOCK_METHOD0(OnEnded, void());
MOCK_METHOD0(OnDisabled, void());
@@ -87,12 +97,19 @@ class AudioRendererImplTest : public ::testing::Test {
}
void Initialize() {
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
+
InitializeWithStatus(PIPELINE_OK);
}
void InitializeWithStatus(PipelineStatus expected) {
renderer_->Initialize(
- decoder_, NewExpectedStatusCB(expected),
+ demuxer_stream_,
+ decoders_,
+ NewExpectedStatusCB(expected),
+ base::Bind(&AudioRendererImplTest::OnStatistics,
+ base::Unretained(this)),
base::Bind(&AudioRendererImplTest::OnUnderflow,
base::Unretained(this)),
base::Bind(&AudioRendererImplTest::OnAudioTimeCallback,
@@ -207,7 +224,9 @@ class AudioRendererImplTest : public ::testing::Test {
// Fixture members.
scoped_refptr<AudioRendererImpl> renderer_;
+ scoped_refptr<MockDemuxerStream> demuxer_stream_;
scoped_refptr<MockAudioDecoder> decoder_;
+ AudioRendererImpl::AudioDecoderList decoders_;
AudioDecoder::ReadCB read_cb_;
base::TimeDelta next_timestamp_;
@@ -221,7 +240,10 @@ class AudioRendererImplTest : public ::testing::Test {
};
TEST_F(AudioRendererImplTest, Initialize_Failed) {
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
SetUnsupportedAudioDecoderProperties();
+
InitializeWithStatus(PIPELINE_ERROR_INITIALIZATION_FAILED);
// We should have no reads.
@@ -235,6 +257,29 @@ TEST_F(AudioRendererImplTest, Initialize_Successful) {
EXPECT_TRUE(read_cb_.is_null());
}
+TEST_F(AudioRendererImplTest, Initialize_DecoderInitFailure) {
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_ERROR_DECODE));
+ InitializeWithStatus(PIPELINE_ERROR_DECODE);
+
+ // We should have no reads.
+ EXPECT_TRUE(read_cb_.is_null());
+}
+
+TEST_F(AudioRendererImplTest, Initialize_MultipleDecoders) {
+ scoped_refptr<MockAudioDecoder> decoder1 = new MockAudioDecoder();
+ // Insert |decoder1| as the first decoder in the list.
+ decoders_.push_front(decoder1);
+ EXPECT_CALL(*decoder1, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(DECODER_ERROR_NOT_SUPPORTED));
+ EXPECT_CALL(*decoder_, Initialize(_, _, _))
+ .WillOnce(RunPipelineStatusCB1(PIPELINE_OK));
+ InitializeWithStatus(PIPELINE_OK);
+
+ // We should have no reads.
+ EXPECT_TRUE(read_cb_.is_null());
+}
+
TEST_F(AudioRendererImplTest, Preroll) {
Initialize();
Preroll();
« no previous file with comments | « media/filters/audio_renderer_impl.cc ('k') | media/filters/pipeline_integration_test_base.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698