1 /*
2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #include "webrtc/modules/audio_device/include/audio_device.h"
12 #include "webrtc/voice_engine/test/auto_test/fixtures/after_streaming_fixture.h"
13 
14 class HardwareTest : public AfterStreamingFixture {
15 };
16 
17 #if !defined(WEBRTC_IOS) && !defined(WEBRTC_ANDROID)
TEST_F(HardwareTest,AbleToQueryForDevices)18 TEST_F(HardwareTest, AbleToQueryForDevices) {
19   int num_recording_devices = 0;
20   int num_playout_devices = 0;
21   EXPECT_EQ(0, voe_hardware_->GetNumOfRecordingDevices(num_recording_devices));
22   EXPECT_EQ(0, voe_hardware_->GetNumOfPlayoutDevices(num_playout_devices));
23 
24   ASSERT_GT(num_recording_devices, 0) <<
25       "There seem to be no recording devices on your system, "
26       "and this test really doesn't make sense then.";
27   ASSERT_GT(num_playout_devices, 0) <<
28       "There seem to be no playout devices on your system, "
29       "and this test really doesn't make sense then.";
30 
31   // Recording devices are handled a bit differently on Windows - we can
32   // just tell it to set the 'default' communication device there.
33 #ifdef _WIN32
34   // Should also work while already recording.
35   EXPECT_EQ(0, voe_hardware_->SetRecordingDevice(
36       webrtc::AudioDeviceModule::kDefaultCommunicationDevice));
37   // Should also work while already playing.
38   EXPECT_EQ(0, voe_hardware_->SetPlayoutDevice(
39       webrtc::AudioDeviceModule::kDefaultCommunicationDevice));
40 #else
41   // For other platforms, just use the first device encountered.
42   EXPECT_EQ(0, voe_hardware_->SetRecordingDevice(0));
43   EXPECT_EQ(0, voe_hardware_->SetPlayoutDevice(0));
44 #endif
45 
46   // It's hard to know what names this will return (it's system-dependent),
47   // so just check that it's possible to do it.
48   char device_name[128] = {0};
49   char guid_name[128] = {0};
50   EXPECT_EQ(0, voe_hardware_->GetRecordingDeviceName(
51       0, device_name, guid_name));
52   EXPECT_EQ(0, voe_hardware_->GetPlayoutDeviceName(
53       0, device_name, guid_name));
54 }
55 #endif
56