summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrettyWhite <geekman3454@protonmail.com>2019-05-07 13:49:03 -0400
committerBrettyWhite <geekman3454@protonmail.com>2019-05-07 13:49:03 -0400
commit6a567e317365549bc5d79af0ffdb09b0a511cfc3 (patch)
tree75e5acff5c225722b14c9b44ce85b3ab46d0a7d5
parent5c88470dfc49c8b62d6a25a031290f4c213aa6d2 (diff)
downloadsdl_android-6a567e317365549bc5d79af0ffdb09b0a511cfc3.tar.gz
start of menu manger tests, some cleanup
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java82
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java19
2 files changed, 84 insertions, 17 deletions
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 745c1d5f2..e71b5c96e 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
@@ -33,15 +33,26 @@
package com.smartdevicelink.managers.screen.menu;
import com.smartdevicelink.AndroidTestCase2;
+import com.smartdevicelink.R;
import com.smartdevicelink.managers.BaseSubManager;
+import com.smartdevicelink.managers.CompletionListener;
import com.smartdevicelink.managers.file.FileManager;
+import com.smartdevicelink.managers.file.filetypes.SdlArtwork;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.interfaces.ISdl;
+import com.smartdevicelink.proxy.rpc.OnHMIStatus;
+import com.smartdevicelink.proxy.rpc.enums.FileType;
+import com.smartdevicelink.proxy.rpc.enums.HMILevel;
+import com.smartdevicelink.proxy.rpc.enums.SystemContext;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doAnswer;
@@ -49,8 +60,9 @@ import static org.mockito.Mockito.mock;
public class MenuManagerTests extends AndroidTestCase2 {
- private OnRPCNotificationListener onHMIStatusListener, commandListener;
+ private OnRPCNotificationListener onHMIStatusListener;
private MenuManager menuManager;
+ private MenuCell mainCell1, mainCell3, mainCell2, mainCell4;
// SETUP / HELPERS
@@ -58,11 +70,8 @@ public class MenuManagerTests extends AndroidTestCase2 {
public void setUp() throws Exception{
super.setUp();
- // menu cell mock listener
- MenuSelectionListener menuSelectionListener = mock(MenuSelectionListener.class);
-
// Create our menu cells
-
+ createTestCells();
ISdl internalInterface = mock(ISdl.class);
FileManager fileManager = mock(FileManager.class);
@@ -84,7 +93,7 @@ public class MenuManagerTests extends AndroidTestCase2 {
@Override
public Void answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
- commandListener = (OnRPCNotificationListener) args[1];
+ OnRPCNotificationListener commandListener = (OnRPCNotificationListener) args[1];
return null;
}
};
@@ -92,7 +101,18 @@ public class MenuManagerTests extends AndroidTestCase2 {
menuManager = new MenuManager(internalInterface, fileManager);
+ // Check some stuff during setup
+ assertEquals(menuManager.currentHMILevel, HMILevel.HMI_NONE);
assertEquals(menuManager.getState(), BaseSubManager.SETTING_UP);
+ assertEquals(menuManager.currentSystemContext, SystemContext.SYSCTXT_MAIN);
+ assertEquals(menuManager.lastMenuId, 1);
+ assertNotNull(menuManager.menuCells);
+ assertNotNull(menuManager.waitingUpdateMenuCells);
+ assertNotNull(menuManager.oldMenuCells);
+ assertNotNull(menuManager.inProgressUpdate);
+ assertNotNull(menuManager.hmiListener);
+ assertNotNull(menuManager.commandListener);
+ assertNotNull(menuManager.displayListener);
}
@@ -101,6 +121,15 @@ public class MenuManagerTests extends AndroidTestCase2 {
menuManager.dispose();
+ assertEquals(menuManager.currentSystemContext, SystemContext.SYSCTXT_MAIN);
+ assertEquals(menuManager.lastMenuId, 1);
+ assertNull(menuManager.menuCells);
+ assertNull(menuManager.oldMenuCells);
+ assertNull(menuManager.currentHMILevel);
+ assertNull(menuManager.displayCapabilities);
+ assertNull(menuManager.inProgressUpdate);
+ assertNull(menuManager.waitingUpdateMenuCells);
+
// after everything, make sure we are in the correct state
assertEquals(menuManager.getState(), BaseSubManager.SHUTDOWN);
@@ -109,6 +138,47 @@ public class MenuManagerTests extends AndroidTestCase2 {
public void testStartMenuManager(){
+ menuManager.start(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ // Make sure the state has changed, as the Screen Manager is dependant on it
+ assertEquals(menuManager.getState(), BaseSubManager.READY);
+ }
+ });
+ }
+
+ private void createTestCells(){
+
+ // menu cell mock listener
+ MenuSelectionListener menuSelectionListener1 = mock(MenuSelectionListener.class);
+ MenuSelectionListener menuSelectionListener2 = mock(MenuSelectionListener.class);
+ MenuSelectionListener menuSelectionListener3 = mock(MenuSelectionListener.class);
+ MenuSelectionListener menuSelectionListenerSub1 = mock(MenuSelectionListener.class);
+ MenuSelectionListener menuSelectionListenerSub2 = mock(MenuSelectionListener.class);
+
+ // some arts
+ SdlArtwork livio = new SdlArtwork("livio", FileType.GRAPHIC_PNG, R.drawable.sdl_lockscreen_icon, false);
+
+ // some voice commands
+ List<String> voice2 = Collections.singletonList("Cell two");
+
+ mainCell1 = new MenuCell("Test Cell 1", livio, null, menuSelectionListener1);
+ mainCell2 = new MenuCell("Test Cell 2", livio, voice2, menuSelectionListener2);
+ mainCell3 = new MenuCell("Test Cell 3", menuSelectionListener3);
+
+ // SUB MENU
+ MenuCell subCell1 = new MenuCell("SubCell 1", menuSelectionListenerSub1);
+ MenuCell subCell2 = new MenuCell("SubCell 2", menuSelectionListenerSub2);
+
+ mainCell4 = new MenuCell("Test Cell 4", livio, Arrays.asList(subCell1,subCell2)); // sub menu parent cell
+ }
+
+ // Emulate what happens when Core sends OnHMIStatus notification
+ private void sendFakeCoreOnHMIFullNotifications() {
+ OnHMIStatus onHMIStatusFakeNotification = new OnHMIStatus();
+ onHMIStatusFakeNotification.setHmiLevel(HMILevel.HMI_FULL);
+ onHMIStatusListener.onNotified(onHMIStatusFakeNotification);
}
}
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
index f60e6c1a5..0d0aaef7a 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java
@@ -75,26 +75,23 @@ abstract class BaseMenuManager extends BaseSubManager {
private final WeakReference<FileManager> fileManager;
- private List<MenuCell> menuCells;
- private List<MenuCell> waitingUpdateMenuCells;
- private List<MenuCell> oldMenuCells;
- private List<RPCRequest> inProgressUpdate;
+ List<MenuCell> menuCells, waitingUpdateMenuCells, oldMenuCells;
+ List<RPCRequest> inProgressUpdate;
private boolean waitingOnHMIUpdate;
private boolean hasQueuedUpdate;
- private HMILevel currentHMILevel;
+ HMILevel currentHMILevel;
- private OnRPCNotificationListener hmiListener;
- private OnRPCNotificationListener commandListener;
- private OnSystemCapabilityListener displayListener;
- private DisplayCapabilities displayCapabilities;
+ OnRPCNotificationListener hmiListener, commandListener;
+ OnSystemCapabilityListener displayListener;
+ DisplayCapabilities displayCapabilities;
private static final int MAX_ID = 2000000000;
private static final int parentIdNotFound = MAX_ID;
private static final int menuCellIdMin = 1;
- private int lastMenuId;
+ int lastMenuId;
- private SystemContext currentSystemContext;
+ SystemContext currentSystemContext;
BaseMenuManager(@NonNull ISdl internalInterface, @NonNull FileManager fileManager) {