summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Kast <julian@livio.com>2020-06-24 15:21:03 -0400
committerJulian Kast <julian@livio.com>2020-06-24 15:21:03 -0400
commitccb27966b55111996843ffb5ed6c4c8be6cd4942 (patch)
treeeb30fdb05e9d07adbe5a27a1040bd307de00c567
parentb03b47014626bc85982ca610d0eb369ebe059b90 (diff)
downloadsdl_android-ccb27966b55111996843ffb5ed6c4c8be6cd4942.tar.gz
Added Unit test and fixed formatting
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/SubscribeButtonManagerTest.java61
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/screen/BaseSubscribeButtonManager.java20
2 files changed, 69 insertions, 12 deletions
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 12d88a5ef..e3841ce07 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
@@ -3,15 +3,62 @@ package com.smartdevicelink.managers.screen;
import com.smartdevicelink.AndroidTestCase2;
import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.managers.OnButtonListener;
+import com.smartdevicelink.proxy.RPCMessage;
+import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.rpc.OnButtonEvent;
import com.smartdevicelink.proxy.rpc.OnButtonPress;
+import com.smartdevicelink.proxy.rpc.SubscribeButton;
+import com.smartdevicelink.proxy.rpc.SubscribeButtonResponse;
+import com.smartdevicelink.proxy.rpc.UnsubscribeButton;
+import com.smartdevicelink.proxy.rpc.UnsubscribeButtonResponse;
import com.smartdevicelink.proxy.rpc.enums.ButtonName;
+import com.smartdevicelink.proxy.rpc.enums.Result;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
public class SubscribeButtonManagerTest extends AndroidTestCase2 {
private SubscribeButtonManager subscribeButtonManager;
+ private ISdl internalInterface;
+
+ private Answer<Void> onSubscribe_UnsubscribeSuccess = new Answer<Void>() {
+ @Override
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ RPCRequest message = (RPCRequest) args[0];
+ if(message instanceof SubscribeButton){
+ SubscribeButtonResponse subscribeButtonResponse = new SubscribeButtonResponse();
+ subscribeButtonResponse.setSuccess(true);
+ message.getOnRPCResponseListener().onResponse(message.getCorrelationID(),subscribeButtonResponse);
+ }
+ if(message instanceof UnsubscribeButton) {
+ UnsubscribeButtonResponse unsubscribeButtonResponse = new UnsubscribeButtonResponse();
+ unsubscribeButtonResponse.setSuccess(true);
+ message.getOnRPCResponseListener().onResponse(message.getCorrelationID(), unsubscribeButtonResponse);
+ }
+ return null;
+ }
+ };
+
+
+ private Answer<Void> onSubscribeFail = new Answer<Void>() {
+ @Override
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ RPCRequest message = (RPCRequest) args[0];
+ if(message instanceof SubscribeButton){
+ SubscribeButtonResponse subscribeButtonResponse = new SubscribeButtonResponse();
+ subscribeButtonResponse.setSuccess(false);
+ message.getOnRPCResponseListener().onError(message.getCorrelationID(), Result.GENERIC_ERROR, "Fail");
+ }
+ return null;
+ }
+ };
private OnButtonListener listener = new OnButtonListener() {
@Override
public void onPress(ButtonName buttonName, OnButtonPress buttonPress) {
@@ -49,7 +96,7 @@ public class SubscribeButtonManagerTest extends AndroidTestCase2 {
@Override
public void setUp() throws Exception {
super.setUp();
- ISdl internalInterface = mock(ISdl.class);
+ internalInterface = mock(ISdl.class);
subscribeButtonManager = new SubscribeButtonManager(internalInterface);
}
@@ -65,6 +112,8 @@ public class SubscribeButtonManagerTest extends AndroidTestCase2 {
}
public void testAddButtonListener() {
+ doAnswer(onSubscribe_UnsubscribeSuccess).when(internalInterface).sendRPC(any(RPCMessage.class));
+
subscribeButtonManager.addButtonListener(null, null);
assertTrue(subscribeButtonManager.onButtonListeners.size() == 0);
@@ -76,7 +125,15 @@ public class SubscribeButtonManagerTest extends AndroidTestCase2 {
}
+ public void testAddButtonListenerError(){
+ doAnswer(onSubscribeFail).when(internalInterface).sendRPC(any(RPCMessage.class));
+ subscribeButtonManager.addButtonListener(ButtonName.VOLUME_UP, listener);
+ assertTrue(!subscribeButtonManager.onButtonListeners.containsKey(ButtonName.VOLUME_UP));
+ }
+
public void testRemoveButtonListener() {
+ doAnswer(onSubscribe_UnsubscribeSuccess).when(internalInterface).sendRPC(any(RPCMessage.class));
+
subscribeButtonManager.removeButtonListener(ButtonName.VOLUME_DOWN, listener);
assertFalse(subscribeButtonManager.onButtonListeners.containsKey(ButtonName.VOLUME_DOWN));
@@ -97,6 +154,6 @@ public class SubscribeButtonManagerTest extends AndroidTestCase2 {
assertTrue(subscribeButtonManager.onButtonListeners.get(ButtonName.VOLUME_UP).size() == 1);
subscribeButtonManager.removeButtonListener(ButtonName.VOLUME_UP, listener2);
- assertTrue(subscribeButtonManager.onButtonListeners.get(ButtonName.VOLUME_UP).size() == 0);
+ assertNull(subscribeButtonManager.onButtonListeners.get(ButtonName.VOLUME_UP));
}
}
diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/BaseSubscribeButtonManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/BaseSubscribeButtonManager.java
index 28b88eef9..80d693303 100644
--- a/base/src/main/java/com/smartdevicelink/managers/screen/BaseSubscribeButtonManager.java
+++ b/base/src/main/java/com/smartdevicelink/managers/screen/BaseSubscribeButtonManager.java
@@ -24,9 +24,8 @@ import java.util.concurrent.CopyOnWriteArrayList;
/**
* <strong>SubscribeButtonManager</strong> <br>
- *
+ * <p>
* Note: This class must be accessed through the SdlManager. Do not instantiate it by itself. <br>
- *
*/
abstract class BaseSubscribeButtonManager extends BaseSubManager {
@@ -87,23 +86,24 @@ abstract class BaseSubscribeButtonManager extends BaseSubManager {
/**
* Unsubscribe form button and/or listener sent by developer
+ *
* @param buttonName Is the button that the developer wants to unsubscribe from
- * @param listener - the listener that was sent by developer
+ * @param listener - the listener that was sent by developer
*/
void removeButtonListener(final ButtonName buttonName, final OnButtonListener listener) {
-
- if(listener == null){
+
+ if (listener == null) {
Log.e(TAG, "OnButtonListener cannot be null: ");
return;
}
-
- if(buttonName == null){
+
+ if (buttonName == null) {
listener.onError("ButtonName cannot be null");
Log.e(TAG, "ButtonName cannot be null");
}
if (onButtonListeners.get(buttonName) == null || !onButtonListeners.get(buttonName).contains(listener)) {
- Log.e(TAG, "Attempting to unsubscribe to the "+ buttonName + " subscribe button which is not currently subscribed: ");
+ Log.e(TAG, "Attempting to unsubscribe to the " + buttonName + " subscribe button which is not currently subscribed: ");
return;
}
@@ -133,8 +133,9 @@ abstract class BaseSubscribeButtonManager extends BaseSubManager {
/**
* Send the SubscribeButton RPC
+ *
* @param buttonName - ButtonName - name of button
- * @param listener - OnButtonListener - listener to get notified
+ * @param listener - OnButtonListener - listener to get notified
*/
private void subscribeButtonRequest(final ButtonName buttonName, final OnButtonListener listener) {
SubscribeButton subscribeButtonRequest = new SubscribeButton();
@@ -183,7 +184,6 @@ abstract class BaseSubscribeButtonManager extends BaseSubManager {
public void onNotified(RPCNotification notification) {
OnButtonEvent onButtonEvent = (OnButtonEvent) notification;
CopyOnWriteArrayList<OnButtonListener> listeners = onButtonListeners.get(onButtonEvent.getButtonName());
-
if (listeners != null && listeners.size() > 0) {
for (OnButtonListener listener : listeners) {
listener.onEvent(onButtonEvent.getButtonName(), onButtonEvent);