Commit e54a49b2 authored by bttk's avatar bttk Committed by Commit Bot

Simplify CallbackControllerTest

CallbackControllerTest covers the same functionality as before,
but is more readable.

Change-Id: I54d1409964ed0b077747abc0173a464867c9540d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2315255Reviewed-by: default avatarFilip Gorski <fgorski@chromium.org>
Reviewed-by: default avatarTommy Nyquist <nyquist@chromium.org>
Commit-Queue: who/bttk <bttk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#791524}
parent 1771743c
...@@ -4,11 +4,13 @@ ...@@ -4,11 +4,13 @@
package org.chromium.base; package org.chromium.base;
import static org.junit.Assert.assertFalse; import static org.mockito.Mockito.times;
import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.chromium.base.test.BaseRobolectricTestRunner; import org.chromium.base.test.BaseRobolectricTestRunner;
...@@ -19,95 +21,88 @@ import org.chromium.base.test.BaseRobolectricTestRunner; ...@@ -19,95 +21,88 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
@RunWith(BaseRobolectricTestRunner.class) @RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE) @Config(manifest = Config.NONE)
public class CallbackControllerTest { public class CallbackControllerTest {
private boolean mExecutionCompleted; /**
* Callbacks in this test act on {@code CallbackTarget}.
*/
private static class CallbackTarget {
public void runnableTarget() {}
public void callbackTarget(boolean arg) {}
}
@Test @Test
public void testInstanceCallback() { public void testInstanceCallback() {
CallbackController mCallbackController = new CallbackController(); CallbackController callbackController = new CallbackController();
Callback<Boolean> wrapped = mCallbackController.makeCancelable(this::setExecutionCompleted); CallbackTarget target = Mockito.mock(CallbackTarget.class);
mExecutionCompleted = false; Callback<Boolean> wrapped = callbackController.makeCancelable(target::callbackTarget);
wrapped.onResult(true); wrapped.onResult(true);
assertTrue(mExecutionCompleted); verify(target).callbackTarget(true);
// Execution possible multiple times. // Execution possible multiple times.
mExecutionCompleted = false;
wrapped.onResult(true); wrapped.onResult(true);
assertTrue(mExecutionCompleted); verify(target, times(2)).callbackTarget(true);
// Won't trigger after CallbackController is destroyed. // Won't trigger after CallbackController is destroyed.
mExecutionCompleted = false; callbackController.destroy();
mCallbackController.destroy();
wrapped.onResult(true); wrapped.onResult(true);
assertFalse(mExecutionCompleted); verifyNoMoreInteractions(target);
} }
@Test @Test
public void testlInstanceRunnable() { public void testInstanceRunnable() {
CallbackController mCallbackController = new CallbackController(); CallbackController callbackController = new CallbackController();
Runnable wrapped = mCallbackController.makeCancelable(this::completeExection); CallbackTarget target = Mockito.mock(CallbackTarget.class);
mExecutionCompleted = false; Runnable wrapped = callbackController.makeCancelable(target::runnableTarget);
wrapped.run(); wrapped.run();
assertTrue(mExecutionCompleted); verify(target).runnableTarget();
// Execution possible multiple times. // Execution possible multiple times.
mExecutionCompleted = false;
wrapped.run(); wrapped.run();
assertTrue(mExecutionCompleted); verify(target, times(2)).runnableTarget();
// Won't trigger after CallbackController is destroyed. // Won't trigger after CallbackController is destroyed.
mExecutionCompleted = false; callbackController.destroy();
mCallbackController.destroy();
wrapped.run(); wrapped.run();
assertFalse(mExecutionCompleted); verifyNoMoreInteractions(target);
} }
@Test @Test
public void testLambdaCallback() { public void testLambdaCallback() {
CallbackController mCallbackController = new CallbackController(); CallbackController callbackController = new CallbackController();
CallbackTarget target = Mockito.mock(CallbackTarget.class);
Callback<Boolean> wrapped = Callback<Boolean> wrapped =
mCallbackController.makeCancelable(value -> setExecutionCompleted(value)); callbackController.makeCancelable(value -> target.callbackTarget(value));
mExecutionCompleted = false;
wrapped.onResult(true); wrapped.onResult(true);
assertTrue(mExecutionCompleted); verify(target).callbackTarget(true);
// Execution possible multiple times. // Execution possible multiple times.
mExecutionCompleted = false;
wrapped.onResult(true); wrapped.onResult(true);
assertTrue(mExecutionCompleted); verify(target, times(2)).callbackTarget(true);
// Won't trigger after CallbackController is destroyed. // Won't trigger after CallbackController is destroyed.
mExecutionCompleted = false; callbackController.destroy();
mCallbackController.destroy();
wrapped.onResult(true); wrapped.onResult(true);
assertFalse(mExecutionCompleted); verifyNoMoreInteractions(target);
} }
@Test @Test
public void testLambdaRunnable() { public void testLambdaRunnable() {
Runnable runnable = () -> setExecutionCompleted(true); CallbackController callbackController = new CallbackController();
CallbackController mCallbackController = new CallbackController(); CallbackTarget target = Mockito.mock(CallbackTarget.class);
Runnable wrapped = mCallbackController.makeCancelable(() -> completeExection()); Runnable wrapped = callbackController.makeCancelable(() -> target.runnableTarget());
mExecutionCompleted = false;
wrapped.run(); wrapped.run();
assertTrue(mExecutionCompleted); verify(target).runnableTarget();
// Execution possible multiple times. // Execution possible multiple times.
mExecutionCompleted = false;
wrapped.run(); wrapped.run();
assertTrue(mExecutionCompleted); verify(target, times(2)).runnableTarget();
// Won't trigger after CallbackController is destroyed. // Won't trigger after CallbackController is destroyed.
mExecutionCompleted = false; callbackController.destroy();
mCallbackController.destroy();
wrapped.run(); wrapped.run();
assertFalse(mExecutionCompleted); verifyNoMoreInteractions(target);
}
private void completeExection() {
setExecutionCompleted(true);
}
private void setExecutionCompleted(boolean completed) {
mExecutionCompleted = completed;
} }
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment