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

Side by Side Diff: media/audio/audio_manager_unittest.cc

Issue 23475037: Implement GetAudioOutputDevices for remaining platforms, consolidate tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkgr
Patch Set: Merge LKGR, remove anonymous namespaces. Created 7 years, 3 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 unified diff | Download patch
« no previous file with comments | « media/audio/audio_manager_base.cc ('k') | media/audio/cras/audio_manager_cras.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/logging.h"
6 #include "base/memory/scoped_ptr.h"
7 #include "media/audio/audio_manager.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 #if defined(OS_LINUX)
11 #include "media/audio/linux/audio_manager_linux.h"
12 #endif // defined(OS_LINUX)
13
14 #if defined(OS_WIN)
15 #include "media/audio/win/audio_manager_win.h"
16 #endif // defined(OS_WIN)
17
18 #if defined(USE_PULSEAUDIO)
19 #include "media/audio/pulse/audio_manager_pulse.h"
20 #endif // defined(USE_PULSEAUDIO)
21
22 namespace media {
23
24 void GetAudioOutputDeviceNamesImpl(AudioManager* audio_manager) {
25 AudioDeviceNames device_names;
26 audio_manager->GetAudioOutputDeviceNames(&device_names);
27
28 VLOG(2) << "Got " << device_names.size() << " audio output devices.";
29 for (AudioDeviceNames::iterator it = device_names.begin();
30 it != device_names.end();
31 ++it) {
32 EXPECT_FALSE(it->unique_id.empty());
33 EXPECT_FALSE(it->device_name.empty());
34 VLOG(2) << "Device ID(" << it->unique_id << "), label: " << it->device_name;
35 }
36 }
37
38 // So that tests herein can be friends of AudioManagerWin.
39 //
40 // TODO(joi): Make this go away by unifying audio_manager_unittest.cc
41 // and audio_input_device_unittest.cc
42 class AudioManagerTest : public ::testing::Test {
43 public:
44 bool SetupForSecondTest(AudioManager* amw) {
45 #if defined(OS_WIN)
46 AudioManagerWin* audio_manager_win = static_cast<AudioManagerWin*>(amw);
47 if (audio_manager_win->enumeration_type() ==
48 AudioManagerWin::kWaveEnumeration) {
49 // This will be true only if running on Windows XP.
50 VLOG(2) << "AudioManagerWin on WinXP; nothing more to test.";
51 } else {
52 VLOG(2) << "Testing AudioManagerWin in fallback WinXP mode.";
53 audio_manager_win->SetEnumerationType(AudioManagerWin::kWaveEnumeration);
54 return true;
55 }
56 #endif // defined(OS_WIN)
57 return false;
58 }
59 };
60
61 TEST_F(AudioManagerTest, GetAudioOutputDeviceNames) {
62 // On Linux, we may be able to test both the Alsa and Pulseaudio
63 // versions of the audio manager.
64 #if defined(USE_PULSEAUDIO)
65 {
66 VLOG(2) << "Testing AudioManagerPulse.";
67 scoped_ptr<AudioManager> pulse_audio_manager(AudioManagerPulse::Create());
68 if (pulse_audio_manager.get())
69 GetAudioOutputDeviceNamesImpl(pulse_audio_manager.get());
70 else
71 LOG(WARNING) << "No pulseaudio on this system.";
72 }
73 #endif // defined(USE_PULSEAUDIO)
74 #if defined(USE_ALSA)
75 {
76 VLOG(2) << "Testing AudioManagerLinux.";
77 scoped_ptr<AudioManager> alsa_audio_manager(new AudioManagerLinux());
78 GetAudioOutputDeviceNamesImpl(alsa_audio_manager.get());
79 }
80 #endif // defined(USE_ALSA)
81
82 #if defined(OS_MACOSX)
83 VLOG(2) << "Testing platform-default AudioManager.";
84 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
85 GetAudioOutputDeviceNamesImpl(audio_manager.get());
86 #endif // defined(OS_MACOSX)
87
88 #if defined(OS_WIN)
89 {
90 // TODO(joi): Unify the tests in audio_input_device_unittest.cc
91 // with the tests in this file, and reuse the Windows-specific
92 // bits from that file.
93 VLOG(2) << "Testing AudioManagerWin in its default mode.";
94 scoped_ptr<AudioManager> audio_manager_win(AudioManager::Create());
95 GetAudioOutputDeviceNamesImpl(audio_manager_win.get());
96
97 if (SetupForSecondTest(audio_manager_win.get())) {
98 GetAudioOutputDeviceNamesImpl(audio_manager_win.get());
99 }
100 }
101 #endif // defined(OS_WIN)
102 }
103
104 TEST_F(AudioManagerTest, GetDefaultOutputStreamParameters) {
105 #if defined(OS_WIN) || defined(OS_MACOSX)
106 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
107 ASSERT_TRUE(audio_manager);
108 if (!audio_manager->HasAudioOutputDevices())
109 return;
110
111 AudioParameters params = audio_manager->GetDefaultOutputStreamParameters();
112 EXPECT_TRUE(params.IsValid());
113 #endif // defined(OS_WIN) || defined(OS_MACOSX)
114 }
115
116 TEST_F(AudioManagerTest, GetAssociatedOutputDeviceID) {
117 #if defined(OS_WIN) || defined(OS_MACOSX)
118 scoped_ptr<AudioManager> audio_manager(AudioManager::Create());
119 ASSERT_TRUE(audio_manager);
120 if (!audio_manager->HasAudioOutputDevices() ||
121 !audio_manager->HasAudioInputDevices()) {
122 return;
123 }
124
125 AudioDeviceNames device_names;
126 audio_manager->GetAudioInputDeviceNames(&device_names);
127 bool found_an_associated_device = false;
128 for (AudioDeviceNames::iterator it = device_names.begin();
129 it != device_names.end();
130 ++it) {
131 EXPECT_FALSE(it->unique_id.empty());
132 EXPECT_FALSE(it->device_name.empty());
133 std::string output_device_id(
134 audio_manager->GetAssociatedOutputDeviceID(it->unique_id));
135 if (!output_device_id.empty()) {
136 VLOG(2) << it->unique_id << " matches with " << output_device_id;
137 found_an_associated_device = true;
138 }
139 }
140
141 EXPECT_TRUE(found_an_associated_device);
142 #endif // defined(OS_WIN) || defined(OS_MACOSX)
143 }
144
145 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/audio_manager_base.cc ('k') | media/audio/cras/audio_manager_cras.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698