diff options
author | Tuan Nguyen <tnguy238@ford.com> | 2017-07-28 11:36:50 -0700 |
---|---|---|
committer | Tuan Nguyen <tnguy238@ford.com> | 2017-07-28 11:36:50 -0700 |
commit | a2e72e9e995f54ae19d5925a5b75f287170c2354 (patch) | |
tree | 3436ab7f63e08a87fd7061a0e37ad10c29d350b3 | |
parent | 86ee5fdb517905114598c02807103514bf3b2e54 (diff) | |
download | sdl_android-bugfix/issue_463.tar.gz |
Revert "#463 Remove unrelated test case"bugfix/issue_463
This reverts commit 86ee5fdb517905114598c02807103514bf3b2e54.
-rw-r--r-- | sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java index 32abecbb5..7b038882e 100644 --- a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java @@ -30,7 +30,63 @@ public class SdlRouterServiceTests extends AndroidTestCase { super.tearDown(); //Nothing here for now } - + + /** + * Test null bundle handling in AltTransportHandler when handling messages. Only test the case of + * msg.what == TransportConstants.ROUTER_RECEIVED_PACKET + */ + public void testAlTransportHandlerHandleNullBundle() { + if (Looper.myLooper() == null) { + Looper.prepare(); + } + class AltTransportHandler extends Handler { + ClassLoader loader; + final WeakReference<SdlRouterService> provider; + + public AltTransportHandler(SdlRouterService provider) { + this.provider = new WeakReference<SdlRouterService>(provider); + loader = getClass().getClassLoader(); + } + + @Override + public void handleMessage(Message msg) { + SdlRouterService service = this.provider.get(); + Bundle receivedBundle = msg.getData(); + switch (msg.what) { + case TransportConstants.ROUTER_RECEIVED_PACKET: + if (receivedBundle != null) { + receivedBundle.setClassLoader(loader);//We do this because loading a custom parceable object isn't possible without it + if (receivedBundle.containsKey(TransportConstants.FORMED_PACKET_EXTRA_NAME)) { + SdlPacket packet = receivedBundle.getParcelable(TransportConstants.FORMED_PACKET_EXTRA_NAME); + if (packet != null && service != null) { + service.onPacketRead(packet); + } else { + Log.w(TAG, "Received null packet from alt transport service"); + } + } else { + Log.w(TAG, "Flase positive packet reception"); + } + } else { + Log.e(TAG, "Bundle was null while sending packet to router service from alt transport"); + } + break; + default: + super.handleMessage(msg); + } + + } + } + AltTransportHandler testHandler = new AltTransportHandler(null); + Message msg = Message.obtain(null, TransportConstants.ROUTER_RECEIVED_PACKET); + //Send a null bundle + msg.setData(null); + try { + testHandler.handleMessage(msg); + } catch (Exception e) { + Assert.fail("Exception in testAlTransportHandlerHandleNullBundle, " + e); + } + } + /** * Test writeBytesToTransport method for handling null byte array in bundle * |