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 @@
package org.chromium.base;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.robolectric.annotation.Config;
import org.chromium.base.test.BaseRobolectricTestRunner;
......@@ -19,95 +21,88 @@ import org.chromium.base.test.BaseRobolectricTestRunner;
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
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
public void testInstanceCallback() {
CallbackController mCallbackController = new CallbackController();
Callback<Boolean> wrapped = mCallbackController.makeCancelable(this::setExecutionCompleted);
mExecutionCompleted = false;
CallbackController callbackController = new CallbackController();
CallbackTarget target = Mockito.mock(CallbackTarget.class);
Callback<Boolean> wrapped = callbackController.makeCancelable(target::callbackTarget);
wrapped.onResult(true);
assertTrue(mExecutionCompleted);
verify(target).callbackTarget(true);
// Execution possible multiple times.
mExecutionCompleted = false;
wrapped.onResult(true);
assertTrue(mExecutionCompleted);
verify(target, times(2)).callbackTarget(true);
// Won't trigger after CallbackController is destroyed.
mExecutionCompleted = false;
mCallbackController.destroy();
callbackController.destroy();
wrapped.onResult(true);
assertFalse(mExecutionCompleted);
verifyNoMoreInteractions(target);
}
@Test
public void testlInstanceRunnable() {
CallbackController mCallbackController = new CallbackController();
Runnable wrapped = mCallbackController.makeCancelable(this::completeExection);
mExecutionCompleted = false;
public void testInstanceRunnable() {
CallbackController callbackController = new CallbackController();
CallbackTarget target = Mockito.mock(CallbackTarget.class);
Runnable wrapped = callbackController.makeCancelable(target::runnableTarget);
wrapped.run();
assertTrue(mExecutionCompleted);
verify(target).runnableTarget();
// Execution possible multiple times.
mExecutionCompleted = false;
wrapped.run();
assertTrue(mExecutionCompleted);
verify(target, times(2)).runnableTarget();
// Won't trigger after CallbackController is destroyed.
mExecutionCompleted = false;
mCallbackController.destroy();
callbackController.destroy();
wrapped.run();
assertFalse(mExecutionCompleted);
verifyNoMoreInteractions(target);
}
@Test
public void testLambdaCallback() {
CallbackController mCallbackController = new CallbackController();
CallbackController callbackController = new CallbackController();
CallbackTarget target = Mockito.mock(CallbackTarget.class);
Callback<Boolean> wrapped =
mCallbackController.makeCancelable(value -> setExecutionCompleted(value));
mExecutionCompleted = false;
callbackController.makeCancelable(value -> target.callbackTarget(value));
wrapped.onResult(true);
assertTrue(mExecutionCompleted);
verify(target).callbackTarget(true);
// Execution possible multiple times.
mExecutionCompleted = false;
wrapped.onResult(true);
assertTrue(mExecutionCompleted);
verify(target, times(2)).callbackTarget(true);
// Won't trigger after CallbackController is destroyed.
mExecutionCompleted = false;
mCallbackController.destroy();
callbackController.destroy();
wrapped.onResult(true);
assertFalse(mExecutionCompleted);
verifyNoMoreInteractions(target);
}
@Test
public void testLambdaRunnable() {
Runnable runnable = () -> setExecutionCompleted(true);
CallbackController mCallbackController = new CallbackController();
Runnable wrapped = mCallbackController.makeCancelable(() -> completeExection());
mExecutionCompleted = false;
CallbackController callbackController = new CallbackController();
CallbackTarget target = Mockito.mock(CallbackTarget.class);
Runnable wrapped = callbackController.makeCancelable(() -> target.runnableTarget());
wrapped.run();
assertTrue(mExecutionCompleted);
verify(target).runnableTarget();
// Execution possible multiple times.
mExecutionCompleted = false;
wrapped.run();
assertTrue(mExecutionCompleted);
verify(target, times(2)).runnableTarget();
// Won't trigger after CallbackController is destroyed.
mExecutionCompleted = false;
mCallbackController.destroy();
callbackController.destroy();
wrapped.run();
assertFalse(mExecutionCompleted);
}
private void completeExection() {
setExecutionCompleted(true);
}
private void setExecutionCompleted(boolean completed) {
mExecutionCompleted = completed;
verifyNoMoreInteractions(target);
}
}
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