summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal Alsharifi <bilal.alsharifi@gmail.com>2018-10-11 15:38:59 -0400
committerBilal Alsharifi <bilal.alsharifi@gmail.com>2018-10-11 15:38:59 -0400
commit32a56a6780064a8af153ae1ad8a4d7106e183253 (patch)
tree398e401768c849f1d23200ddf91063e2ad5eb1ba
parentfac18cf58f7a58295395166cef59c914dc3a3d44 (diff)
downloadsdl_android-set_display_layout.tar.gz
Add unit tests for ScreenManager statesset_display_layout
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java77
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/managers/BaseSubManager.java2
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java10
3 files changed, 74 insertions, 15 deletions
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java
index 211b0fa48..4436d2ab0 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/ScreenManagerTests.java
@@ -28,38 +28,44 @@ import static org.mockito.Mockito.mock;
*/
public class ScreenManagerTests extends AndroidTestCase2 {
private ScreenManager screenManager;
+ private FileManager fileManager;
private SdlArtwork testArtwork;
@Override
public void setUp() throws Exception{
super.setUp();
- FileManager fileManager = mock(FileManager.class);
- ISdl internalInterface = mock(ISdl.class);
+ fileManager = mock(FileManager.class);
// When internalInterface.sendRPCRequest() is called, create a fake success response
+ ISdl internalInterface = mock(ISdl.class);
+ sendFakeSetDisplayLayoutResponse(internalInterface, true);
+
+ screenManager = new ScreenManager(internalInterface, fileManager);
+ screenManager.start(null);
+
+ testArtwork = new SdlArtwork("testFile", FileType.GRAPHIC_PNG, 1, false);
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ // When internalInterface.sendRPCRequest() is called, create a fake response
+ private void sendFakeSetDisplayLayoutResponse(ISdl internalInterface, final boolean success){
Answer<Void> answer = new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
RPCRequest request = (RPCRequest) args[0];
RPCResponse response = new RPCResponse(FunctionID.SET_DISPLAY_LAYOUT.toString());
- response.setSuccess(true);
+ response.setSuccess(success);
request.getOnRPCResponseListener().onResponse(0, response);
return null;
}
};
doAnswer(answer).when(internalInterface).sendRPCRequest(any(RPCRequest.class));
-
- screenManager = new ScreenManager(internalInterface, fileManager);
- screenManager.start(null);
-
- testArtwork = new SdlArtwork("testFile", FileType.GRAPHIC_PNG, 1, false);
- }
-
- @Override
- public void tearDown() throws Exception {
- super.tearDown();
}
public void testInstantiation(){
@@ -80,6 +86,51 @@ public class ScreenManagerTests extends AndroidTestCase2 {
assertNull(screenManager.getSoftButtonObjectById(1));
assertEquals(screenManager.getState(), BaseSubManager.READY);
}
+
+ public void testManagerStates() {
+ ISdl tempInternalInterface = mock(ISdl.class);
+ ScreenManager tempScreenManager = new ScreenManager(tempInternalInterface, fileManager);
+
+ // Case 1
+ sendFakeSetDisplayLayoutResponse(tempInternalInterface, true);
+ tempScreenManager.start(null);
+ tempScreenManager.getSoftButtonManager().transitionToState(BaseSubManager.READY);
+ tempScreenManager.getTextAndGraphicManager().transitionToState(BaseSubManager.READY);
+ tempScreenManager.checkState();
+ assertEquals(BaseSubManager.READY, tempScreenManager.getState());
+
+ // Case 2
+ sendFakeSetDisplayLayoutResponse(tempInternalInterface, true);
+ tempScreenManager.start(null);
+ tempScreenManager.getSoftButtonManager().transitionToState(BaseSubManager.ERROR);
+ tempScreenManager.getTextAndGraphicManager().transitionToState(BaseSubManager.ERROR);
+ tempScreenManager.checkState();
+ assertEquals(BaseSubManager.ERROR, tempScreenManager.getState());
+
+ // Case 3
+ sendFakeSetDisplayLayoutResponse(tempInternalInterface, false);
+ tempScreenManager.start(null);
+ tempScreenManager.getSoftButtonManager().transitionToState(BaseSubManager.SETTING_UP);
+ tempScreenManager.getTextAndGraphicManager().transitionToState(BaseSubManager.READY);
+ tempScreenManager.checkState();
+ assertEquals(BaseSubManager.SETTING_UP, tempScreenManager.getState());
+
+ // Case 4
+ sendFakeSetDisplayLayoutResponse(tempInternalInterface, true);
+ tempScreenManager.start(null);
+ tempScreenManager.getSoftButtonManager().transitionToState(BaseSubManager.READY);
+ tempScreenManager.getTextAndGraphicManager().transitionToState(BaseSubManager.ERROR);
+ tempScreenManager.checkState();
+ assertEquals(BaseSubManager.LIMITED, tempScreenManager.getState());
+
+ // Case 5
+ sendFakeSetDisplayLayoutResponse(tempInternalInterface, false);
+ tempScreenManager.start(null);
+ tempScreenManager.getSoftButtonManager().transitionToState(BaseSubManager.READY);
+ tempScreenManager.getTextAndGraphicManager().transitionToState(BaseSubManager.READY);
+ tempScreenManager.checkState();
+ assertEquals(BaseSubManager.LIMITED, tempScreenManager.getState());
+ }
public void testSetTextField() {
screenManager.setTextField1("It is");
diff --git a/sdl_android/src/main/java/com/smartdevicelink/managers/BaseSubManager.java b/sdl_android/src/main/java/com/smartdevicelink/managers/BaseSubManager.java
index 6475b481e..dc0abe067 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/managers/BaseSubManager.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/managers/BaseSubManager.java
@@ -50,7 +50,7 @@ public abstract class BaseSubManager {
transitionToState(SHUTDOWN);
}
- protected void transitionToState(int state) {
+ public void transitionToState(int state) {
synchronized (STATE_LOCK) {
this.state = state;
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java b/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java
index ee855e745..fe483b5ac 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java
@@ -41,7 +41,7 @@ public class ScreenManager extends BaseSubManager {
}
};
- private void checkState() {
+ void checkState() {
if (softButtonManager != null && textAndGraphicManager != null) {
if (softButtonManager.getState() == BaseSubManager.READY && textAndGraphicManager.getState() == BaseSubManager.READY && setDisplayLayoutSuccess != null && setDisplayLayoutSuccess) {
DebugTool.logInfo("Starting screen manager, all sub managers are in ready state");
@@ -122,6 +122,14 @@ public class ScreenManager extends BaseSubManager {
super.dispose();
}
+ SoftButtonManager getSoftButtonManager(){
+ return this.softButtonManager;
+ }
+
+ TextAndGraphicManager getTextAndGraphicManager(){
+ return this.textAndGraphicManager;
+ }
+
/**
* Set the textField1 on the head unit screen
* Sending an empty String "" will clear the field