From a81c8b482120be878e0a4c43bd911a7b5155ff8b Mon Sep 17 00:00:00 2001 From: Bastien Wermeille Date: Mon, 4 May 2020 22:16:47 +0200 Subject: [PATCH 1/4] Add consume boolean return for clickListener --- .../mapboxsdk/plugins/annotation/AnnotationManager.java | 8 ++++++-- .../plugins/annotation/OnAnnotationClickListener.java | 5 +++-- .../plugins/annotation/OnAnnotationLongClickListener.java | 5 +++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java index a86998aee..c87662944 100644 --- a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java +++ b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java @@ -377,7 +377,9 @@ public boolean onMapClick(@NonNull LatLng point) { T annotation = queryMapForFeatures(point); if (annotation != null) { for (U clickListener : clickListeners) { - clickListener.onAnnotationClick(annotation); + if (clickListener.onAnnotationClick(annotation)) { + return true; + } } } return false; @@ -392,7 +394,9 @@ public boolean onMapLongClick(@NonNull LatLng point) { T annotation = queryMapForFeatures(point); if (annotation != null) { for (V clickListener : longClickListeners) { - clickListener.onAnnotationLongClick(annotation); + if (clickListener.onAnnotationLongClick(annotation)) { + return true; + } } } return false; diff --git a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationClickListener.java b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationClickListener.java index f19d55472..164eeb284 100644 --- a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationClickListener.java +++ b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationClickListener.java @@ -11,7 +11,8 @@ public interface OnAnnotationClickListener { * Called when an annotation has been clicked * * @param t the annotation clicked. + * @return True if this click should be consumed and not passed further to other listeners registered afterwards, + * false otherwise. */ - void onAnnotationClick(T t); - + boolean onAnnotationClick(T t); } diff --git a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationLongClickListener.java b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationLongClickListener.java index 5103e7c84..e2beaec02 100644 --- a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationLongClickListener.java +++ b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/OnAnnotationLongClickListener.java @@ -11,7 +11,8 @@ public interface OnAnnotationLongClickListener { * Called when an annotation has been long clicked * * @param t the annotation long clicked. + * @return True if this click should be consumed and not passed further to other listeners registered afterwards, + * false otherwise. */ - void onAnnotationLongClick(T t); - + boolean onAnnotationLongClick(T t); } From 36f2485ea24ac67acca6038ec7a4ab82abadbd8a Mon Sep 17 00:00:00 2001 From: Bastien Wermeille Date: Mon, 4 May 2020 22:35:29 +0200 Subject: [PATCH 2/4] Fix FillChangeActivity with new listener interface --- .../testapp/activity/annotation/FillChangeActivity.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillChangeActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillChangeActivity.java index 40a1eb086..528d7c960 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillChangeActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillChangeActivity.java @@ -80,10 +80,13 @@ protected void onCreate(Bundle savedInstanceState) { public void onMapReady(@NonNull MapboxMap map) { map.setStyle(new Style.Builder().fromUri(Style.MAPBOX_STREETS), style -> { fillManager = new FillManager(mapView, map, style, "aerialway"); - fillManager.addClickListener(fill -> Toast.makeText( + fillManager.addClickListener(fill -> { + Toast.makeText( FillChangeActivity.this, "Clicked: " + fill.getId(), - Toast.LENGTH_SHORT).show()); + Toast.LENGTH_SHORT).show(); + return false; + }); fill = fillManager.create(new FillOptions() .withLatLngs(STAR_SHAPE_POINTS) From 05733bf51fbab0ff2ba6dd36a93510c8b1d117b8 Mon Sep 17 00:00:00 2001 From: Bastien Wermeille Date: Mon, 4 May 2020 22:44:19 +0200 Subject: [PATCH 3/4] Clean tests import + fix app code with breaking changes --- .../activity/annotation/CircleActivity.java | 22 ++++++++++------- .../activity/annotation/FillActivity.java | 24 ++++++++++++------- .../activity/annotation/LineActivity.java | 22 ++++++++++------- .../annotation/LineChangeActivity.java | 11 +++++---- .../activity/annotation/SymbolActivity.java | 21 +++++++++------- .../plugins/annotation/CircleManagerTest.java | 5 ---- .../plugins/annotation/FillManagerTest.java | 5 ---- .../plugins/annotation/LineManagerTest.java | 4 ---- .../plugins/annotation/SymbolManagerTest.java | 1 - 9 files changed, 63 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/CircleActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/CircleActivity.java index f79bab1c8..c99a65df3 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/CircleActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/CircleActivity.java @@ -54,14 +54,20 @@ protected void onCreate(Bundle savedInstanceState) { // create circle manager circleManager = new CircleManager(mapView, mapboxMap, style); - circleManager.addClickListener(circle -> Toast.makeText(CircleActivity.this, - String.format("Circle clicked %s", circle.getId()), - Toast.LENGTH_SHORT - ).show()); - circleManager.addLongClickListener(circle -> Toast.makeText(CircleActivity.this, - String.format("Circle long clicked %s", circle.getId()), - Toast.LENGTH_SHORT - ).show()); + circleManager.addClickListener(circle -> { + Toast.makeText(CircleActivity.this, + String.format("Circle clicked %s", circle.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); + circleManager.addLongClickListener(circle -> { + Toast.makeText(CircleActivity.this, + String.format("Circle long clicked %s", circle.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); // create a fixed circle CircleOptions circleOptions = new CircleOptions() diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillActivity.java index 154007ef2..75be7a1cc 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/FillActivity.java @@ -49,15 +49,21 @@ protected void onCreate(Bundle savedInstanceState) { mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(2)); fillManager = new FillManager(mapView, mapboxMap, style); - fillManager.addClickListener(fill -> Toast.makeText(FillActivity.this, - String.format("Fill clicked %s with title: %s", fill.getId(), getTitleFromFill(fill)), - Toast.LENGTH_SHORT - ).show()); - - fillManager.addLongClickListener(fill -> Toast.makeText(FillActivity.this, - String.format("Fill long clicked %s with title: %s", fill.getId(), getTitleFromFill(fill)), - Toast.LENGTH_SHORT - ).show()); + fillManager.addClickListener(fill -> { + Toast.makeText(FillActivity.this, + String.format("Fill clicked %s with title: %s", fill.getId(), getTitleFromFill(fill)), + Toast.LENGTH_SHORT + ).show(); + return false; + }); + + fillManager.addLongClickListener(fill -> { + Toast.makeText(FillActivity.this, + String.format("Fill long clicked %s with title: %s", fill.getId(), getTitleFromFill(fill)), + Toast.LENGTH_SHORT + ).show(); + return false; + }); // create a fixed fill List innerLatLngs = new ArrayList<>(); diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java index 0d13e69f5..be12245e9 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineActivity.java @@ -46,14 +46,20 @@ protected void onCreate(Bundle savedInstanceState) { mapboxMap.moveCamera(CameraUpdateFactory.zoomTo(2)); lineManager = new LineManager(mapView, mapboxMap, style); - lineManager.addClickListener(line -> Toast.makeText(LineActivity.this, - String.format("Line clicked %s", line.getId()), - Toast.LENGTH_SHORT - ).show()); - lineManager.addLongClickListener(line -> Toast.makeText(LineActivity.this, - String.format("Line long clicked %s", line.getId()), - Toast.LENGTH_SHORT - ).show()); + lineManager.addClickListener(line -> { + Toast.makeText(LineActivity.this, + String.format("Line clicked %s", line.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); + lineManager.addLongClickListener(line -> { + Toast.makeText(LineActivity.this, + String.format("Line long clicked %s", line.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); // create a fixed line List latLngs = new ArrayList<>(); diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java index 5a7b00987..c0c90840e 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/LineChangeActivity.java @@ -73,10 +73,13 @@ protected void onCreate(Bundle savedInstanceState) { lineManager = new LineManager(mapView, mapboxMap, style); lines = lineManager.create(getAllPolylines()); - lineManager.addClickListener(line -> Toast.makeText( - LineChangeActivity.this, - "Clicked: " + line.getId(), - Toast.LENGTH_SHORT).show()); + lineManager.addClickListener(line -> { + Toast.makeText( + LineChangeActivity.this, + "Clicked: " + line.getId(), + Toast.LENGTH_SHORT).show(); + return false; + }); LineManager dottedLineManger = new LineManager(mapView, mapboxMap, style); dottedLineManger.create(new LineOptions() diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/SymbolActivity.java b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/SymbolActivity.java index 69d1e8449..e2c86b027 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/SymbolActivity.java +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/annotation/SymbolActivity.java @@ -82,15 +82,20 @@ protected void onCreate(Bundle savedInstanceState) { // create symbol manager GeoJsonOptions geoJsonOptions = new GeoJsonOptions().withTolerance(0.4f); symbolManager = new SymbolManager(mapView, mapboxMap, style, null, geoJsonOptions); - symbolManager.addClickListener(symbol -> Toast.makeText(SymbolActivity.this, - String.format("Symbol clicked %s", symbol.getId()), - Toast.LENGTH_SHORT - ).show()); - symbolManager.addLongClickListener(symbol -> + symbolManager.addClickListener(symbol -> { Toast.makeText(SymbolActivity.this, - String.format("Symbol long clicked %s", symbol.getId()), - Toast.LENGTH_SHORT - ).show()); + String.format("Symbol clicked %s", symbol.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); + symbolManager.addLongClickListener(symbol -> { + Toast.makeText(SymbolActivity.this, + String.format("Symbol long clicked %s", symbol.getId()), + Toast.LENGTH_SHORT + ).show(); + return false; + }); // set non data driven properties symbolManager.setIconAllowOverlap(true); diff --git a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/CircleManagerTest.java b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/CircleManagerTest.java index 629a086c7..f8f34c6d4 100644 --- a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/CircleManagerTest.java +++ b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/CircleManagerTest.java @@ -12,19 +12,14 @@ import com.mapbox.mapboxsdk.style.layers.*; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; -import com.mapbox.mapboxsdk.utils.ColorUtils; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import java.util.ArrayList; import java.util.List; -import java.util.Arrays; -import android.graphics.PointF; -import static com.mapbox.mapboxsdk.plugins.annotation.ConvertUtils.convertArray; import static com.mapbox.mapboxsdk.style.expressions.Expression.get; -import static com.mapbox.mapboxsdk.style.layers.Property.*; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.*; import static junit.framework.Assert.*; import static org.mockito.ArgumentMatchers.argThat; diff --git a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java index 8760f9f6c..47b98abb2 100644 --- a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java +++ b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java @@ -12,19 +12,14 @@ import com.mapbox.mapboxsdk.style.layers.*; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; -import com.mapbox.mapboxsdk.utils.ColorUtils; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import java.util.ArrayList; import java.util.List; -import java.util.Arrays; -import android.graphics.PointF; -import static com.mapbox.mapboxsdk.plugins.annotation.ConvertUtils.convertArray; import static com.mapbox.mapboxsdk.style.expressions.Expression.get; -import static com.mapbox.mapboxsdk.style.layers.Property.*; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.*; import static junit.framework.Assert.*; import static org.mockito.ArgumentMatchers.argThat; diff --git a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java index 25970c1ae..4ce2ccc65 100644 --- a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java +++ b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java @@ -12,17 +12,13 @@ import com.mapbox.mapboxsdk.style.layers.*; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; -import com.mapbox.mapboxsdk.utils.ColorUtils; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import java.util.ArrayList; import java.util.List; -import java.util.Arrays; -import android.graphics.PointF; -import static com.mapbox.mapboxsdk.plugins.annotation.ConvertUtils.convertArray; import static com.mapbox.mapboxsdk.style.expressions.Expression.get; import static com.mapbox.mapboxsdk.style.layers.Property.*; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.*; diff --git a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/SymbolManagerTest.java b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/SymbolManagerTest.java index c01734911..5108bc846 100644 --- a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/SymbolManagerTest.java +++ b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/SymbolManagerTest.java @@ -12,7 +12,6 @@ import com.mapbox.mapboxsdk.style.layers.*; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; -import com.mapbox.mapboxsdk.utils.ColorUtils; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; From 3160eda3503f8b2c719411cc9f58b31f8291da41 Mon Sep 17 00:00:00 2001 From: Langston Smith Date: Tue, 5 May 2020 09:55:42 -0700 Subject: [PATCH 4/4] ran make generate-annotation-code --- .../mapboxsdk/plugins/annotation/CircleManagerTest.java | 5 +++++ .../mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java | 5 +++++ .../mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java | 4 ++++ .../mapboxsdk/plugins/annotation/SymbolManagerTest.java | 1 + 4 files changed, 15 insertions(+) diff --git a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/CircleManagerTest.java b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/CircleManagerTest.java index f8f34c6d4..629a086c7 100644 --- a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/CircleManagerTest.java +++ b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/CircleManagerTest.java @@ -12,14 +12,19 @@ import com.mapbox.mapboxsdk.style.layers.*; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; +import com.mapbox.mapboxsdk.utils.ColorUtils; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import java.util.ArrayList; import java.util.List; +import java.util.Arrays; +import android.graphics.PointF; +import static com.mapbox.mapboxsdk.plugins.annotation.ConvertUtils.convertArray; import static com.mapbox.mapboxsdk.style.expressions.Expression.get; +import static com.mapbox.mapboxsdk.style.layers.Property.*; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.*; import static junit.framework.Assert.*; import static org.mockito.ArgumentMatchers.argThat; diff --git a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java index 47b98abb2..8760f9f6c 100644 --- a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java +++ b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/FillManagerTest.java @@ -12,14 +12,19 @@ import com.mapbox.mapboxsdk.style.layers.*; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; +import com.mapbox.mapboxsdk.utils.ColorUtils; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import java.util.ArrayList; import java.util.List; +import java.util.Arrays; +import android.graphics.PointF; +import static com.mapbox.mapboxsdk.plugins.annotation.ConvertUtils.convertArray; import static com.mapbox.mapboxsdk.style.expressions.Expression.get; +import static com.mapbox.mapboxsdk.style.layers.Property.*; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.*; import static junit.framework.Assert.*; import static org.mockito.ArgumentMatchers.argThat; diff --git a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java index 4ce2ccc65..25970c1ae 100644 --- a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java +++ b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/LineManagerTest.java @@ -12,13 +12,17 @@ import com.mapbox.mapboxsdk.style.layers.*; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; +import com.mapbox.mapboxsdk.utils.ColorUtils; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; import java.util.ArrayList; import java.util.List; +import java.util.Arrays; +import android.graphics.PointF; +import static com.mapbox.mapboxsdk.plugins.annotation.ConvertUtils.convertArray; import static com.mapbox.mapboxsdk.style.expressions.Expression.get; import static com.mapbox.mapboxsdk.style.layers.Property.*; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.*; diff --git a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/SymbolManagerTest.java b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/SymbolManagerTest.java index 5108bc846..c01734911 100644 --- a/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/SymbolManagerTest.java +++ b/plugin-annotation/src/test/java/com/mapbox/mapboxsdk/plugins/annotation/SymbolManagerTest.java @@ -12,6 +12,7 @@ import com.mapbox.mapboxsdk.style.layers.*; import com.mapbox.mapboxsdk.style.sources.GeoJsonOptions; import com.mapbox.mapboxsdk.style.sources.GeoJsonSource; +import com.mapbox.mapboxsdk.utils.ColorUtils; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor;