diff options
author | Joey Grover <joeygrover@gmail.com> | 2019-06-12 14:54:53 -0400 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2019-06-12 14:54:53 -0400 |
commit | 3dcc26daf1702cb2f480532226e608621ae28d16 (patch) | |
tree | 8aeb92df4d7fb93741f06e8efc7e43ec295b8acf | |
parent | 8a2cc039583ec8f541a23ae8f785102cd803d4b6 (diff) | |
download | sdl_android-3dcc26daf1702cb2f480532226e608621ae28d16.tar.gz |
Add unit test for MediaStreamingStatus
-rw-r--r-- | android/sdl_android/src/androidTest/java/com/smartdevicelink/util/MediaStreamingStatusTests.java | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/util/MediaStreamingStatusTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/util/MediaStreamingStatusTests.java new file mode 100644 index 000000000..e36d6f7e5 --- /dev/null +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/util/MediaStreamingStatusTests.java @@ -0,0 +1,168 @@ +package com.smartdevicelink.util; + +import android.content.Context; +import android.media.AudioDeviceInfo; +import android.media.AudioManager; + +import com.smartdevicelink.AndroidTestCase2; +import com.smartdevicelink.managers.SdlManager; +import com.smartdevicelink.managers.SdlManagerListener; +import com.smartdevicelink.proxy.rpc.enums.AppHMIType; +import com.smartdevicelink.test.Test; +import com.smartdevicelink.transport.MultiplexTransportConfig; + +import org.mockito.Mock; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; + +import java.util.Vector; + +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; + +public class MediaStreamingStatusTests extends AndroidTestCase2 { + + + + @Mock + private AudioManager audioManager = mock(AudioManager.class); + + @Mock + Context mockedContext; + + MediaStreamingStatus defaultMediaStreamingStatus; + AudioDeviceInfo[] deviceInfosToReturn = null; + + private Answer<Object> onGetSystemService = new Answer<Object>() { + @Override + public Object answer(InvocationOnMock invocation) { + Object[] args = invocation.getArguments(); + String serviceName = (String) args[0]; + if(serviceName != null && serviceName.equalsIgnoreCase(Context.AUDIO_SERVICE)){ + return audioManager; + }else{ + return null; + } + } + }; + + private Answer<Object[]> onGetDevices = new Answer<Object[]>() { + @Override + public Object[] answer(InvocationOnMock invocation) { + return deviceInfosToReturn; + } + }; + + + @Override + public void setUp() throws Exception{ + mockedContext = mock(Context.class); + doAnswer(onGetSystemService).when(mockedContext).getSystemService(Context.AUDIO_SERVICE); + defaultMediaStreamingStatus = new MediaStreamingStatus(mockedContext, mock(MediaStreamingStatus.Callback.class)); + } + + + public void testEmptyAudioDeviceInfoList(){ + + assertNotNull(mockedContext); + MediaStreamingStatus mediaStreamingStatus = new MediaStreamingStatus(mockedContext, new MediaStreamingStatus.Callback() { + @Override + public void onAudioNoLongerAvailable() { + + } + }); + doAnswer(onGetDevices).when(audioManager).getDevices(AudioManager.GET_DEVICES_OUTPUTS); + + deviceInfosToReturn = new AudioDeviceInfo[0]; + + assertFalse(mediaStreamingStatus.isAudioOutputAvailable()); + + //Clear out the return list before moving forward + deviceInfosToReturn = null; + + + } + + public void testNullAudioDeviceInfoList(){ + assertNotNull(mockedContext); + MediaStreamingStatus mediaStreamingStatus = new MediaStreamingStatus(mockedContext, mock(MediaStreamingStatus.Callback.class)); + doAnswer(onGetDevices).when(audioManager).getDevices(AudioManager.GET_DEVICES_OUTPUTS); + deviceInfosToReturn = null; + assertFalse(mediaStreamingStatus.isAudioOutputAvailable()); + } + + + public void testSdlManagerMedia(){ + SdlManager.Builder builder = new SdlManager.Builder(getContext(), Test.GENERAL_FULL_APP_ID, Test.GENERAL_STRING, mock(SdlManagerListener.class)); + Vector<AppHMIType> appType = new Vector<>(); + appType.add(AppHMIType.MEDIA); + builder.setAppTypes(appType); + MultiplexTransportConfig multiplexTransportConfig = new MultiplexTransportConfig(getContext(),Test.GENERAL_FULL_APP_ID); + + assertNull(multiplexTransportConfig.requiresAudioSupport()); + builder.setTransportType(multiplexTransportConfig); + + SdlManager manager = builder.build(); + + //Original reference should be updated + assertTrue(multiplexTransportConfig.requiresAudioSupport()); + } + + public void testSdlManagerNonMedia(){ + SdlManager.Builder builder = new SdlManager.Builder(getContext(), Test.GENERAL_FULL_APP_ID, Test.GENERAL_STRING, mock(SdlManagerListener.class)); + Vector<AppHMIType> appType = new Vector<>(); + appType.add(AppHMIType.DEFAULT); + builder.setAppTypes(appType); + MultiplexTransportConfig multiplexTransportConfig = new MultiplexTransportConfig(getContext(),Test.GENERAL_FULL_APP_ID); + + assertNull(multiplexTransportConfig.requiresAudioSupport()); + builder.setTransportType(multiplexTransportConfig); + + SdlManager manager = builder.build(); + + //Original reference should be updated + assertFalse(multiplexTransportConfig.requiresAudioSupport()); + } + + public void testAcceptedBTDevices(){ + MediaStreamingStatus mediaStreamingStatus = spy(new MediaStreamingStatus(getContext(), mock(MediaStreamingStatus.Callback.class))); + + doAnswer(new Answer() { + @Override + public Object answer(InvocationOnMock invocation) throws Throwable { + return true; + } + }).when(mediaStreamingStatus).isBluetoothActuallyAvailable(); + + assertTrue(mediaStreamingStatus.isBluetoothActuallyAvailable()); + assertTrue(mediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_BLUETOOTH_A2DP)); + } + + public void testAcceptedUSBDevices(){ + MediaStreamingStatus mediaStreamingStatus = spy(new MediaStreamingStatus(getContext(), mock(MediaStreamingStatus.Callback.class))); + + doAnswer(new Answer() { + @Override + public Object answer(InvocationOnMock invocation) throws Throwable { + return true; + } + }).when(mediaStreamingStatus).isUsbActuallyConnected(); + + assertTrue(mediaStreamingStatus.isUsbActuallyConnected()); + assertTrue(mediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_USB_DEVICE)); + assertTrue(mediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_USB_ACCESSORY)); + assertTrue(mediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_USB_HEADSET)); + assertTrue(mediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_DOCK)); + } + + public void testAcceptedLineDevices(){ + assertTrue(defaultMediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_LINE_ANALOG)); + assertTrue(defaultMediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_LINE_DIGITAL)); + assertTrue(defaultMediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_AUX_LINE)); + assertTrue(defaultMediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_WIRED_HEADSET)); + assertTrue(defaultMediaStreamingStatus.isSupportedAudioDevice(AudioDeviceInfo.TYPE_WIRED_HEADPHONES)); + } + + +} |