summaryrefslogtreecommitdiff
path: root/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers
diff options
context:
space:
mode:
authorRHenigan <heniganr1@gmail.com>2020-08-13 14:24:20 -0400
committerRHenigan <heniganr1@gmail.com>2020-08-13 14:24:20 -0400
commit292fe6005a1e863be1c5e6829574a3b89ba126ac (patch)
tree90e2a9ac369f7d79b143c72eef6fb1114a298b9a /android/sdl_android/src/androidTest/java/com/smartdevicelink/managers
parenta52d89561a7d8d144d376c0261c57066f99546b2 (diff)
parent25a849c9c1e852c24356f569f8877e7bf5193f0b (diff)
downloadsdl_android-292fe6005a1e863be1c5e6829574a3b89ba126ac.tar.gz
Merge branch 'develop' into feature/0268_MainMenuUpdating_Pagination
Diffstat (limited to 'android/sdl_android/src/androidTest/java/com/smartdevicelink/managers')
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/audio/AudioStreamManagerTest.java4
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java6
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlArtworkTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlFileTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/LifecycleConfigurationUpdateTest.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/RpcConverterTest.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManagerTests.java1100
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenConfigTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManagerTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenManagerTests.java6
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/permission/PermissionManagerTests.java4
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SubscribeButtonManagerTest.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java6
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceCellTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetLayoutTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentChoiceSetOperationTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentKeyboardOperationTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuConfigurationTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/RunScoreTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/SubCellCommandListTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandTests.java2
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java8
33 files changed, 1143 insertions, 43 deletions
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java
index c1c636c50..b33c4f494 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java
@@ -1,7 +1,7 @@
package com.smartdevicelink.managers;
import android.content.Context;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.livio.taskmaster.Taskmaster;
import com.smartdevicelink.managers.lifecycle.LifecycleConfigurationUpdate;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/audio/AudioStreamManagerTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/audio/AudioStreamManagerTest.java
index 58d92c6ba..3fd5cd943 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/audio/AudioStreamManagerTest.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/audio/AudioStreamManagerTest.java
@@ -5,7 +5,7 @@ import android.media.AudioFormat;
import android.media.MediaFormat;
import android.media.MediaPlayer;
import android.os.Build;
-import android.support.test.InstrumentationRegistry;
+import androidx.test.platform.app.InstrumentationRegistry;
import android.util.Log;
import com.smartdevicelink.SdlConnection.SdlSession;
@@ -53,7 +53,7 @@ public class AudioStreamManagerTest extends TestCase {
@Override
public void setUp() throws Exception {
super.setUp();
- mContext = InstrumentationRegistry.getContext();
+ mContext = InstrumentationRegistry.getInstrumentation().getContext();
}
@Override
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java
index 89abc76cc..dccd7c10b 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/FileManagerTests.java
@@ -2,7 +2,7 @@ package com.smartdevicelink.managers.file;
import android.content.Context;
import android.net.Uri;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.managers.CompletionListener;
@@ -33,7 +33,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import static android.support.test.InstrumentationRegistry.getTargetContext;
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
@@ -58,7 +58,7 @@ public class FileManagerTests {
@Before
public void setUp() throws Exception{
- mTestContext = getTargetContext();
+ mTestContext = getInstrumentation().getTargetContext();
validFile = new SdlFile();
validFile.setName(TestValues.GENERAL_STRING);
validFile.setFileData(TestValues.GENERAL_BYTE_ARRAY);
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlArtworkTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlArtworkTests.java
index 5b179e8ef..5c59f20d7 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlArtworkTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlArtworkTests.java
@@ -1,6 +1,6 @@
package com.smartdevicelink.managers.file;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.file.filetypes.SdlArtwork;
import com.smartdevicelink.proxy.rpc.enums.StaticIconName;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlFileTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlFileTests.java
index bdb47aec1..86f328e8a 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlFileTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/file/filetypes/SdlFileTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.file.filetypes;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.test.TestValues;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/LifecycleConfigurationUpdateTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/LifecycleConfigurationUpdateTest.java
index 61edcf87d..02509a96a 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/LifecycleConfigurationUpdateTest.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/LifecycleConfigurationUpdateTest.java
@@ -35,7 +35,7 @@
package com.smartdevicelink.managers.lifecycle;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.test.TestValues;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/RpcConverterTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/RpcConverterTest.java
index 1031fc652..744779ef4 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/RpcConverterTest.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/RpcConverterTest.java
@@ -1,6 +1,6 @@
package com.smartdevicelink.managers.lifecycle;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.marshal.JsonRPCMarshaller;
import com.smartdevicelink.protocol.ProtocolMessage;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManagerTests.java
new file mode 100644
index 000000000..112a8ca4f
--- /dev/null
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lifecycle/SystemCapabilityManagerTests.java
@@ -0,0 +1,1100 @@
+package com.smartdevicelink.managers.lifecycle;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import android.util.SparseArray;
+
+import com.livio.taskmaster.Taskmaster;
+import com.smartdevicelink.managers.ManagerUtility;
+import com.smartdevicelink.protocol.enums.FunctionID;
+import com.smartdevicelink.protocol.enums.SessionType;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.RPCRequest;
+import com.smartdevicelink.proxy.interfaces.IAudioStreamListener;
+import com.smartdevicelink.proxy.interfaces.ISdl;
+import com.smartdevicelink.proxy.interfaces.ISdlServiceListener;
+import com.smartdevicelink.proxy.interfaces.IVideoStreamListener;
+import com.smartdevicelink.proxy.interfaces.OnSystemCapabilityListener;
+import com.smartdevicelink.proxy.rpc.AppServiceCapability;
+import com.smartdevicelink.proxy.rpc.AppServicesCapabilities;
+import com.smartdevicelink.proxy.rpc.AudioPassThruCapabilities;
+import com.smartdevicelink.proxy.rpc.ButtonCapabilities;
+import com.smartdevicelink.proxy.rpc.DisplayCapabilities;
+import com.smartdevicelink.proxy.rpc.DisplayCapability;
+import com.smartdevicelink.proxy.rpc.GetSystemCapability;
+import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse;
+import com.smartdevicelink.proxy.rpc.HMICapabilities;
+import com.smartdevicelink.proxy.rpc.OnHMIStatus;
+import com.smartdevicelink.proxy.rpc.OnSystemCapabilityUpdated;
+import com.smartdevicelink.proxy.rpc.PhoneCapability;
+import com.smartdevicelink.proxy.rpc.PresetBankCapabilities;
+import com.smartdevicelink.proxy.rpc.RegisterAppInterfaceResponse;
+import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
+import com.smartdevicelink.proxy.rpc.SetDisplayLayoutResponse;
+import com.smartdevicelink.proxy.rpc.SoftButtonCapabilities;
+import com.smartdevicelink.proxy.rpc.SystemCapability;
+import com.smartdevicelink.proxy.rpc.VideoStreamingCapability;
+import com.smartdevicelink.proxy.rpc.WindowCapability;
+import com.smartdevicelink.proxy.rpc.WindowTypeCapabilities;
+import com.smartdevicelink.proxy.rpc.enums.AppServiceType;
+import com.smartdevicelink.proxy.rpc.enums.AudioStreamingState;
+import com.smartdevicelink.proxy.rpc.enums.DisplayType;
+import com.smartdevicelink.proxy.rpc.enums.HMILevel;
+import com.smartdevicelink.proxy.rpc.enums.HmiZoneCapabilities;
+import com.smartdevicelink.proxy.rpc.enums.ImageType;
+import com.smartdevicelink.proxy.rpc.enums.MediaClockFormat;
+import com.smartdevicelink.proxy.rpc.enums.PredefinedWindows;
+import com.smartdevicelink.proxy.rpc.enums.PrerecordedSpeech;
+import com.smartdevicelink.proxy.rpc.enums.Result;
+import com.smartdevicelink.proxy.rpc.enums.ServiceUpdateReason;
+import com.smartdevicelink.proxy.rpc.enums.SpeechCapabilities;
+import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
+import com.smartdevicelink.proxy.rpc.enums.SystemContext;
+import com.smartdevicelink.proxy.rpc.enums.WindowType;
+import com.smartdevicelink.proxy.rpc.listeners.OnMultipleRequestListener;
+import com.smartdevicelink.proxy.rpc.listeners.OnRPCListener;
+import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
+import com.smartdevicelink.proxy.rpc.listeners.OnRPCRequestListener;
+import com.smartdevicelink.streaming.audio.AudioStreamingCodec;
+import com.smartdevicelink.streaming.audio.AudioStreamingParams;
+import com.smartdevicelink.streaming.video.VideoStreamingParameters;
+import com.smartdevicelink.test.TestValues;
+import com.smartdevicelink.test.Validator;
+import com.smartdevicelink.test.utl.AppServiceFactory;
+import com.smartdevicelink.util.CorrelationIdGenerator;
+import com.smartdevicelink.util.Version;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotNull;
+import static junit.framework.TestCase.assertNull;
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.assertFalse;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(AndroidJUnit4.class)
+public class SystemCapabilityManagerTests {
+ public static final String TAG = "SystemCapabilityManagerTests";
+ public static SystemCapabilityManager systemCapabilityManager;
+ private SystemCapability systemCapability;
+ private VideoStreamingCapability videoStreamingCapability;
+
+ @Before
+ public void setUp() throws Exception{
+
+ systemCapability = new SystemCapability(SystemCapabilityType.VIDEO_STREAMING);
+ videoStreamingCapability = new VideoStreamingCapability();
+ videoStreamingCapability.setMaxBitrate(TestValues.GENERAL_INT);
+ videoStreamingCapability.setPreferredResolution(TestValues.GENERAL_IMAGERESOLUTION);
+ videoStreamingCapability.setSupportedFormats(TestValues.GENERAL_VIDEOSTREAMINGFORMAT_LIST);
+ systemCapability.setCapabilityForType(SystemCapabilityType.VIDEO_STREAMING, videoStreamingCapability);
+ }
+
+ public SystemCapabilityManager createSampleManager(){
+ return createSampleManager(new InternalSDLInterface());
+ }
+
+ public SystemCapabilityManager createSampleManager(InternalSDLInterface iSdl){
+ SystemCapabilityManager systemCapabilityManager = new SystemCapabilityManager(iSdl);
+
+ RegisterAppInterfaceResponse raiResponse = new RegisterAppInterfaceResponse();
+
+ raiResponse.setHmiCapabilities(TestValues.GENERAL_HMICAPABILITIES);
+ raiResponse.setDisplayCapabilities(TestValues.GENERAL_DISPLAYCAPABILITIES);
+ raiResponse.setAudioPassThruCapabilities(TestValues.GENERAL_AUDIOPASSTHRUCAPABILITIES_LIST);
+ raiResponse.setButtonCapabilities(TestValues.GENERAL_BUTTONCAPABILITIES_LIST);
+ raiResponse.setHmiZoneCapabilities(TestValues.GENERAL_HMIZONECAPABILITIES_LIST);
+ raiResponse.setPresetBankCapabilities(TestValues.GENERAL_PRESETBANKCAPABILITIES);
+ raiResponse.setSoftButtonCapabilities(TestValues.GENERAL_SOFTBUTTONCAPABILITIES_LIST);
+ raiResponse.setSpeechCapabilities(TestValues.GENERAL_SPEECHCAPABILITIES_LIST);
+ raiResponse.setPrerecordedSpeech(TestValues.GENERAL_PRERECORDEDSPEECH_LIST);
+ raiResponse.setSuccess(true);
+
+ systemCapabilityManager.parseRAIResponse(raiResponse);
+ return systemCapabilityManager;
+ }
+
+ private List<DisplayCapability> createDisplayCapabilityList(DisplayCapabilities display, List<ButtonCapabilities> button, List<SoftButtonCapabilities> softButton) {
+ WindowTypeCapabilities windowTypeCapabilities = new WindowTypeCapabilities(WindowType.MAIN, 1);
+
+ DisplayCapability displayCapability = new DisplayCapability();
+ displayCapability.setDisplayName(display != null ? display.getDisplayName() : null);
+ displayCapability.setWindowTypeSupported(Collections.singletonList(windowTypeCapabilities));
+
+ WindowCapability defaultWindowCapability = new WindowCapability();
+ defaultWindowCapability.setWindowID(PredefinedWindows.DEFAULT_WINDOW.getValue());
+ defaultWindowCapability.setButtonCapabilities(button);
+ defaultWindowCapability.setSoftButtonCapabilities(softButton);
+
+ if (display == null) {
+ defaultWindowCapability.setTextFields(ManagerUtility.WindowCapabilityUtility.getAllTextFields());
+ defaultWindowCapability.setImageFields(ManagerUtility.WindowCapabilityUtility.getAllImageFields());
+ displayCapability.setWindowCapabilities(Collections.singletonList(defaultWindowCapability));
+ return Collections.singletonList(displayCapability);
+ }
+
+ defaultWindowCapability.setTemplatesAvailable(display.getTemplatesAvailable());
+ defaultWindowCapability.setNumCustomPresetsAvailable(display.getNumCustomPresetsAvailable());
+ defaultWindowCapability.setTextFields(display.getTextFields());
+ defaultWindowCapability.setImageFields(display.getImageFields());
+ ArrayList<ImageType> imageTypeSupported = new ArrayList<>();
+ imageTypeSupported.add(ImageType.STATIC);
+ if (display.getGraphicSupported()) {
+ imageTypeSupported.add(ImageType.DYNAMIC);
+ }
+ defaultWindowCapability.setImageTypeSupported(imageTypeSupported);
+
+ displayCapability.setWindowCapabilities(Collections.singletonList(defaultWindowCapability));
+ return Collections.singletonList(displayCapability);
+ }
+
+ private DisplayCapabilities createDisplayCapabilities(String displayName, WindowCapability defaultMainWindow) {
+ DisplayCapabilities convertedCapabilities = new DisplayCapabilities();
+ convertedCapabilities.setDisplayType(DisplayType.SDL_GENERIC); //deprecated but it is mandatory...
+ convertedCapabilities.setDisplayName(displayName);
+ convertedCapabilities.setTextFields(defaultMainWindow.getTextFields());
+ convertedCapabilities.setImageFields(defaultMainWindow.getImageFields());
+ convertedCapabilities.setTemplatesAvailable(defaultMainWindow.getTemplatesAvailable());
+ convertedCapabilities.setNumCustomPresetsAvailable(defaultMainWindow.getNumCustomPresetsAvailable());
+ convertedCapabilities.setMediaClockFormats(new ArrayList<MediaClockFormat>()); // mandatory field but can be empty
+ convertedCapabilities.setGraphicSupported(defaultMainWindow.getImageTypeSupported().contains(ImageType.DYNAMIC));
+
+ return convertedCapabilities;
+ }
+
+ @Test
+ public void testParseRAI() {
+ systemCapabilityManager = createSampleManager();
+
+ List<DisplayCapability> displayCapabilityList = createDisplayCapabilityList(TestValues.GENERAL_DISPLAYCAPABILITIES, TestValues.GENERAL_BUTTONCAPABILITIES_LIST, TestValues.GENERAL_SOFTBUTTONCAPABILITIES_LIST);
+ assertTrue(TestValues.TRUE,
+ Validator.validateDisplayCapabilityList(displayCapabilityList, (List<DisplayCapability>) systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAYS)));
+ assertTrue(TestValues.TRUE,
+ Validator.validateHMICapabilities(TestValues.GENERAL_HMICAPABILITIES, (HMICapabilities) systemCapabilityManager.getCapability(SystemCapabilityType.HMI)));
+ assertTrue(TestValues.TRUE,
+ Validator.validateDisplayCapabilities(TestValues.GENERAL_DISPLAYCAPABILITIES, (DisplayCapabilities) systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY)));
+ assertTrue(TestValues.TRUE,
+ Validator.validateAudioPassThruCapabilities(TestValues.GENERAL_AUDIOPASSTHRUCAPABILITIES_LIST, (List<AudioPassThruCapabilities>) systemCapabilityManager.getCapability(SystemCapabilityType.AUDIO_PASSTHROUGH)));
+ assertTrue(TestValues.TRUE,
+ Validator.validateButtonCapabilities(TestValues.GENERAL_BUTTONCAPABILITIES_LIST, (List<ButtonCapabilities> )systemCapabilityManager.getCapability(SystemCapabilityType.BUTTON)));
+ assertTrue(TestValues.TRUE,
+ Validator.validateHMIZoneCapabilities(TestValues.GENERAL_HMIZONECAPABILITIES_LIST, (List<HmiZoneCapabilities>) systemCapabilityManager.getCapability(SystemCapabilityType.HMI_ZONE)));
+ assertTrue(TestValues.TRUE,
+ Validator.validatePresetBankCapabilities(TestValues.GENERAL_PRESETBANKCAPABILITIES, (PresetBankCapabilities) systemCapabilityManager.getCapability(SystemCapabilityType.PRESET_BANK)));
+ assertTrue(TestValues.TRUE,
+ Validator.validateSoftButtonCapabilities(TestValues.GENERAL_SOFTBUTTONCAPABILITIES_LIST, (List<SoftButtonCapabilities>) systemCapabilityManager.getCapability(SystemCapabilityType.SOFTBUTTON)));
+ assertTrue(TestValues.TRUE,
+ Validator.validateSpeechCapabilities(TestValues.GENERAL_SPEECHCAPABILITIES_LIST, (List<SpeechCapabilities>) systemCapabilityManager.getCapability(SystemCapabilityType.SPEECH)));
+ assertTrue(TestValues.TRUE,
+ Validator.validatePreRecordedSpeechCapabilities(TestValues.GENERAL_PRERECORDEDSPEECH_LIST, (List<PrerecordedSpeech>) systemCapabilityManager.getCapability(SystemCapabilityType.PRERECORDED_SPEECH)));
+
+ }
+
+ @Test
+ public void testNullDisplayCapabilitiesEnablesAllTextAndImageFields() {
+ List<DisplayCapability> displayCapabilityList = createDisplayCapabilityList(null, TestValues.GENERAL_BUTTONCAPABILITIES_LIST, TestValues.GENERAL_SOFTBUTTONCAPABILITIES_LIST);
+ assertEquals(displayCapabilityList.get(0).getWindowCapabilities().get(0).getTextFields().size(), 29);
+ assertEquals(displayCapabilityList.get(0).getWindowCapabilities().get(0).getImageFields().size(), 15);
+ }
+
+ @Test
+ public void testGetVSCapability(){
+ VideoStreamingCapability vsCapability = new VideoStreamingCapability();
+ vsCapability.setMaxBitrate(TestValues.GENERAL_INT);
+ vsCapability.setPreferredResolution(TestValues.GENERAL_IMAGERESOLUTION);
+ vsCapability.setSupportedFormats(TestValues.GENERAL_VIDEOSTREAMINGFORMAT_LIST);
+
+ SystemCapability cap = new SystemCapability();
+ cap.setSystemCapabilityType(SystemCapabilityType.VIDEO_STREAMING);
+ cap.setCapabilityForType(SystemCapabilityType.VIDEO_STREAMING, vsCapability);
+
+ final SystemCapability referenceCapability = cap;
+
+ systemCapabilityManager = new SystemCapabilityManager(new InternalSDLInterface() {
+ @Override
+ public void sendRPC(RPCMessage message) {
+ GetSystemCapabilityResponse response = new GetSystemCapabilityResponse();
+ response.setSystemCapability(referenceCapability);
+ response.setSuccess(true);
+ if (message instanceof RPCRequest) {
+ RPCRequest request = (RPCRequest) message;
+ request.getOnRPCResponseListener().onResponse(CorrelationIdGenerator.generateId(), response);
+ }
+ }
+
+ @Override
+ public void addOnRPCListener(FunctionID messageId, OnRPCListener listener) {
+ listener.onReceived(new OnHMIStatus(HMILevel.HMI_FULL, AudioStreamingState.NOT_AUDIBLE, SystemContext.SYSCTXT_MAIN));
+ }
+ });
+
+ systemCapabilityManager.getCapability(SystemCapabilityType.VIDEO_STREAMING, new OnSystemCapabilityListener() {
+ @Override
+ public void onCapabilityRetrieved(Object capability) {
+ assertTrue(TestValues.TRUE,
+ Validator.validateVideoStreamingCapability(
+ (VideoStreamingCapability) referenceCapability.getCapabilityForType(SystemCapabilityType.VIDEO_STREAMING),
+ (VideoStreamingCapability) capability));
+ }
+
+ @Override
+ public void onError(String info) {
+ assertTrue(false);
+ }
+ });
+ }
+
+ private Answer<Void> createOnHMIStatusAnswer(final HMILevel hmiLevel){
+ Answer<Void> onHMIStatusAnswer = new Answer<Void>() {
+ @Override
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ OnRPCListener onHMIStatusListener = (OnRPCListener) args[1];
+ OnHMIStatus onHMIStatusFakeNotification = new OnHMIStatus();
+ onHMIStatusFakeNotification.setHmiLevel(hmiLevel);
+ onHMIStatusListener.onReceived(onHMIStatusFakeNotification);
+ return null;
+ }
+ };
+ return onHMIStatusAnswer;
+ }
+
+ private Answer<Void> createOnSendGetSystemCapabilityAnswer (final boolean success, final Boolean subscribe) {
+ Answer<Void> onSendGetSystemCapabilityAnswer = new Answer<Void>() {
+ @Override
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ GetSystemCapability getSystemCapability = (GetSystemCapability) args[0];
+ if (subscribe != null) {
+ assertEquals(subscribe, getSystemCapability.getSubscribe());
+ }
+ GetSystemCapabilityResponse response;
+ if (success) {
+ response = new GetSystemCapabilityResponse(Result.SUCCESS, true);
+ } else {
+ response = new GetSystemCapabilityResponse(Result.REJECTED, false);
+ }
+ response.setSystemCapability(systemCapability);
+ getSystemCapability.getOnRPCResponseListener().onResponse(CorrelationIdGenerator.generateId(), response);
+ return null;
+ }
+ };
+ return onSendGetSystemCapabilityAnswer;
+ }
+
+ @Test
+ public void testGetCapability() {
+ ISdl internalInterface;
+ SystemCapabilityManager scm;
+ OnSystemCapabilityListener onSystemCapabilityListener;
+ VideoStreamingCapability retrievedCapability;
+
+
+ // Test case 1 (capability not cached, listener not null, forceUpdate false)
+ internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ scm = new SystemCapabilityManager(internalInterface);
+ onSystemCapabilityListener = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, null)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, null);
+ retrievedCapability = (VideoStreamingCapability) scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener, false);
+ assertNull(retrievedCapability);
+ verify(internalInterface, times(1)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Test case 2 (capability cached, listener not null, forceUpdate true)
+ internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ scm = new SystemCapabilityManager(internalInterface);
+ onSystemCapabilityListener = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, null)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, videoStreamingCapability);
+ retrievedCapability = (VideoStreamingCapability) scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener, true);
+ assertTrue(TestValues.TRUE, Validator.validateVideoStreamingCapability((VideoStreamingCapability) systemCapability.getCapabilityForType(SystemCapabilityType.VIDEO_STREAMING), retrievedCapability));
+ verify(internalInterface, times(1)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Test case 3 (capability cached, listener null, forceUpdate true)
+ internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ scm = new SystemCapabilityManager(internalInterface);
+ onSystemCapabilityListener = null;
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, null)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, videoStreamingCapability);
+ retrievedCapability = (VideoStreamingCapability) scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener, true);
+ assertTrue(TestValues.TRUE, Validator.validateVideoStreamingCapability((VideoStreamingCapability) systemCapability.getCapabilityForType(SystemCapabilityType.VIDEO_STREAMING), retrievedCapability));
+ verify(internalInterface, times(1)).sendRPC(any(GetSystemCapability.class));
+
+
+ // Test case 4 (capability cached, listener null, forceUpdate false)
+ internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ scm = new SystemCapabilityManager(internalInterface);
+ onSystemCapabilityListener = null;
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, null)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, videoStreamingCapability);
+ retrievedCapability = (VideoStreamingCapability) scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener, false);
+ assertTrue(TestValues.TRUE, Validator.validateVideoStreamingCapability((VideoStreamingCapability) systemCapability.getCapabilityForType(SystemCapabilityType.VIDEO_STREAMING), retrievedCapability));
+ verify(internalInterface, times(0)).sendRPC(any(GetSystemCapability.class));
+ }
+
+ @Test
+ public void testGetCapabilityHmiNone() {
+ ISdl internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_NONE)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ SystemCapabilityManager scm = new SystemCapabilityManager(internalInterface);
+ OnSystemCapabilityListener onSystemCapabilityListener = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, null)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, null);
+ VideoStreamingCapability retrievedCapability = (VideoStreamingCapability) scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener, false);
+ assertNull(retrievedCapability);
+ verify(internalInterface, times(0)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener, times(0)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener, times(1)).onError(any(String.class));
+ }
+
+ @Test
+ public void testAddOnSystemCapabilityListenerWithSubscriptionsSupportedAndCapabilityCached() {
+ SdlMsgVersion sdlMsgVersion = new SdlMsgVersion(6, 0); // This version supports capability subscriptions
+ sdlMsgVersion.setPatchVersion(0);
+ ISdl internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ when(internalInterface.getSdlMsgVersion()).thenReturn(sdlMsgVersion);
+ SystemCapabilityManager scm = new SystemCapabilityManager(internalInterface);
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, videoStreamingCapability);
+
+
+ // Add listener1
+ // When the first listener is added, GetSystemCapability request should go out with subscribe=true
+ OnSystemCapabilityListener onSystemCapabilityListener1 = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, true)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+ verify(internalInterface, times(1)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener2
+ OnSystemCapabilityListener onSystemCapabilityListener2 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+ verify(onSystemCapabilityListener2, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener3
+ OnSystemCapabilityListener onSystemCapabilityListener3 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(onSystemCapabilityListener3, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Remove listener1
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+
+
+ // Remove listener2
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+
+
+ // Remove listener3
+ // When the last listener is removed, GetSystemCapability request should go out with subscribe=false
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, false)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(internalInterface, times(2)).sendRPC(any(GetSystemCapability.class));
+ }
+
+ @Test
+ public void testAddOnSystemCapabilityListenerWithSubscriptionsSupportedAndCapabilityNotCached() {
+ SdlMsgVersion sdlMsgVersion = new SdlMsgVersion(6, 0); // This version supports capability subscriptions
+ sdlMsgVersion.setPatchVersion(0);
+ ISdl internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ when(internalInterface.getSdlMsgVersion()).thenReturn(sdlMsgVersion);
+ SystemCapabilityManager scm = new SystemCapabilityManager(internalInterface);
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, null);
+
+
+ // Add listener1
+ // When the first listener is added, GetSystemCapability request should go out with subscribe=true
+ OnSystemCapabilityListener onSystemCapabilityListener1 = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, true)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+ verify(internalInterface, times(1)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener2
+ OnSystemCapabilityListener onSystemCapabilityListener2 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+ verify(onSystemCapabilityListener2, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener3
+ OnSystemCapabilityListener onSystemCapabilityListener3 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(onSystemCapabilityListener3, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Remove listener1
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+
+
+ // Remove listener2
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+
+
+ // Remove listener3
+ // When the last listener is removed, GetSystemCapability request should go out with subscribe=false
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, false)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(internalInterface, times(2)).sendRPC(any(GetSystemCapability.class));
+ }
+
+ @Test
+ public void testAddOnSystemCapabilityListenerWithSubscriptionsNotSupportedAndCapabilityCached() {
+ SdlMsgVersion sdlMsgVersion = new SdlMsgVersion(5, 0); // This version doesn't support capability subscriptions
+ sdlMsgVersion.setPatchVersion(0);
+ ISdl internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ when(internalInterface.getSdlMsgVersion()).thenReturn(sdlMsgVersion);
+ SystemCapabilityManager scm = new SystemCapabilityManager(internalInterface);
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, videoStreamingCapability);
+
+
+ // Add listener1
+ // When the first listener is added, GetSystemCapability request should not go out because subscription is not supported and the capability is cached
+ OnSystemCapabilityListener onSystemCapabilityListener1 = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, true)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+ verify(internalInterface, times(0)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener2
+ OnSystemCapabilityListener onSystemCapabilityListener2 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+ verify(onSystemCapabilityListener2, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener3
+ OnSystemCapabilityListener onSystemCapabilityListener3 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(onSystemCapabilityListener3, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Remove listener1
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+
+
+ // Remove listener2
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+
+
+ // Remove listener3
+ // When the last listener is removed, GetSystemCapability request should not go out because subscription is not supported
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, false)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(internalInterface, times(0)).sendRPC(any(GetSystemCapability.class));
+ }
+
+ @Test
+ public void testAddOnSystemCapabilityListenerWithSubscriptionsNotSupportedAndCapabilityNotCached() {
+ SdlMsgVersion sdlMsgVersion = new SdlMsgVersion(5, 0); // This version doesn't support capability subscriptions
+ sdlMsgVersion.setPatchVersion(0);
+ ISdl internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ when(internalInterface.getSdlMsgVersion()).thenReturn(sdlMsgVersion);
+ SystemCapabilityManager scm = new SystemCapabilityManager(internalInterface);
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, null);
+
+
+ // Add listener1
+ // When the first listener is added, GetSystemCapability request should out because because capability is not cached
+ OnSystemCapabilityListener onSystemCapabilityListener1 = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, false)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+ verify(internalInterface, times(1)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener2
+ OnSystemCapabilityListener onSystemCapabilityListener2 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+ verify(onSystemCapabilityListener2, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener3
+ OnSystemCapabilityListener onSystemCapabilityListener3 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(onSystemCapabilityListener3, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Remove listener1
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+
+
+ // Remove listener2
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+
+
+ // Remove listener3
+ // When the last listener is removed, GetSystemCapability request should not go out because subscription is not supported
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, false)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(internalInterface, times(1)).sendRPC(any(GetSystemCapability.class));
+ }
+
+ @Test
+ public void testAddOnSystemCapabilityListenerThenGetCapabilityWhenSubscriptionsAreNotSupported() {
+ SdlMsgVersion sdlMsgVersion = new SdlMsgVersion(5, 0); // This version doesn't support capability subscriptions
+ sdlMsgVersion.setPatchVersion(0);
+ ISdl internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ when(internalInterface.getSdlMsgVersion()).thenReturn(sdlMsgVersion);
+ SystemCapabilityManager scm = new SystemCapabilityManager(internalInterface);
+ scm.setCapability(SystemCapabilityType.VIDEO_STREAMING, videoStreamingCapability);
+
+
+ // Add listener1
+ // When the first listener is added, GetSystemCapability request should go out with subscribe=false
+ OnSystemCapabilityListener onSystemCapabilityListener1 = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, false)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+ verify(internalInterface, times(0)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Get Capability (should notify listener1 again)
+ scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, null, true);
+ verify(internalInterface, times(1)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(2)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener2
+ OnSystemCapabilityListener onSystemCapabilityListener2 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+ verify(onSystemCapabilityListener2, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Get Capability (should notify listener1 & listener2 again)
+ scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, null, true);
+ verify(internalInterface, times(2)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(3)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener2, times(2)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Add listener3
+ OnSystemCapabilityListener onSystemCapabilityListener3 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(onSystemCapabilityListener3, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Get Capability (should notify listener1 & listener2 & listener3 again)
+ scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, null, true);
+ verify(internalInterface, times(3)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(4)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener2, times(3)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener3, times(2)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Remove listener1
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener1);
+
+
+ // Get Capability (should notify listener2 & listener3 again)
+ scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, null, true);
+ verify(internalInterface, times(4)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(4)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener2, times(4)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener3, times(3)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Remove listener2
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener2);
+
+
+ // Get Capability (should notify listener3 again)
+ scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, null, true);
+ verify(internalInterface, times(5)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(4)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener2, times(4)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener3, times(4)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Remove listener3
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.VIDEO_STREAMING, onSystemCapabilityListener3);
+ verify(internalInterface, times(5)).sendRPC(any(GetSystemCapability.class));
+
+
+ // Get Capability (should not notify any listener again because they are all removed)
+ scm.getCapability(SystemCapabilityType.VIDEO_STREAMING, null, true);
+ verify(internalInterface, times(6)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(4)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener2, times(4)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener3, times(4)).onCapabilityRetrieved(any(Object.class));
+ }
+
+ @Test
+ public void testGetAndAddListenerForDisplaysCapability() {
+ ISdl internalInterface;
+ SystemCapabilityManager scm;
+ OnSystemCapabilityListener onSystemCapabilityListener;
+ DisplayCapabilities retrievedCapability;
+
+
+ // Test case 1 (capability cached, listener not null, forceUpdate true)
+ internalInterface = mock(ISdl.class);
+ doAnswer(createOnHMIStatusAnswer(HMILevel.HMI_FULL)).when(internalInterface).addOnRPCListener(eq(FunctionID.ON_HMI_STATUS), any(OnRPCListener.class));
+ scm = new SystemCapabilityManager(internalInterface);
+ onSystemCapabilityListener = mock(OnSystemCapabilityListener.class);
+ doAnswer(createOnSendGetSystemCapabilityAnswer(true, null)).when(internalInterface).sendRPC(any(GetSystemCapability.class));
+ scm.setCapability(SystemCapabilityType.DISPLAYS, new DisplayCapabilities());
+ retrievedCapability = (DisplayCapabilities) scm.getCapability(SystemCapabilityType.DISPLAYS, onSystemCapabilityListener, true);
+ assertNotNull(retrievedCapability);
+ verify(internalInterface, times(0)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener, times(1)).onCapabilityRetrieved(any(Object.class));
+ verify(onSystemCapabilityListener, times(0)).onError(any(String.class));
+
+
+ // Test case 2 (Add listener)
+ // When the first DISPLAYS listener is added, GetSystemCapability request should not go out
+ OnSystemCapabilityListener onSystemCapabilityListener1 = mock(OnSystemCapabilityListener.class);
+ scm.addOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onSystemCapabilityListener1);
+ verify(internalInterface, times(0)).sendRPC(any(GetSystemCapability.class));
+ verify(onSystemCapabilityListener1, times(1)).onCapabilityRetrieved(any(Object.class));
+
+
+ // Test case 3 (Remove listener)
+ // When the last DISPLAYS listener is removed, GetSystemCapability request should not go out
+ scm.removeOnSystemCapabilityListener(SystemCapabilityType.DISPLAYS, onSystemCapabilityListener1);
+ verify(internalInterface, times(0)).sendRPC(any(GetSystemCapability.class));
+ }
+
+ @Test
+ public void testListConversion(){
+ SystemCapabilityManager systemCapabilityManager = createSampleManager();
+ Object capability = systemCapabilityManager.getCapability(SystemCapabilityType.SOFTBUTTON);
+ assertNotNull(capability);
+ List<SoftButtonCapabilities> list = SystemCapabilityManager.convertToList(capability, SoftButtonCapabilities.class);
+ assertNotNull(list);
+ }
+
+ @Test
+ public void testFalsePositive(){
+ SystemCapabilityManager systemCapabilityManager = createSampleManager();
+ systemCapabilityManager.setCapability(SystemCapabilityType.AUDIO_PASSTHROUGH, null);
+ assertFalse(systemCapabilityManager.isCapabilitySupported(SystemCapabilityType.AUDIO_PASSTHROUGH));
+ }
+
+ @Test
+ public void testOnSystemCapabilityUpdateWithNoExistingCap(){
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ SystemCapabilityManager systemCapabilityManager = createSampleManager(iSDL);
+ OnRPCListener scmRpcListener = iSDL.rpcListeners.get(FunctionID.ON_SYSTEM_CAPABILITY_UPDATED.getId()).get(0);
+ assertNotNull(scmRpcListener);
+
+ assertNull(systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES));
+
+ /* PERFORM A NOTIFICATION SEND THROUGH THE SCM */
+ AppServiceCapability addServiceID = AppServiceFactory.createAppServiceCapability(AppServiceType.NAVIGATION, "test", "3453", true, null);
+ AppServicesCapabilities serviceIdASC = new AppServicesCapabilities();
+ serviceIdASC.setAppServices(Collections.singletonList(addServiceID));
+
+ SystemCapability systemCapability = new SystemCapability();
+ systemCapability.setSystemCapabilityType(SystemCapabilityType.APP_SERVICES);
+ systemCapability.setCapabilityForType(SystemCapabilityType.APP_SERVICES, serviceIdASC);
+
+ OnSystemCapabilityUpdated onSystemCapabilityUpdated = new OnSystemCapabilityUpdated();
+ onSystemCapabilityUpdated.setSystemCapability(systemCapability);
+
+ scmRpcListener.onReceived(onSystemCapabilityUpdated);
+
+ assertNotNull(systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES));
+ }
+
+ @Test
+ public void testOnSystemCapabilityUpdatedForDISPLAYS() {
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ SystemCapabilityManager systemCapabilityManager = createSampleManager(iSDL);
+ OnRPCListener scmRpcListener = iSDL.rpcListeners.get(FunctionID.ON_SYSTEM_CAPABILITY_UPDATED.getId()).get(0);
+ assertNotNull(scmRpcListener);
+
+ assertNotNull(systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAYS));
+ assertNotNull(systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY));
+
+ List<DisplayCapability> newCaps = createDisplayCapabilityList(TestValues.GENERAL_DISPLAYCAPABILITIES, TestValues.GENERAL_BUTTONCAPABILITIES_LIST, TestValues.GENERAL_SOFTBUTTONCAPABILITIES_LIST);;
+
+ SystemCapability systemCapability = new SystemCapability();
+ systemCapability.setSystemCapabilityType(SystemCapabilityType.DISPLAYS);
+ systemCapability.setCapabilityForType(SystemCapabilityType.DISPLAYS, newCaps);
+
+ OnSystemCapabilityUpdated onSystemCapabilityUpdated = new OnSystemCapabilityUpdated();
+ onSystemCapabilityUpdated.setSystemCapability(systemCapability);
+
+ scmRpcListener.onReceived(onSystemCapabilityUpdated);
+
+ List<DisplayCapability> appliedCaps = (List<DisplayCapability>)systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAYS);
+ assertNotNull(appliedCaps);
+ assertTrue(Validator.validateDisplayCapabilityList(newCaps, appliedCaps));
+
+ DisplayCapabilities appliedConvertedCaps = (DisplayCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY);
+ assertNotNull(appliedConvertedCaps);
+ DisplayCapabilities testConvertedCaps = createDisplayCapabilities(newCaps.get(0).getDisplayName(), newCaps.get(0).getWindowCapabilities().get(0));
+ assertTrue(Validator.validateDisplayCapabilities(appliedConvertedCaps, testConvertedCaps));
+ }
+
+ @Test
+ public void testOnSystemCapabilityUpdated(){
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ String baseName = "NavTest", baseID = "37F98053AE";
+ AppServiceCapability capability1 = AppServiceFactory.createAppServiceCapability(AppServiceType.NAVIGATION, baseName, null, true, null);
+
+ AppServicesCapabilities appServicesCapabilities = new AppServicesCapabilities();
+ appServicesCapabilities.setAppServices(Collections.singletonList(capability1));
+
+ SystemCapabilityManager systemCapabilityManager = createSampleManager(iSDL);
+ assertNotNull(iSDL.rpcListeners.get(FunctionID.ON_SYSTEM_CAPABILITY_UPDATED.getId()));
+ OnRPCListener scmRpcListener = iSDL.rpcListeners.get(FunctionID.ON_SYSTEM_CAPABILITY_UPDATED.getId()).get(0);
+ assertNotNull(scmRpcListener);
+
+ /* CONFIRM THE CAP DOESN'T EXIST IN SCM */
+ AppServicesCapabilities cachedCap = (AppServicesCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES);
+ assertNull(cachedCap);
+
+ /* ADD THE CAP IN SCM */
+ systemCapabilityManager.setCapability(SystemCapabilityType.APP_SERVICES, appServicesCapabilities);
+ /* CONFIRM THE CAP DOES EXIST IN SCM */
+ cachedCap = (AppServicesCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES);
+ assertNotNull(cachedCap);
+ /* CONFIRM THE CAP IN SCM EQUALS ORIGINAL*/
+ assertEquals(cachedCap, appServicesCapabilities);
+ assertNull(cachedCap.getAppServices().get(0).getUpdatedAppServiceRecord().getServiceID());
+
+ /* PERFORM A NOTIFICATION SEND THROUGH THE SCM */
+ AppServiceCapability addServiceID = AppServiceFactory.createAppServiceCapability(AppServiceType.NAVIGATION, baseName, baseID, true, null);
+ AppServicesCapabilities serviceIdASC = new AppServicesCapabilities();
+ serviceIdASC.setAppServices(Collections.singletonList(addServiceID));
+
+ SystemCapability systemCapability = new SystemCapability();
+ systemCapability.setSystemCapabilityType(SystemCapabilityType.APP_SERVICES);
+ systemCapability.setCapabilityForType(SystemCapabilityType.APP_SERVICES, serviceIdASC);
+
+ OnSystemCapabilityUpdated onSystemCapabilityUpdated = new OnSystemCapabilityUpdated();
+ onSystemCapabilityUpdated.setSystemCapability(systemCapability);
+
+ scmRpcListener.onReceived(onSystemCapabilityUpdated);
+
+ cachedCap = (AppServicesCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES);
+ assertNotNull(cachedCap);
+
+ assertTrue(cachedCap.getAppServices().get(0).getUpdatedAppServiceRecord().getServiceID().equals(baseID));
+
+ appServicesCapabilities.updateAppServices(Collections.singletonList(addServiceID));
+ assertTrue(serviceIdASC.getAppServices().get(0).getUpdatedAppServiceRecord().getServiceID().equalsIgnoreCase(appServicesCapabilities.getAppServices().get(0).getUpdatedAppServiceRecord().getServiceID()));
+
+ assertEquals(cachedCap, appServicesCapabilities);
+
+
+ /* PERFORM A NOTIFICATION SEND THROUGH AN UPDATED SERVICE NAME */
+ AppServiceCapability newServiceName = AppServiceFactory.createAppServiceCapability(AppServiceType.NAVIGATION, "TestNav", baseID, true, null);
+ AppServicesCapabilities newServiceNameASC = new AppServicesCapabilities();
+ newServiceNameASC.setAppServices(Collections.singletonList(newServiceName));
+
+ systemCapability = new SystemCapability();
+ systemCapability.setSystemCapabilityType(SystemCapabilityType.APP_SERVICES);
+ systemCapability.setCapabilityForType(SystemCapabilityType.APP_SERVICES, newServiceNameASC);
+
+ onSystemCapabilityUpdated = new OnSystemCapabilityUpdated();
+ onSystemCapabilityUpdated.setSystemCapability(systemCapability);
+
+ scmRpcListener.onReceived(onSystemCapabilityUpdated);
+
+ cachedCap = (AppServicesCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES);
+ assertNotNull(cachedCap);
+ assertEquals(cachedCap.getAppServices().size(), 1);
+
+
+ /* PERFORM A NOTIFICATION SEND THROUGH THE SCM WITH DIFFERENT SERVICE */
+ AppServiceCapability newService = AppServiceFactory.createAppServiceCapability(AppServiceType.NAVIGATION, "NewNav", "eeeeeeeee", false, null);
+ AppServicesCapabilities newServiceASC = new AppServicesCapabilities();
+ newServiceASC.setAppServices(Collections.singletonList(newService));
+
+ systemCapability = new SystemCapability();
+ systemCapability.setSystemCapabilityType(SystemCapabilityType.APP_SERVICES);
+ systemCapability.setCapabilityForType(SystemCapabilityType.APP_SERVICES, newServiceASC);
+
+ onSystemCapabilityUpdated = new OnSystemCapabilityUpdated();
+ onSystemCapabilityUpdated.setSystemCapability(systemCapability);
+
+ scmRpcListener.onReceived(onSystemCapabilityUpdated);
+
+ cachedCap = (AppServicesCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES);
+ assertNotNull(cachedCap);
+ assertEquals(cachedCap.getAppServices().size(), 2);
+
+ /* PERFORM A NOTIFICATION SEND THROUGH THE SCM WITH A REMOVED SERVICE */
+ AppServiceCapability removedService = AppServiceFactory.createAppServiceCapability(AppServiceType.NAVIGATION, "NewNav", "eeeeeeeee", false, null);
+ removedService.setUpdateReason(ServiceUpdateReason.REMOVED);
+ AppServicesCapabilities removedServiceASC = new AppServicesCapabilities();
+ removedServiceASC.setAppServices(Collections.singletonList(removedService));
+
+ systemCapability = new SystemCapability();
+ systemCapability.setSystemCapabilityType(SystemCapabilityType.APP_SERVICES);
+ systemCapability.setCapabilityForType(SystemCapabilityType.APP_SERVICES, removedServiceASC);
+
+ onSystemCapabilityUpdated = new OnSystemCapabilityUpdated();
+ onSystemCapabilityUpdated.setSystemCapability(systemCapability);
+
+ scmRpcListener.onReceived(onSystemCapabilityUpdated);
+
+ cachedCap = (AppServicesCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.APP_SERVICES);
+ assertNotNull(cachedCap);
+ assertEquals(cachedCap.getAppServices().size(), 1);
+
+ }
+
+
+ @Test
+ public void testOnSystemCapabilityUpdatedOverwrite(){
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ SystemCapabilityManager systemCapabilityManager = createSampleManager(iSDL);
+ OnRPCListener scmRpcListener = iSDL.rpcListeners.get(FunctionID.ON_SYSTEM_CAPABILITY_UPDATED.getId()).get(0);
+ assertNotNull(scmRpcListener);
+ systemCapabilityManager.setCapability(SystemCapabilityType.PHONE_CALL, TestValues.GENERAL_PHONECAPABILITY);
+
+ PhoneCapability phoneCapability = (PhoneCapability)systemCapabilityManager.getCapability(SystemCapabilityType.PHONE_CALL);
+ assertNotNull(phoneCapability);
+ assertEquals(phoneCapability, TestValues.GENERAL_PHONECAPABILITY);
+
+ phoneCapability.setDialNumberEnabled(!TestValues.GENERAL_PHONECAPABILITY.getDialNumberEnabled()); //Flip it
+ SystemCapability systemCapability = new SystemCapability();
+ systemCapability.setSystemCapabilityType(SystemCapabilityType.PHONE_CALL);
+ systemCapability.setCapabilityForType(SystemCapabilityType.PHONE_CALL, phoneCapability);
+ OnSystemCapabilityUpdated onSystemCapabilityUpdated = new OnSystemCapabilityUpdated();
+ onSystemCapabilityUpdated.setSystemCapability(systemCapability);
+
+ scmRpcListener.onReceived(onSystemCapabilityUpdated);
+
+ PhoneCapability phoneCapabilityUpdated = (PhoneCapability)systemCapabilityManager.getCapability(SystemCapabilityType.PHONE_CALL);
+ assertNotNull(phoneCapabilityUpdated);
+ assertFalse(phoneCapabilityUpdated.getDialNumberEnabled());
+ assertEquals(phoneCapability, phoneCapabilityUpdated);
+ }
+
+ @Test
+ public void testOnSetDisplayLayout() {
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ SystemCapabilityManager systemCapabilityManager = createSampleManager(iSDL);
+ OnRPCListener dlRpcListener = iSDL.rpcListeners.get(FunctionID.SET_DISPLAY_LAYOUT.getId()).get(0);
+ assertNotNull(dlRpcListener);
+
+ SetDisplayLayoutResponse newLayout = new SetDisplayLayoutResponse();
+ newLayout.setDisplayCapabilities(TestValues.GENERAL_DISPLAYCAPABILITIES);
+ newLayout.setButtonCapabilities(TestValues.GENERAL_BUTTONCAPABILITIES_LIST);
+ newLayout.setSoftButtonCapabilities(TestValues.GENERAL_SOFTBUTTONCAPABILITIES_LIST);
+ newLayout.setPresetBankCapabilities(TestValues.GENERAL_PRESETBANKCAPABILITIES);
+ newLayout.setSuccess(true);
+ newLayout.setResultCode(Result.SUCCESS);
+
+ dlRpcListener.onReceived(newLayout);
+
+
+ DisplayCapabilities appliedCaps = (DisplayCapabilities)systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY);
+ assertNotNull(appliedCaps);
+ assertTrue(Validator.validateDisplayCapabilities(newLayout.getDisplayCapabilities(), appliedCaps));
+
+ List<DisplayCapability> convertedCaps = (List<DisplayCapability>)systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAYS);
+ assertNotNull(convertedCaps);
+ List<DisplayCapability> testCaps = createDisplayCapabilityList(newLayout.getDisplayCapabilities(), newLayout.getButtonCapabilities(), newLayout.getSoftButtonCapabilities());
+ assertTrue(Validator.validateDisplayCapabilityList(convertedCaps, testCaps));
+
+ WindowCapability matchWindowCapability = testCaps.get(0).getWindowCapabilities().get(0);
+ WindowCapability testWindowCapability = systemCapabilityManager.getDefaultMainWindowCapability();
+ assertTrue(Validator.validateWindowCapability(matchWindowCapability, testWindowCapability));
+ assertNull(systemCapabilityManager.getWindowCapability(42));
+ }
+
+ @Test
+ public void testManagerBeforeDisplayUpdate() {
+ InternalSDLInterface iSDL = new InternalSDLInterface();
+ SystemCapabilityManager systemCapabilityManager = new SystemCapabilityManager(iSDL);
+ assertNull(systemCapabilityManager.getDefaultMainWindowCapability());
+ assertNull(systemCapabilityManager.getWindowCapability(PredefinedWindows.DEFAULT_WINDOW.getValue()));
+ assertNull(systemCapabilityManager.getWindowCapability(PredefinedWindows.PRIMARY_WIDGET.getValue()));
+ }
+
+ private class InternalSDLInterface implements ISdl{
+ private final Object RPC_LISTENER_LOCK = new Object();
+ SparseArray<CopyOnWriteArrayList<OnRPCListener>> rpcListeners = new SparseArray<>();
+
+ @Override
+ public void start(){}
+
+ @Override
+ public void stop() {}
+
+ @Override
+ public boolean isConnected() {return false; }
+
+ @Override
+ public void addServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener) {}
+
+ @Override
+ public void removeServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener) {}
+
+ @Override
+ public void startVideoService(VideoStreamingParameters parameters, boolean encrypted) { }
+
+ @Override
+ public void stopVideoService() {}
+
+ @Override
+ public void stopAudioService() {}
+
+ @Override
+ public void sendRPCRequest(RPCRequest message) {}
+
+ @Override
+ public void sendRPC(RPCMessage message) {}
+
+ @Override
+ public void sendRequests(List<? extends RPCRequest> rpcs, OnMultipleRequestListener listener) {
+
+ }
+
+ @Override
+ public void sendRPCs(List<? extends RPCMessage> rpcs, OnMultipleRequestListener listener) {
+
+ }
+
+ @Override
+ public void sendSequentialRPCs(List<? extends RPCMessage> rpcs, OnMultipleRequestListener listener) {
+
+ }
+
+ @Override
+ public void addOnRPCNotificationListener(FunctionID notificationId, OnRPCNotificationListener listener) {
+
+ }
+
+ @Override
+ public boolean removeOnRPCNotificationListener(FunctionID notificationId, OnRPCNotificationListener listener) {return false;}
+
+ @Override
+ public void addOnRPCRequestListener(FunctionID functionID, OnRPCRequestListener listener) {
+
+ }
+
+ @Override
+ public boolean removeOnRPCRequestListener(FunctionID functionID, OnRPCRequestListener listener) {
+ return false;
+ }
+ @Override
+ public void addOnRPCListener(FunctionID messageId, OnRPCListener listener){
+ synchronized(RPC_LISTENER_LOCK){
+ if(messageId != null && listener != null){
+ if(rpcListeners.indexOfKey(messageId.getId()) < 0 ){
+ rpcListeners.put(messageId.getId(),new CopyOnWriteArrayList<OnRPCListener>());
+ }
+ rpcListeners.get(messageId.getId()).add(listener);
+ }
+ }
+ }
+ @Override
+ public boolean removeOnRPCListener(FunctionID messageId, OnRPCListener listener){
+ synchronized(RPC_LISTENER_LOCK){
+ if(rpcListeners!= null
+ && messageId != null
+ && listener != null
+ && rpcListeners.indexOfKey(messageId.getId()) >= 0){
+ return rpcListeners.get(messageId.getId()).remove(listener);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public Object getCapability(SystemCapabilityType systemCapabilityType){return null;}
+
+ @Override
+ public void getCapability(SystemCapabilityType systemCapabilityType, OnSystemCapabilityListener scListener) {
+ }
+
+ @Override
+ public RegisterAppInterfaceResponse getRegisterAppInterfaceResponse() {
+ return null;
+ }
+
+ @Override
+ public Object getCapability(SystemCapabilityType systemCapabilityType, OnSystemCapabilityListener scListener, boolean forceUpdate) {
+ return null;
+ }
+
+ @Override
+ public SdlMsgVersion getSdlMsgVersion() {
+ return null;
+ }
+
+ @Override
+ public Version getProtocolVersion() {
+ return new Version(1,0,0);
+ }
+
+
+ @Override
+ public boolean isCapabilitySupported(SystemCapabilityType systemCapabilityType){
+ return false;
+ }
+
+ @Override
+ public void addOnSystemCapabilityListener(SystemCapabilityType systemCapabilityType, OnSystemCapabilityListener listener) { }
+
+ @Override
+ public boolean removeOnSystemCapabilityListener(SystemCapabilityType systemCapabilityType, OnSystemCapabilityListener listener) { return false; }
+
+ @Override
+ public boolean isTransportForServiceAvailable(SessionType serviceType) {
+ return false;
+ }
+
+ @Override
+ public void startAudioService(boolean isEncrypted, AudioStreamingCodec codec,
+ AudioStreamingParams params) {}
+
+ @Override
+ public IVideoStreamListener startVideoStream(boolean isEncrypted, VideoStreamingParameters parameters){
+ return null;
+ }
+
+ @Override
+ public IAudioStreamListener startAudioStream(boolean isEncrypted, AudioStreamingCodec codec,
+ AudioStreamingParams params) {
+ return null;
+ }
+
+ @Override
+ public void startAudioService(boolean encrypted){}
+
+ @Override
+ public void startRPCEncryption() {}
+
+ @Override
+ public Taskmaster getTaskmaster() {
+ return null;
+ }
+ }
+}
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenConfigTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenConfigTests.java
index 1c6eb9d34..84a4e52ef 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenConfigTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenConfigTests.java
@@ -1,6 +1,6 @@
package com.smartdevicelink.managers.lockscreen;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.test.TestValues;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManagerTests.java
index 290515d54..38701bd64 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenDeviceIconManagerTests.java
@@ -3,7 +3,7 @@ package com.smartdevicelink.managers.lockscreen;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenManagerTests.java
index e6e86261b..2509a2298 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/lockscreen/LockScreenManagerTests.java
@@ -1,7 +1,7 @@
package com.smartdevicelink.managers.lockscreen;
import android.content.Context;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.interfaces.ISdl;
@@ -18,7 +18,7 @@ import org.junit.runner.RunWith;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
-import static android.support.test.InstrumentationRegistry.getContext;
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertNull;
@@ -53,7 +53,7 @@ public class LockScreenManagerTests {
};
doAnswer(onDDStatusAnswer).when(internalInterface).addOnRPCNotificationListener(eq(FunctionID.ON_DRIVER_DISTRACTION), any(OnRPCNotificationListener.class));
- Context context = getContext();
+ Context context = getInstrumentation().getContext();
// create config
LockScreenConfig lockScreenConfig = new LockScreenConfig();
lockScreenConfig.setCustomView(TestValues.GENERAL_INT);
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/permission/PermissionManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/permission/PermissionManagerTests.java
index 81354dd2c..d53287b61 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/permission/PermissionManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/permission/PermissionManagerTests.java
@@ -1,7 +1,7 @@
package com.smartdevicelink.managers.permission;
-import android.support.annotation.NonNull;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.annotation.NonNull;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.interfaces.ISdl;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java
index a91a68b3e..f1e68e9b3 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java
@@ -1,7 +1,7 @@
package com.smartdevicelink.managers.screen;
import com.livio.taskmaster.Taskmaster;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.managers.file.FileManager;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java
index efea2bf1d..3a680221e 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SoftButtonManagerTests.java
@@ -1,7 +1,7 @@
package com.smartdevicelink.managers.screen;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.CompletionListener;
import com.livio.taskmaster.Taskmaster;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SubscribeButtonManagerTest.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SubscribeButtonManagerTest.java
index b1da6b052..8e16c3ed0 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SubscribeButtonManagerTest.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SubscribeButtonManagerTest.java
@@ -1,6 +1,6 @@
package com.smartdevicelink.managers.screen;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.proxy.RPCMessage;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java
index 6d9315348..439b7ebe9 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/TextAndGraphicManagerTests.java
@@ -2,7 +2,7 @@ package com.smartdevicelink.managers.screen;
import android.content.Context;
import android.net.Uri;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.managers.ManagerUtility;
@@ -28,7 +28,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import static android.support.test.InstrumentationRegistry.getContext;
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import static junit.framework.TestCase.assertEquals;
import static junit.framework.TestCase.assertFalse;
import static junit.framework.TestCase.assertNotNull;
@@ -48,7 +48,7 @@ public class TextAndGraphicManagerTests {
@Before
public void setUp() throws Exception{
- Context mTestContext = getContext();
+ Context mTestContext = getInstrumentation().getContext();
// mock things
ISdl internalInterface = mock(ISdl.class);
FileManager fileManager = mock(FileManager.class);
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java
index cba4ee77d..abf868876 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/CheckChoiceVROptionalOperationTests.java
@@ -35,7 +35,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.rpc.Choice;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceCellTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceCellTests.java
index 8f1c4f5c1..420ab1d72 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceCellTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceCellTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.file.filetypes.SdlArtwork;
import com.smartdevicelink.proxy.rpc.enums.FileType;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetLayoutTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetLayoutTests.java
index 854fc61f7..0ecd3701f 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetLayoutTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetLayoutTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java
index 78dd07cce..4e9ba2e6b 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManagerTests.java
@@ -35,7 +35,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.livio.taskmaster.Taskmaster;
import com.smartdevicelink.managers.BaseSubManager;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetTests.java
index c7cda00fb..5bd8216d2 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.test.TestValues;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java
index e2cdcf7ae..e8a9eeb23 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/DeleteChoicesOperationTests.java
@@ -35,7 +35,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.rpc.DeleteInteractionChoiceSet;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java
index b8be6edc5..14144758f 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PreloadChoicesOperationTests.java
@@ -35,7 +35,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.managers.file.filetypes.SdlArtwork;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentChoiceSetOperationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentChoiceSetOperationTests.java
index 1f4984706..8e91c3a04 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentChoiceSetOperationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentChoiceSetOperationTests.java
@@ -35,7 +35,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.livio.taskmaster.Queue;
import com.livio.taskmaster.Task;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentKeyboardOperationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentKeyboardOperationTests.java
index 16992a522..37264b865 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentKeyboardOperationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/choiceset/PresentKeyboardOperationTests.java
@@ -35,7 +35,7 @@
package com.smartdevicelink.managers.screen.choiceset;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.livio.taskmaster.Queue;
import com.livio.taskmaster.Task;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java
index 0105553fa..518fa451c 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuCellTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.menu;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.file.SdlArtworkTests;
import com.smartdevicelink.proxy.rpc.enums.MenuLayout;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuConfigurationTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuConfigurationTests.java
index e623d2ee2..2986d496a 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuConfigurationTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuConfigurationTests.java
@@ -35,7 +35,7 @@
package com.smartdevicelink.managers.screen.menu;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.test.TestValues;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java
index 4a68a6b1c..b740d303a 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.menu;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.R;
import com.smartdevicelink.managers.BaseSubManager;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/RunScoreTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/RunScoreTests.java
index 724a53699..e3468b803 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/RunScoreTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/RunScoreTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.menu;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.test.TestValues;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/SubCellCommandListTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/SubCellCommandListTests.java
index a6eccbad0..29dd8e7c6 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/SubCellCommandListTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/SubCellCommandListTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.menu;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.test.TestValues;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java
index 72f52b3d5..a73c28ef2 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.menu;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.managers.CompletionListener;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandTests.java
index 6be14c367..00e198a91 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandTests.java
@@ -32,7 +32,7 @@
package com.smartdevicelink.managers.screen.menu;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.smartdevicelink.test.TestValues;
diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java
index e6cb892bd..1701dcc99 100644
--- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java
+++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/video/VideoStreamManagerTests.java
@@ -2,8 +2,8 @@ package com.smartdevicelink.managers.video;
import android.content.Context;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.test.runner.AndroidJUnit4;
+import androidx.annotation.NonNull;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.MotionEvent;
@@ -58,7 +58,7 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import static android.support.test.InstrumentationRegistry.getContext;
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
/**
* This is a unit test class for the SmartDeviceLink video streaming manager class :
@@ -74,7 +74,7 @@ public class VideoStreamManagerTests {
@Before
public void setUp() throws Exception{
- mTestContext = getContext();
+ mTestContext = getInstrumentation().getContext();
}
// TEST CLASSES