Index: media/audio/audio_system_impl_unittest.cc |
diff --git a/media/audio/audio_system_impl_unittest.cc b/media/audio/audio_system_impl_unittest.cc |
index 04f6f645a6752f44d43d9d2af910f8fbb53159ba..ba4de578db69d155b0d56f6c2dcff091b7422dbd 100644 |
--- a/media/audio/audio_system_impl_unittest.cc |
+++ b/media/audio/audio_system_impl_unittest.cc |
@@ -16,12 +16,31 @@ |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+namespace { |
+const char* kNonDefaultDeviceId = "non-default-device-id"; |
+} |
namespace media { |
class AudioSystemImplTest : public testing::TestWithParam<bool> { |
public: |
AudioSystemImplTest() |
- : use_audio_thread_(GetParam()), audio_thread_("AudioSystemThread") { |
+ : use_audio_thread_(GetParam()), |
+ audio_thread_("AudioSystemThread"), |
+ input_params_(AudioParameters::AUDIO_PCM_LINEAR, |
+ CHANNEL_LAYOUT_MONO, |
+ AudioParameters::kTelephoneSampleRate, |
+ 16, |
+ AudioParameters::kTelephoneSampleRate / 10), |
+ output_params_(AudioParameters::AUDIO_PCM_LINEAR, |
+ CHANNEL_LAYOUT_MONO, |
+ AudioParameters::kTelephoneSampleRate, |
+ 16, |
+ AudioParameters::kTelephoneSampleRate / 20), |
+ default_output_params_(AudioParameters::AUDIO_PCM_LINEAR, |
+ CHANNEL_LAYOUT_MONO, |
+ AudioParameters::kTelephoneSampleRate, |
+ 16, |
+ AudioParameters::kTelephoneSampleRate / 30) { |
if (use_audio_thread_) { |
audio_thread_.StartAndWaitForTesting(); |
audio_manager_.reset( |
@@ -30,8 +49,11 @@ class AudioSystemImplTest : public testing::TestWithParam<bool> { |
audio_manager_.reset(new media::MockAudioManager( |
base::ThreadTaskRunnerHandle::Get().get())); |
} |
- audio_manager_->SetInputStreamParameters( |
- media::AudioParameters::UnavailableDeviceParams()); |
+ |
+ audio_manager_->SetInputStreamParameters(input_params_); |
+ audio_manager_->SetOutputStreamParameters(output_params_); |
+ audio_manager_->SetDefaultOutputStreamParameters(default_output_params_); |
+ |
audio_system_ = media::AudioSystemImpl::Create(audio_manager_.get()); |
EXPECT_EQ(AudioSystem::Get(), audio_system_.get()); |
} |
@@ -52,12 +74,17 @@ class AudioSystemImplTest : public testing::TestWithParam<bool> { |
AudioParametersReceived(); |
} |
+ void OnHasInputDevices(bool result) { |
+ EXPECT_TRUE(thread_checker_.CalledOnValidThread()); |
+ HasInputDevicesCallback(result); |
+ } |
+ |
void WaitForCallback() { |
if (!use_audio_thread_) { |
base::RunLoop().RunUntilIdle(); |
return; |
} |
- media::WaitableMessageLoopEvent event; |
+ WaitableMessageLoopEvent event; |
audio_thread_.task_runner()->PostTaskAndReply( |
FROM_HERE, base::Bind(&base::DoNothing), event.GetClosure()); |
// Runs the loop and waits for the |audio_thread_| to call event's closure, |
@@ -77,6 +104,9 @@ class AudioSystemImplTest : public testing::TestWithParam<bool> { |
base::Thread audio_thread_; |
MockAudioManager::UniquePtr audio_manager_; |
std::unique_ptr<media::AudioSystem> audio_system_; |
+ AudioParameters input_params_; |
+ AudioParameters output_params_; |
+ AudioParameters default_output_params_; |
}; |
TEST_P(AudioSystemImplTest, GetInputStreamParameters) { |
@@ -84,7 +114,7 @@ TEST_P(AudioSystemImplTest, GetInputStreamParameters) { |
audio_system_->GetInputStreamParameters( |
media::AudioDeviceDescription::kDefaultDeviceId, |
base::Bind(&AudioSystemImplTest::OnAudioParams, base::Unretained(this), |
- media::AudioParameters::UnavailableDeviceParams())); |
+ input_params_)); |
WaitForCallback(); |
} |
@@ -98,10 +128,44 @@ TEST_P(AudioSystemImplTest, GetInputStreamParametersNoDevice) { |
WaitForCallback(); |
} |
+TEST_P(AudioSystemImplTest, GetStreamParameters) { |
+ EXPECT_CALL(*this, AudioParametersReceived()); |
+ audio_system_->GetOutputStreamParameters( |
+ kNonDefaultDeviceId, base::Bind(&AudioSystemImplTest::OnAudioParams, |
+ base::Unretained(this), output_params_)); |
+ WaitForCallback(); |
+} |
+ |
+TEST_P(AudioSystemImplTest, GetDefaultOutputStreamParameters) { |
+ EXPECT_CALL(*this, AudioParametersReceived()); |
+ audio_system_->GetOutputStreamParameters( |
+ media::AudioDeviceDescription::kDefaultDeviceId, |
+ base::Bind(&AudioSystemImplTest::OnAudioParams, base::Unretained(this), |
+ default_output_params_)); |
+ WaitForCallback(); |
+} |
+ |
+TEST_P(AudioSystemImplTest, GetOutputStreamParametersNoDevice) { |
+ audio_manager_->SetHasOutputDevices(false); |
+ EXPECT_CALL(*this, AudioParametersReceived()).Times(2); |
+ |
+ audio_system_->GetOutputStreamParameters( |
+ media::AudioDeviceDescription::kDefaultDeviceId, |
+ base::Bind(&AudioSystemImplTest::OnAudioParams, base::Unretained(this), |
+ media::AudioParameters())); |
+ WaitForCallback(); |
+ |
+ audio_system_->GetOutputStreamParameters( |
+ kNonDefaultDeviceId, |
+ base::Bind(&AudioSystemImplTest::OnAudioParams, base::Unretained(this), |
+ media::AudioParameters())); |
+ WaitForCallback(); |
+} |
+ |
TEST_P(AudioSystemImplTest, HasInputDevices) { |
EXPECT_CALL(*this, HasInputDevicesCallback(true)); |
audio_system_->HasInputDevices(base::Bind( |
- &AudioSystemImplTest::HasInputDevicesCallback, base::Unretained(this))); |
+ &AudioSystemImplTest::OnHasInputDevices, base::Unretained(this))); |
WaitForCallback(); |
} |
@@ -109,7 +173,7 @@ TEST_P(AudioSystemImplTest, HasNoInputDevices) { |
audio_manager_->SetHasInputDevices(false); |
EXPECT_CALL(*this, HasInputDevicesCallback(false)); |
audio_system_->HasInputDevices(base::Bind( |
- &AudioSystemImplTest::HasInputDevicesCallback, base::Unretained(this))); |
+ &AudioSystemImplTest::OnHasInputDevices, base::Unretained(this))); |
WaitForCallback(); |
} |