diff options
author | Julian Kast <julian@livio.com> | 2020-06-24 15:21:03 -0400 |
---|---|---|
committer | Julian Kast <julian@livio.com> | 2020-06-24 15:21:03 -0400 |
commit | ccb27966b55111996843ffb5ed6c4c8be6cd4942 (patch) | |
tree | eb30fdb05e9d07adbe5a27a1040bd307de00c567 | |
parent | b03b47014626bc85982ca610d0eb369ebe059b90 (diff) | |
download | sdl_android-ccb27966b55111996843ffb5ed6c4c8be6cd4942.tar.gz |
Added Unit test and fixed formatting
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); |