From e9467474b28120e0996c964cf509d8eafe5852c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Tue, 13 Nov 2018 12:47:40 +0100 Subject: [android] catch and re-throw throwables thrown inside map state callbacks --- .../java/com/mapbox/mapboxsdk/MapStrictMode.java | 26 +- .../mapbox/mapboxsdk/maps/MapChangeReceiver.java | 49 ++-- .../mapboxsdk/maps/MapChangeReceiverTest.java | 307 +++++++++++++++++---- 3 files changed, 287 insertions(+), 95 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapStrictMode.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapStrictMode.java index aed392876b..c7f995964c 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapStrictMode.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapStrictMode.java @@ -29,36 +29,18 @@ public class MapStrictMode { /** * Internal use. Called whenever the strict mode violation occurs. */ - public static void strictModeViolation(String message, Exception exception) { + public static void strictModeViolation(String message, Throwable throwable) { if (strictModeEnabled) { - throw new MapStrictModeException(String.format("%s - %s", message, exception)); + throw new MapStrictModeException(String.format("%s - %s", message, throwable)); } } /** * Internal use. Called whenever the strict mode violation occurs. */ - public static void strictModeViolation(String message, Error error) { + public static void strictModeViolation(Throwable throwable) { if (strictModeEnabled) { - throw new MapStrictModeException(String.format("%s - %s", message, error)); - } - } - - /** - * Internal use. Called whenever the strict mode violation occurs. - */ - public static void strictModeViolation(Error error) { - if (strictModeEnabled) { - throw new MapStrictModeException(String.format("%s", error)); - } - } - - /** - * Internal use. Called whenever the strict mode violation occurs. - */ - public static void strictModeViolation(Exception exception) { - if (strictModeEnabled) { - throw new MapStrictModeException(String.format("%s", exception)); + throw new MapStrictModeException(String.format("%s", throwable)); } } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapChangeReceiver.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapChangeReceiver.java index 3eaa381239..a12c6c7fb3 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapChangeReceiver.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapChangeReceiver.java @@ -1,6 +1,5 @@ package com.mapbox.mapboxsdk.maps; -import com.mapbox.mapboxsdk.MapStrictMode; import com.mapbox.mapboxsdk.log.Logger; import java.util.List; @@ -39,9 +38,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onCameraWillChangeListener.onCameraWillChange(animated); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onCameraWillChange", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -53,9 +52,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onCameraIsChangingListener.onCameraIsChanging(); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onCameraIsChanging", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -67,9 +66,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onCameraDidChangeListener.onCameraDidChange(animated); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onCameraDidChange", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -81,9 +80,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onWillStartLoadingMapListener.onWillStartLoadingMap(); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onWillStartLoadingMap", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -95,9 +94,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onDidFinishLoadingMapListener.onDidFinishLoadingMap(); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onDidFinishLoadingMap", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -109,9 +108,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onDidFailLoadingMapListener.onDidFailLoadingMap(error); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onDidFailLoadingMap", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -123,9 +122,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { listener.onWillStartRenderingFrame(); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onWillStartRenderingFrame", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -137,9 +136,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { listener.onDidFinishRenderingFrame(fully); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onDidFinishRenderingFrame", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -151,9 +150,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { listener.onWillStartRenderingMap(); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onWillStartRenderingMap", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -165,9 +164,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { listener.onDidFinishRenderingMap(fully); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onDidFinishRenderingMap", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -179,9 +178,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { listener.onDidFinishLoadingStyle(); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onDidFinishLoadingStyle", err); - MapStrictMode.strictModeViolation(err); + throw err; } } @@ -193,9 +192,9 @@ class MapChangeReceiver implements NativeMapView.StateCallback { onSourceChangedListener.onSourceChangedListener(sourceId); } } - } catch (RuntimeException err) { + } catch (Throwable err) { Logger.e(TAG, "Exception in onSourceChanged", err); - MapStrictMode.strictModeViolation(err); + throw err; } } diff --git a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapChangeReceiverTest.java b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapChangeReceiverTest.java index 688b4badec..061fa7819a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapChangeReceiverTest.java +++ b/platform/android/MapboxGLAndroidSDK/src/test/java/com/mapbox/mapboxsdk/maps/MapChangeReceiverTest.java @@ -1,8 +1,11 @@ package com.mapbox.mapboxsdk.maps; +import com.google.common.util.concurrent.ExecutionError; import com.mapbox.mapboxsdk.log.Logger; import com.mapbox.mapboxsdk.log.LoggerDefinition; +import junit.framework.Assert; + import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -79,10 +82,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnCameraWillChangeListener(onCameraWillChangeListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onCameraWillChangeListener).onCameraWillChange(false); + try { + mapChangeEventManager.onCameraWillChange(false); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onCameraWillChangeListener).onCameraWillChange(false); - mapChangeEventManager.onCameraWillChange(false); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onCameraWillChange(false); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -96,10 +112,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnCameraWillChangeListener(onCameraWillChangeListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onCameraWillChangeListener).onCameraWillChange(true); + try { + mapChangeEventManager.onCameraWillChange(true); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onCameraWillChangeListener).onCameraWillChange(true); - mapChangeEventManager.onCameraWillChange(true); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onCameraWillChange(true); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -113,10 +142,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnCameraIsChangingListener(onCameraIsChangingListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onCameraIsChangingListener).onCameraIsChanging(); + try { + mapChangeEventManager.onCameraIsChanging(); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onCameraIsChangingListener).onCameraIsChanging(); - mapChangeEventManager.onCameraIsChanging(); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onCameraIsChanging(); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -130,10 +172,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnCameraDidChangeListener(onCameraDidChangeListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onCameraDidChangeListener).onCameraDidChange(false); + try { + mapChangeEventManager.onCameraDidChange(false); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onCameraDidChangeListener).onCameraDidChange(false); - mapChangeEventManager.onCameraDidChange(false); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onCameraDidChange(false); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -147,10 +202,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnCameraDidChangeListener(onCameraDidChangeListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onCameraDidChangeListener).onCameraDidChange(true); + try { + mapChangeEventManager.onCameraDidChange(true); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onCameraDidChangeListener).onCameraDidChange(true); - mapChangeEventManager.onCameraDidChange(true); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onCameraDidChange(true); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -164,10 +232,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnWillStartLoadingMapListener(onWillStartLoadingMapListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onWillStartLoadingMapListener).onWillStartLoadingMap(); + try { + mapChangeEventManager.onWillStartLoadingMap(); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onWillStartLoadingMapListener).onWillStartLoadingMap(); - mapChangeEventManager.onWillStartLoadingMap(); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onWillStartLoadingMap(); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -181,10 +262,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnDidFinishLoadingMapListener(onDidFinishLoadingMapListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onDidFinishLoadingMapListener).onDidFinishLoadingMap(); + try { + mapChangeEventManager.onDidFinishLoadingMap(); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onDidFinishLoadingMapListener).onDidFinishLoadingMap(); - mapChangeEventManager.onDidFinishLoadingMap(); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onDidFinishLoadingMap(); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -198,10 +292,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnDidFailLoadingMapListener(onDidFailLoadingMapListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onDidFailLoadingMapListener).onDidFailLoadingMap(TEST_STRING); + try { + mapChangeEventManager.onDidFailLoadingMap(TEST_STRING); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onDidFailLoadingMapListener).onDidFailLoadingMap(TEST_STRING); - mapChangeEventManager.onDidFailLoadingMap(TEST_STRING); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onDidFailLoadingMap(TEST_STRING); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -215,10 +322,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnWillStartRenderingFrameListener(onWillStartRenderingFrameListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onWillStartRenderingFrameListener).onWillStartRenderingFrame(); + try { + mapChangeEventManager.onWillStartRenderingFrame(); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onWillStartRenderingFrameListener).onWillStartRenderingFrame(); - mapChangeEventManager.onWillStartRenderingFrame(); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onWillStartRenderingFrame(); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -232,10 +352,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnDidFinishRenderingFrameListener(onDidFinishRenderingFrameListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onDidFinishRenderingFrameListener).onDidFinishRenderingFrame(true); + try { + mapChangeEventManager.onDidFinishRenderingFrame(true); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onDidFinishRenderingFrameListener).onDidFinishRenderingFrame(true); - mapChangeEventManager.onDidFinishRenderingFrame(true); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onDidFinishRenderingFrame(true); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -249,10 +382,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnDidFinishRenderingFrameListener(onDidFinishRenderingFrameListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onDidFinishRenderingFrameListener).onDidFinishRenderingFrame(false); + try { + mapChangeEventManager.onDidFinishRenderingFrame(false); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onDidFinishRenderingFrameListener).onDidFinishRenderingFrame(false); - mapChangeEventManager.onDidFinishRenderingFrame(false); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onDidFinishRenderingFrame(false); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -266,10 +412,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnWillStartRenderingMapListener(onWillStartRenderingMapListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onWillStartRenderingMapListener).onWillStartRenderingMap(); + try { + mapChangeEventManager.onWillStartRenderingMap(); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onWillStartRenderingMapListener).onWillStartRenderingMap(); - mapChangeEventManager.onWillStartRenderingMap(); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onWillStartRenderingMap(); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -283,10 +442,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnDidFinishRenderingMapListener(onDidFinishRenderingMapListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onDidFinishRenderingMapListener).onDidFinishRenderingMap(true); + try { + mapChangeEventManager.onDidFinishRenderingMap(true); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onDidFinishRenderingMapListener).onDidFinishRenderingMap(true); - mapChangeEventManager.onDidFinishRenderingMap(true); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onDidFinishRenderingMap(true); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -300,10 +472,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnDidFinishRenderingMapListener(onDidFinishRenderingMapListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onDidFinishRenderingMapListener).onDidFinishRenderingMap(false); + try { + mapChangeEventManager.onDidFinishRenderingMap(false); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onDidFinishRenderingMapListener).onDidFinishRenderingMap(false); - mapChangeEventManager.onDidFinishRenderingMap(false); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onDidFinishRenderingMap(false); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -317,10 +502,23 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnDidFinishLoadingStyleListener(onDidFinishLoadingStyleListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onDidFinishLoadingStyleListener).onDidFinishLoadingStyle(); + try { + mapChangeEventManager.onDidFinishLoadingStyle(); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onDidFinishLoadingStyleListener).onDidFinishLoadingStyle(); - mapChangeEventManager.onDidFinishLoadingStyle(); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onDidFinishLoadingStyle(); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } @Test @@ -334,9 +532,22 @@ public class MapChangeReceiverTest { mapChangeEventManager.addOnSourceChangedListener(onSourceChangedListener); Logger.setLoggerDefinition(loggerDefinition); - Exception err = new RuntimeException(); + Exception exc = new RuntimeException(); + doThrow(exc).when(onSourceChangedListener).onSourceChangedListener(TEST_STRING); + try { + mapChangeEventManager.onSourceChanged(TEST_STRING); + Assert.fail("The exception should've been re-thrown."); + } catch (RuntimeException throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(exc)); + } + + Error err = new ExecutionError("", new Error()); doThrow(err).when(onSourceChangedListener).onSourceChangedListener(TEST_STRING); - mapChangeEventManager.onSourceChanged(TEST_STRING); - verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + try { + mapChangeEventManager.onSourceChanged(TEST_STRING); + Assert.fail("The exception should've been re-thrown."); + } catch (ExecutionError throwable) { + verify(loggerDefinition).e(anyString(), anyString(), eq(err)); + } } } -- cgit v1.2.1