diff options
author | BrettyWhite <geekman3454@protonmail.com> | 2019-05-07 13:49:03 -0400 |
---|---|---|
committer | BrettyWhite <geekman3454@protonmail.com> | 2019-05-07 13:49:03 -0400 |
commit | 6a567e317365549bc5d79af0ffdb09b0a511cfc3 (patch) | |
tree | 75e5acff5c225722b14c9b44ce85b3ab46d0a7d5 | |
parent | 5c88470dfc49c8b62d6a25a031290f4c213aa6d2 (diff) | |
download | sdl_android-6a567e317365549bc5d79af0ffdb09b0a511cfc3.tar.gz |
start of menu manger tests, some cleanup
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) { |