Chromium Code Reviews| Index: media/audio/linux/alsa_output_unittest.cc |
| diff --git a/media/audio/linux/alsa_output_unittest.cc b/media/audio/linux/alsa_output_unittest.cc |
| index bcf2e3dd0486d811c3113edb98314a847a8ac067..69cfc04fa2634ebc9390284575451acc22f34113 100644 |
| --- a/media/audio/linux/alsa_output_unittest.cc |
| +++ b/media/audio/linux/alsa_output_unittest.cc |
| @@ -78,13 +78,24 @@ class MockAudioManagerLinux : public AudioManagerLinux { |
| MOCK_METHOD0(Init, void()); |
|
no longer working on chromium
2012/03/01 16:02:19
Question to Tommi: We don't use these mock functio
|
| MOCK_METHOD0(HasAudioOutputDevices, bool()); |
| MOCK_METHOD0(HasAudioInputDevices, bool()); |
| - MOCK_METHOD1(MakeAudioOutputStream, AudioOutputStream*( |
| - const AudioParameters& params)); |
| - MOCK_METHOD2(MakeAudioInputStream, AudioInputStream*( |
| - const AudioParameters& params, const std::string& device_id)); |
| MOCK_METHOD0(MuteAll, void()); |
| MOCK_METHOD0(UnMuteAll, void()); |
| - MOCK_METHOD1(ReleaseOutputStream, void(AudioOutputStream* stream)); |
| + MOCK_METHOD0(GetMaxAudioOutputStreamsAllowed, int()); |
| + MOCK_METHOD1(MakeAudioLinearOutputStream, AudioOutputStream*( |
| + const AudioParameters& params)); |
| + MOCK_METHOD1(MakeAudioLowLatencyOutputStream, AudioOutputStream*( |
| + const AudioParameters& params)); |
| + MOCK_METHOD2(MakeAudioLinearOutputStream, AudioInputStream*( |
| + const AudioParameters& params, const std::string& device_id)); |
| + MOCK_METHOD2(MakeAudioLowLatencyInputStream, AudioInputStream*( |
| + const AudioParameters& params, const std::string& device_id)); |
| + |
| + // We need to override this function because we want to skip the checking |
| + // the number of active streams. |
| + virtual void ReleaseOutputStream(AudioOutputStream* stream) OVERRIDE { |
| + DCHECK(stream); |
| + delete stream; |
| + } |
| // We don't mock this method since all tests will do the same thing |
| // and use the current message loop. |
| @@ -97,11 +108,11 @@ class AlsaPcmOutputStreamTest : public testing::Test { |
| protected: |
| AlsaPcmOutputStreamTest() { |
| mock_manager_.reset(new StrictMock<MockAudioManagerLinux>()); |
| - test_stream_.reset(CreateStream(kTestChannelLayout)); |
| + test_stream_ = CreateStream(kTestChannelLayout); |
| } |
| virtual ~AlsaPcmOutputStreamTest() { |
| - test_stream_.reset(NULL); |
| + test_stream_ = NULL; |
| } |
| AlsaPcmOutputStream* CreateStream(ChannelLayout layout) { |
| @@ -165,7 +176,7 @@ class AlsaPcmOutputStreamTest : public testing::Test { |
| StrictMock<MockAlsaWrapper> mock_alsa_wrapper_; |
| scoped_ptr<StrictMock<MockAudioManagerLinux> > mock_manager_; |
| MessageLoop message_loop_; |
| - scoped_ptr<AlsaPcmOutputStream> test_stream_; |
| + AlsaPcmOutputStream* test_stream_; |
| scoped_refptr<media::DataBuffer> packet_; |
| private: |
| @@ -206,31 +217,31 @@ TEST_F(AlsaPcmOutputStreamTest, ConstructedState) { |
| EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream_->state()); |
| // Should support mono. |
| - test_stream_.reset(CreateStream(CHANNEL_LAYOUT_MONO)); |
| + test_stream_ = CreateStream(CHANNEL_LAYOUT_MONO); |
| EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream_->state()); |
| // Should support multi-channel. |
| - test_stream_.reset(CreateStream(CHANNEL_LAYOUT_SURROUND)); |
| + test_stream_ = CreateStream(CHANNEL_LAYOUT_SURROUND); |
| EXPECT_EQ(AlsaPcmOutputStream::kCreated, test_stream_->state()); |
| // Bad bits per sample. |
| AudioParameters bad_bps_params(kTestFormat, kTestChannelLayout, |
| kTestSampleRate, kTestBitsPerSample - 1, |
| kTestFramesPerPacket); |
| - test_stream_.reset(new AlsaPcmOutputStream(kTestDeviceName, |
| - bad_bps_params, |
| - &mock_alsa_wrapper_, |
| - mock_manager_.get())); |
| + test_stream_ = new AlsaPcmOutputStream(kTestDeviceName, |
| + bad_bps_params, |
| + &mock_alsa_wrapper_, |
| + mock_manager_.get()); |
| EXPECT_EQ(AlsaPcmOutputStream::kInError, test_stream_->state()); |
| // Bad format. |
| AudioParameters bad_format_params( |
| AudioParameters::AUDIO_LAST_FORMAT, kTestChannelLayout, kTestSampleRate, |
| kTestBitsPerSample, kTestFramesPerPacket); |
| - test_stream_.reset(new AlsaPcmOutputStream(kTestDeviceName, |
| - bad_format_params, |
| - &mock_alsa_wrapper_, |
| - mock_manager_.get())); |
| + test_stream_ = new AlsaPcmOutputStream(kTestDeviceName, |
| + bad_format_params, |
| + &mock_alsa_wrapper_, |
| + mock_manager_.get()); |
| EXPECT_EQ(AlsaPcmOutputStream::kInError, test_stream_->state()); |
| } |
| @@ -255,15 +266,14 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) { |
| SetArgumentPointee<2>(kTestFramesPerPacket / 2), |
| Return(0))); |
| - test_stream_.reset(CreateStream(kTestChannelLayout, |
| - kPacketFramesInMinLatency)); |
| + test_stream_ = CreateStream(kTestChannelLayout, kPacketFramesInMinLatency); |
| ASSERT_TRUE(test_stream_->Open()); |
| // Now close it and test that everything was released. |
| EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)).WillOnce(Return(0)); |
| EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle)) |
| .WillOnce(Return(kTestDeviceName)); |
| - EXPECT_CALL(mock_manager(), ReleaseOutputStream(test_stream_.get())); |
| +// EXPECT_CALL(mock_manager(), ReleaseOutputStream(test_stream_)); |
| test_stream_->Close(); |
| Mock::VerifyAndClear(&mock_alsa_wrapper_); |
| @@ -284,8 +294,7 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) { |
| SetArgumentPointee<2>(kTestFramesPerPacket / 2), |
| Return(0))); |
| - test_stream_.reset(CreateStream(kTestChannelLayout, |
| - kOverMinLatencyPacketSize)); |
| + test_stream_ = CreateStream(kTestChannelLayout, kOverMinLatencyPacketSize); |
| ASSERT_TRUE(test_stream_->Open()); |
| // Now close it and test that everything was released. |
| @@ -293,7 +302,6 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) { |
| .WillOnce(Return(0)); |
| EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle)) |
| .WillOnce(Return(kTestDeviceName)); |
| - EXPECT_CALL(mock_manager(), ReleaseOutputStream(test_stream_.get())); |
| test_stream_->Close(); |
| Mock::VerifyAndClear(&mock_alsa_wrapper_); |
| @@ -341,12 +349,7 @@ TEST_F(AlsaPcmOutputStreamTest, OpenClose) { |
| .WillOnce(Return(0)); |
| EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle)) |
| .WillOnce(Return(kTestDeviceName)); |
| - EXPECT_CALL(mock_manager(), ReleaseOutputStream(test_stream_.get())); |
| test_stream_->Close(); |
| - |
| - EXPECT_TRUE(test_stream_->playback_handle_ == NULL); |
| - EXPECT_FALSE(test_stream_->buffer_.get()); |
| - EXPECT_TRUE(test_stream_->stop_stream_); |
| } |
| TEST_F(AlsaPcmOutputStreamTest, PcmOpenFailed) { |
| @@ -364,7 +367,6 @@ TEST_F(AlsaPcmOutputStreamTest, PcmOpenFailed) { |
| EXPECT_FALSE(test_stream_->buffer_.get()); |
| // Close the stream since we opened it to make destruction happy. |
| - EXPECT_CALL(mock_manager(), ReleaseOutputStream(test_stream_.get())); |
| test_stream_->Close(); |
| } |
| @@ -392,7 +394,6 @@ TEST_F(AlsaPcmOutputStreamTest, PcmSetParamsFailed) { |
| EXPECT_FALSE(test_stream_->buffer_.get()); |
| // Close the stream since we opened it to make destruction happy. |
| - EXPECT_CALL(mock_manager(), ReleaseOutputStream(test_stream_.get())); |
| test_stream_->Close(); |
| } |
| @@ -428,7 +429,7 @@ TEST_F(AlsaPcmOutputStreamTest, StartStop) { |
| .Times(2) |
| .WillRepeatedly(DoAll(SetArgumentPointee<1>(0), Return(0))); |
| EXPECT_CALL(mock_callback, |
| - OnMoreData(test_stream_.get(), _, kTestPacketSize, _)) |
| + OnMoreData(test_stream_, _, kTestPacketSize, _)) |
| .Times(2) |
| .WillOnce(Return(kTestPacketSize)) |
| .WillOnce(Return(0)); |
| @@ -447,7 +448,6 @@ TEST_F(AlsaPcmOutputStreamTest, StartStop) { |
| test_stream_->Start(&mock_callback); |
| message_loop_.RunAllPending(); |
| - EXPECT_CALL(mock_manager(), ReleaseOutputStream(test_stream_.get())); |
| EXPECT_CALL(mock_alsa_wrapper_, PcmClose(kFakeHandle)) |
| .WillOnce(Return(0)); |
| EXPECT_CALL(mock_alsa_wrapper_, PcmName(kFakeHandle)) |
| @@ -539,7 +539,7 @@ TEST_F(AlsaPcmOutputStreamTest, BufferPacket) { |
| // Return a partially filled packet. |
| EXPECT_CALL(mock_callback, |
| - OnMoreData(test_stream_.get(), _, _, _)) |
| + OnMoreData(test_stream_, _, _, _)) |
| .WillOnce(Return(10)); |
| bool source_exhausted; |
| @@ -564,7 +564,7 @@ TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Negative) { |
| EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_)) |
| .WillRepeatedly(Return(0)); // Buffer is full. |
| EXPECT_CALL(mock_callback, |
| - OnMoreData(test_stream_.get(), _, _, _)) |
| + OnMoreData(test_stream_, _, _, _)) |
| .WillOnce(Return(10)); |
| bool source_exhausted; |
| @@ -587,7 +587,7 @@ TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Underrun) { |
| EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_)) |
| .WillRepeatedly(Return(0)); // Buffer is full. |
| EXPECT_CALL(mock_callback, |
| - OnMoreData(test_stream_.get(), _, _, AllOf( |
| + OnMoreData(test_stream_, _, _, AllOf( |
| Field(&AudioBuffersState::pending_bytes, 0), |
| Field(&AudioBuffersState::hardware_delay_bytes, 0)))) |
| .WillOnce(Return(10)); |
| @@ -670,7 +670,7 @@ TEST_F(AlsaPcmOutputStreamTest, AutoSelectDevice_DeviceSelect) { |
| EXPECT_CALL(mock_alsa_wrapper_, DeviceNameGetHint(_, StrEq("NAME"))) |
| .WillRepeatedly(Invoke(EchoHint)); |
| - test_stream_.reset(CreateStream(kExpectedLayouts[i])); |
| + test_stream_ = CreateStream(kExpectedLayouts[i]); |
| EXPECT_TRUE(test_stream_->AutoSelectDevice(i)); |
| EXPECT_EQ(kExpectedDownmix[i], test_stream_->should_downmix_); |
| @@ -720,7 +720,7 @@ TEST_F(AlsaPcmOutputStreamTest, AutoSelectDevice_FallbackDevices) { |
| EXPECT_CALL(mock_alsa_wrapper_, PcmOpen(_, StrEq(fourth_try.c_str()), _, _)) |
| .WillOnce(Return(kTestFailedErrno)); |
| - test_stream_.reset(CreateStream(CHANNEL_LAYOUT_5POINT0)); |
| + test_stream_ = CreateStream(CHANNEL_LAYOUT_5POINT0); |
| EXPECT_FALSE(test_stream_->AutoSelectDevice(5)); |
| } |
| @@ -738,7 +738,7 @@ TEST_F(AlsaPcmOutputStreamTest, AutoSelectDevice_HintFail) { |
| EXPECT_CALL(mock_alsa_wrapper_, StrError(kTestFailedErrno)) |
| .WillOnce(Return(kDummyMessage)); |
| - test_stream_.reset(CreateStream(CHANNEL_LAYOUT_5POINT0)); |
| + test_stream_ = CreateStream(CHANNEL_LAYOUT_5POINT0); |
| EXPECT_TRUE(test_stream_->AutoSelectDevice(5)); |
| EXPECT_TRUE(test_stream_->should_downmix_); |
| } |