1// Copyright 2016 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14// 15 16// Tests for the audio service callback object. 17 18#include <gmock/gmock.h> 19#include <gtest/gtest.h> 20 21#include <hardware/audio.h> 22 23#include "audio_service_callback.h" 24 25namespace brillo { 26 27class AudioServiceCallbackTest : public testing::Test { 28 public: 29 void SetUp() override { 30 connected_call_count_ = 0; 31 disconnected_call_count_ = 0; 32 callback_.OnAudioDeviceAdded = OnDeviceConnectedMock; 33 callback_.OnAudioDeviceRemoved = OnDeviceDisconnectedMock; 34 user_data_ = static_cast<void*>(this); 35 } 36 37 static void OnDeviceConnectedMock(const BAudioDeviceInfo*, void* user_data) { 38 static_cast<AudioServiceCallbackTest*>(user_data)->connected_call_count_++; 39 } 40 41 static void OnDeviceDisconnectedMock(const BAudioDeviceInfo*, void* user_data) { 42 static_cast<AudioServiceCallbackTest*>( 43 user_data)->disconnected_call_count_++; 44 } 45 46 BAudioCallback callback_; 47 void* user_data_; 48 int connected_call_count_; 49 int disconnected_call_count_; 50}; 51 52TEST_F(AudioServiceCallbackTest, CallbackCallCount) { 53 std::vector<int> devices = {AUDIO_DEVICE_OUT_WIRED_HEADSET, 54 AUDIO_DEVICE_OUT_WIRED_HEADPHONE}; 55 AudioServiceCallback service_callback(&callback_, user_data_); 56 service_callback.OnAudioDevicesConnected(devices); 57 EXPECT_EQ(connected_call_count_, devices.size()); 58 service_callback.OnAudioDevicesDisconnected(devices); 59 EXPECT_EQ(disconnected_call_count_, devices.size()); 60} 61 62} // namespace brillo 63