Add test for audio device type helper functions.

This CL added test audio device type helper functions, which expect a
single audio device type as a parameter.

Bug: 135621476
Test: atest systemaudio_tests
Change-Id: I5dac8eab93ab2251eea62b3b8d797f504bf538e4
Merged-In: I5dac8eab93ab2251eea62b3b8d797f504bf538e4
diff --git a/services/audiopolicy/tests/systemaudio_tests.cpp b/services/audiopolicy/tests/systemaudio_tests.cpp
index abaae52..fcee58d 100644
--- a/services/audiopolicy/tests/systemaudio_tests.cpp
+++ b/services/audiopolicy/tests/systemaudio_tests.cpp
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
+#include <unordered_set>
+
 #include <gtest/gtest.h>
 
 #define LOG_TAG "SysAudio_Test"
@@ -115,3 +117,58 @@
                     (PatchBuilder{}).addSource(src).addSink(sink_hw_av_sync).patch(),
                     (PatchBuilder{}).addSource(src).addSink(sink_hw_av_sync).patch()));
 }
+
+void runAudioDeviceTypeHelperFunction(const std::unordered_set<audio_devices_t>& allDevices,
+                                      const audio_devices_t targetDevices[],
+                                      unsigned int targetDeviceCount,
+                                      const std::string& deviceTag,
+                                      bool (*device_type_helper_function)(audio_devices_t))
+{
+    std::unordered_set<audio_devices_t> devices(targetDevices, targetDevices + targetDeviceCount);
+    for (auto device : allDevices) {
+        if (devices.find(device) == devices.end()) {
+            ASSERT_FALSE(device_type_helper_function(device))
+                    << std::hex << device << " should not be " << deviceTag << " device";
+        } else {
+            ASSERT_TRUE(device_type_helper_function(device))
+                    << std::hex << device << " should be " << deviceTag << " device";
+        }
+    }
+}
+
+TEST(SystemAudioTest, AudioDeviceTypeHelperFunction) {
+    std::unordered_set<audio_devices_t> allDeviceTypes;
+    allDeviceTypes.insert(std::begin(AUDIO_DEVICE_OUT_ALL_ARRAY),
+            std::end(AUDIO_DEVICE_OUT_ALL_ARRAY));
+    allDeviceTypes.insert(std::begin(AUDIO_DEVICE_IN_ALL_ARRAY),
+            std::end(AUDIO_DEVICE_IN_ALL_ARRAY));
+
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, AUDIO_DEVICE_OUT_ALL_ARRAY,
+            AUDIO_DEVICE_OUT_CNT, "output", audio_is_output_device);
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, AUDIO_DEVICE_IN_ALL_ARRAY,
+            AUDIO_DEVICE_IN_CNT, "input", audio_is_input_device);
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, AUDIO_DEVICE_OUT_ALL_A2DP_ARRAY,
+            AUDIO_DEVICE_OUT_A2DP_CNT, "a2dp out", audio_is_a2dp_out_device);
+    const audio_devices_t bluetoothInA2dpDevices[] = { AUDIO_DEVICE_IN_BLUETOOTH_A2DP };
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, bluetoothInA2dpDevices,
+            1 /*targetDeviceCount*/, "a2dp in", audio_is_a2dp_in_device);
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, AUDIO_DEVICE_OUT_ALL_SCO_ARRAY,
+            AUDIO_DEVICE_OUT_SCO_CNT, "bluetooth out sco", audio_is_bluetooth_out_sco_device);
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, AUDIO_DEVICE_IN_ALL_SCO_ARRAY,
+            AUDIO_DEVICE_IN_SCO_CNT, "bluetooth in sco", audio_is_bluetooth_in_sco_device);
+    const unsigned int scoDeviceCount = AUDIO_DEVICE_OUT_SCO_CNT + AUDIO_DEVICE_IN_SCO_CNT;
+    audio_devices_t scoDevices[scoDeviceCount];
+    std::copy(std::begin(AUDIO_DEVICE_OUT_ALL_SCO_ARRAY), std::end(AUDIO_DEVICE_OUT_ALL_SCO_ARRAY),
+              std::begin(scoDevices));
+    std::copy(std::begin(AUDIO_DEVICE_IN_ALL_SCO_ARRAY), std::end(AUDIO_DEVICE_IN_ALL_SCO_ARRAY),
+              std::begin(scoDevices) + AUDIO_DEVICE_OUT_SCO_CNT);
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, scoDevices,
+            scoDeviceCount, "bluetooth sco", audio_is_bluetooth_sco_device);
+    const audio_devices_t hearingAidOutDevices[] = { AUDIO_DEVICE_OUT_HEARING_AID };
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, hearingAidOutDevices,
+            1 /*targetDeviceCount*/, "hearing aid out", audio_is_hearing_aid_out_device);
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, AUDIO_DEVICE_OUT_ALL_USB_ARRAY,
+            AUDIO_DEVICE_OUT_USB_CNT, "usb out", audio_is_usb_out_device);
+    runAudioDeviceTypeHelperFunction(allDeviceTypes, AUDIO_DEVICE_IN_ALL_USB_ARRAY,
+            AUDIO_DEVICE_IN_USB_CNT, "usb in", audio_is_usb_in_device);
+}