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

Unified Diff: media/audio/audio_system_impl_unittest.cc

Issue 2761273003: Switching MediaStreamsManager from using AudioManager interface to AudioSystem one. (Closed)
Patch Set: passing device descriptions by value Created 3 years, 9 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
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 ba4de578db69d155b0d56f6c2dcff091b7422dbd..26f19873b429029da9ed76986fd47464ee278d3b 100644
--- a/media/audio/audio_system_impl_unittest.cc
+++ b/media/audio/audio_system_impl_unittest.cc
@@ -19,8 +19,15 @@
namespace {
const char* kNonDefaultDeviceId = "non-default-device-id";
}
+
namespace media {
+bool operator==(const media::AudioDeviceDescription& lhs,
+ const media::AudioDeviceDescription& rhs) {
+ return lhs.device_name == rhs.device_name && lhs.unique_id == rhs.unique_id &&
+ lhs.group_id == rhs.group_id;
+}
+
class AudioSystemImplTest : public testing::TestWithParam<bool> {
public:
AudioSystemImplTest()
@@ -54,6 +61,18 @@ class AudioSystemImplTest : public testing::TestWithParam<bool> {
audio_manager_->SetOutputStreamParameters(output_params_);
audio_manager_->SetDefaultOutputStreamParameters(default_output_params_);
+ auto get_device_descriptions = [](const AudioDeviceDescriptions* source,
+ AudioDeviceDescriptions* destination) {
+ destination->insert(destination->end(), source->begin(), source->end());
+ };
+
+ audio_manager_->SetInputDeviceDescriptionsCallback(
+ base::Bind(get_device_descriptions,
+ base::Unretained(&input_device_descriptions_)));
+ audio_manager_->SetOutputDeviceDescriptionsCallback(
+ base::Bind(get_device_descriptions,
+ base::Unretained(&output_device_descriptions_)));
+
audio_system_ = media::AudioSystemImpl::Create(audio_manager_.get());
EXPECT_EQ(AudioSystem::Get(), audio_system_.get());
}
@@ -79,6 +98,14 @@ class AudioSystemImplTest : public testing::TestWithParam<bool> {
HasInputDevicesCallback(result);
}
+ void OnGetDeviceDescriptions(
+ const AudioDeviceDescriptions& expected_descriptions,
+ AudioDeviceDescriptions descriptions) {
+ EXPECT_TRUE(thread_checker_.CalledOnValidThread());
+ EXPECT_EQ(expected_descriptions, descriptions);
+ DeviceDescriptionsReceived();
+ }
+
void WaitForCallback() {
if (!use_audio_thread_) {
base::RunLoop().RunUntilIdle();
@@ -94,8 +121,10 @@ class AudioSystemImplTest : public testing::TestWithParam<bool> {
base::RunLoop().RunUntilIdle();
}
+ // Mocks to verify that AudioSystem replied with an expected callback.
MOCK_METHOD0(AudioParametersReceived, void(void));
MOCK_METHOD1(HasInputDevicesCallback, void(bool));
+ MOCK_METHOD0(DeviceDescriptionsReceived, void(void));
protected:
base::MessageLoop message_loop_;
@@ -107,6 +136,8 @@ class AudioSystemImplTest : public testing::TestWithParam<bool> {
AudioParameters input_params_;
AudioParameters output_params_;
AudioParameters default_output_params_;
+ AudioDeviceDescriptions input_device_descriptions_;
+ AudioDeviceDescriptions output_device_descriptions_;
};
TEST_P(AudioSystemImplTest, GetInputStreamParameters) {
@@ -177,6 +208,66 @@ TEST_P(AudioSystemImplTest, HasNoInputDevices) {
WaitForCallback();
}
+TEST_P(AudioSystemImplTest, GetInputDeviceDescriptionsNoInputDevices) {
+ output_device_descriptions_.emplace_back("output_device_name",
+ "output_device_id", "group_id");
+ EXPECT_EQ(0, static_cast<int>(input_device_descriptions_.size()));
+ EXPECT_EQ(1, static_cast<int>(output_device_descriptions_.size()));
+ EXPECT_CALL(*this, DeviceDescriptionsReceived());
+ audio_system_->GetDeviceDescriptions(
+ base::Bind(&AudioSystemImplTest::OnGetDeviceDescriptions,
+ base::Unretained(this), input_device_descriptions_),
+ true);
+ WaitForCallback();
+}
+
+TEST_P(AudioSystemImplTest, GetInputDeviceDescriptions) {
+ output_device_descriptions_.emplace_back("output_device_name",
+ "output_device_id", "group_id");
+ input_device_descriptions_.emplace_back("input_device_name1",
+ "input_device_id1", "group_id1");
+ input_device_descriptions_.emplace_back("input_device_name2",
+ "input_device_id2", "group_id2");
+ EXPECT_EQ(2, static_cast<int>(input_device_descriptions_.size()));
+ EXPECT_EQ(1, static_cast<int>(output_device_descriptions_.size()));
+ EXPECT_CALL(*this, DeviceDescriptionsReceived());
+ audio_system_->GetDeviceDescriptions(
+ base::Bind(&AudioSystemImplTest::OnGetDeviceDescriptions,
+ base::Unretained(this), input_device_descriptions_),
+ true);
+ WaitForCallback();
+}
+
+TEST_P(AudioSystemImplTest, GetOutputDeviceDescriptionsNoInputDevices) {
+ input_device_descriptions_.emplace_back("input_device_name",
+ "input_device_id", "group_id");
+ EXPECT_EQ(0, static_cast<int>(output_device_descriptions_.size()));
+ EXPECT_EQ(1, static_cast<int>(input_device_descriptions_.size()));
+ EXPECT_CALL(*this, DeviceDescriptionsReceived());
+ audio_system_->GetDeviceDescriptions(
+ base::Bind(&AudioSystemImplTest::OnGetDeviceDescriptions,
+ base::Unretained(this), output_device_descriptions_),
+ false);
+ WaitForCallback();
+}
+
+TEST_P(AudioSystemImplTest, GetOutputDeviceDescriptions) {
+ input_device_descriptions_.emplace_back("input_device_name",
+ "input_device_id", "group_id");
+ output_device_descriptions_.emplace_back("output_device_name1",
+ "output_device_id1", "group_id1");
+ output_device_descriptions_.emplace_back("output_device_name2",
+ "output_device_id2", "group_id2");
+ EXPECT_EQ(2, static_cast<int>(output_device_descriptions_.size()));
+ EXPECT_EQ(1, static_cast<int>(input_device_descriptions_.size()));
+ EXPECT_CALL(*this, DeviceDescriptionsReceived());
+ audio_system_->GetDeviceDescriptions(
+ base::Bind(&AudioSystemImplTest::OnGetDeviceDescriptions,
+ base::Unretained(this), output_device_descriptions_),
+ false);
+ WaitForCallback();
+}
+
INSTANTIATE_TEST_CASE_P(, AudioSystemImplTest, testing::Values(false, true));
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698