Index: media/filters/audio_renderer_base_unittest.cc |
diff --git a/media/filters/audio_renderer_base_unittest.cc b/media/filters/audio_renderer_base_unittest.cc |
index 9880e5cc9d775d34def962b65d56e7dc54ff7601..ee756f14fed21c3d55b1a650cad800a5799eb9ed 100644 |
--- a/media/filters/audio_renderer_base_unittest.cc |
+++ b/media/filters/audio_renderer_base_unittest.cc |
@@ -16,10 +16,26 @@ using ::testing::_; |
using ::testing::AnyNumber; |
using ::testing::Invoke; |
using ::testing::Return; |
-using ::testing::ReturnPointee; |
-using ::testing::SaveArg; |
+using ::testing::NiceMock; |
using ::testing::StrictMock; |
+namespace { |
+ |
+class MockAudioSink : public media::AudioRendererSink { |
+ public: |
+ MOCK_METHOD2(Initialize, void(const media::AudioParameters& params, |
+ RenderCallback* callback)); |
+ MOCK_METHOD0(Start, void()); |
+ MOCK_METHOD0(Stop, void()); |
+ MOCK_METHOD1(Pause, void(bool flush)); |
+ MOCK_METHOD0(Play, void()); |
+ MOCK_METHOD1(SetPlaybackRate, void(float rate)); |
+ MOCK_METHOD1(SetVolume, bool(double volume)); |
+ MOCK_METHOD1(GetVolume, void(double* volume)); |
+}; |
+ |
+} // namespace |
+ |
namespace media { |
// Constants for distinguishing between muted audio and playing audio when using |
@@ -27,30 +43,11 @@ namespace media { |
static uint8 kMutedAudio = 0x00; |
static uint8 kPlayingAudio = 0x99; |
-// Mocked subclass of AudioRendererBase for testing purposes. |
-class MockAudioRendererBase : public AudioRendererBase { |
- public: |
- MockAudioRendererBase() |
- : AudioRendererBase() {} |
- virtual ~MockAudioRendererBase() {} |
- |
- // AudioRenderer implementation. |
- MOCK_METHOD1(SetVolume, void(float volume)); |
- |
- // AudioRendererBase implementation. |
- MOCK_METHOD3(OnInitialize, bool(int, ChannelLayout, int)); |
- MOCK_METHOD0(OnStop, void()); |
- MOCK_METHOD0(OnRenderEndOfStream, void()); |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(MockAudioRendererBase); |
-}; |
- |
class AudioRendererBaseTest : public ::testing::Test { |
public: |
// Give the decoder some non-garbage media properties. |
AudioRendererBaseTest() |
- : renderer_(new MockAudioRendererBase()), |
+ : renderer_(new AudioRendererBase(new NiceMock<MockAudioSink>())), |
decoder_(new MockAudioDecoder()) { |
renderer_->set_host(&host_); |
@@ -59,13 +56,7 @@ class AudioRendererBaseTest : public ::testing::Test { |
.WillByDefault(Invoke(this, &AudioRendererBaseTest::SaveReadCallback)); |
// Set up audio properties. |
- ON_CALL(*decoder_, bits_per_channel()) |
- .WillByDefault(Return(16)); |
- ON_CALL(*decoder_, channel_layout()) |
- .WillByDefault(Return(CHANNEL_LAYOUT_MONO)); |
- ON_CALL(*decoder_, samples_per_second()) |
- .WillByDefault(Return(44100)); |
- |
+ SetSupportedAudioDecoderProperties(); |
EXPECT_CALL(*decoder_, bits_per_channel()) |
.Times(AnyNumber()); |
EXPECT_CALL(*decoder_, channel_layout()) |
@@ -75,7 +66,6 @@ class AudioRendererBaseTest : public ::testing::Test { |
} |
virtual ~AudioRendererBaseTest() { |
- EXPECT_CALL(*renderer_, OnStop()); |
renderer_->Stop(NewExpectedClosure()); |
} |
@@ -91,6 +81,24 @@ class AudioRendererBaseTest : public ::testing::Test { |
base::Unretained(this)); |
} |
+ void SetSupportedAudioDecoderProperties() { |
+ ON_CALL(*decoder_, bits_per_channel()) |
+ .WillByDefault(Return(16)); |
+ ON_CALL(*decoder_, channel_layout()) |
+ .WillByDefault(Return(CHANNEL_LAYOUT_MONO)); |
+ ON_CALL(*decoder_, samples_per_second()) |
+ .WillByDefault(Return(44100)); |
+ } |
+ |
+ void SetUnsupportedAudioDecoderProperties() { |
+ ON_CALL(*decoder_, bits_per_channel()) |
+ .WillByDefault(Return(3)); |
+ ON_CALL(*decoder_, channel_layout()) |
+ .WillByDefault(Return(CHANNEL_LAYOUT_UNSUPPORTED)); |
+ ON_CALL(*decoder_, samples_per_second()) |
+ .WillByDefault(Return(0)); |
+ } |
+ |
void OnAudioTimeCallback( |
base::TimeDelta current_time, base::TimeDelta max_time) { |
CHECK(current_time <= max_time); |
@@ -102,8 +110,6 @@ class AudioRendererBaseTest : public ::testing::Test { |
} |
void Initialize() { |
- EXPECT_CALL(*renderer_, OnInitialize(_, _, _)) |
- .WillOnce(Return(true)); |
renderer_->Initialize( |
decoder_, NewExpectedStatusCB(PIPELINE_OK), NewUnderflowClosure(), |
NewAudioTimeClosure()); |
@@ -218,7 +224,7 @@ class AudioRendererBaseTest : public ::testing::Test { |
} |
// Fixture members. |
- scoped_refptr<MockAudioRendererBase> renderer_; |
+ scoped_refptr<AudioRendererBase> renderer_; |
scoped_refptr<MockAudioDecoder> decoder_; |
StrictMock<MockFilterHost> host_; |
AudioDecoder::ReadCB read_cb_; |
@@ -234,8 +240,7 @@ class AudioRendererBaseTest : public ::testing::Test { |
}; |
TEST_F(AudioRendererBaseTest, Initialize_Failed) { |
- EXPECT_CALL(*renderer_, OnInitialize(_, _, _)) |
- .WillOnce(Return(false)); |
+ SetUnsupportedAudioDecoderProperties(); |
renderer_->Initialize( |
decoder_, |
NewExpectedStatusCB(PIPELINE_ERROR_INITIALIZATION_FAILED), |
@@ -246,8 +251,6 @@ TEST_F(AudioRendererBaseTest, Initialize_Failed) { |
} |
TEST_F(AudioRendererBaseTest, Initialize_Successful) { |
- EXPECT_CALL(*renderer_, OnInitialize(_, _, _)) |
- .WillOnce(Return(true)); |
renderer_->Initialize(decoder_, NewExpectedStatusCB(PIPELINE_OK), |
NewUnderflowClosure(), NewAudioTimeClosure()); |
@@ -285,8 +288,6 @@ TEST_F(AudioRendererBaseTest, EndOfStream) { |
EXPECT_FALSE(renderer_->HasEnded()); |
// Drain internal buffer, now we should report ended. |
- EXPECT_CALL(*renderer_, OnRenderEndOfStream()) |
- .WillOnce(Invoke(renderer_.get(), &AudioRendererBase::SignalEndOfStream)); |
EXPECT_CALL(host_, NotifyEnded()); |
EXPECT_TRUE(ConsumeBufferedData(bytes_buffered(), NULL)); |
EXPECT_TRUE(renderer_->HasEnded()); |
@@ -367,8 +368,6 @@ TEST_F(AudioRendererBaseTest, Underflow_EndOfStream) { |
// stop reading after receiving an end of stream buffer. It should have also |
// called NotifyEnded() http://crbug.com/106641 |
DeliverEndOfStream(); |
- EXPECT_CALL(*renderer_, OnRenderEndOfStream()) |
- .WillOnce(Invoke(renderer_.get(), &AudioRendererBase::SignalEndOfStream)); |
EXPECT_CALL(host_, NotifyEnded()); |
EXPECT_CALL(host_, GetTime()).WillOnce(Return(base::TimeDelta())); |