Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(595)

Unified Diff: remoting/android/javatests/src/org/chromium/chromoting/EventTest.java

Issue 2385593002: [Chromoting] PromisedRaisable in Android client (Closed)
Patch Set: Resolve review comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/android/javatests/src/org/chromium/chromoting/EventTest.java
diff --git a/remoting/android/javatests/src/org/chromium/chromoting/EventTest.java b/remoting/android/javatests/src/org/chromium/chromoting/EventTest.java
index cf828a3a4ff45aaa6ed3c5550833b929b1e26c98..749a2982a84720b4a10d853e336b82b7317f04f3 100644
--- a/remoting/android/javatests/src/org/chromium/chromoting/EventTest.java
+++ b/remoting/android/javatests/src/org/chromium/chromoting/EventTest.java
@@ -4,6 +4,8 @@
package org.chromium.chromoting;
+import android.os.Handler;
+import android.os.Looper;
import android.test.InstrumentationTestCase;
import android.test.suitebuilder.annotation.MediumTest;
import android.test.suitebuilder.annotation.SmallTest;
@@ -11,6 +13,9 @@ import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.test.util.Feature;
import org.chromium.chromoting.test.util.MutableReference;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* Tests for {@link Event}.
*/
@@ -143,4 +148,148 @@ public class EventTest extends InstrumentationTestCase {
assertFalse(called.get());
assertTrue(event.isEmpty());
}
+
+ @SmallTest
+ @Feature({"Chromoting"})
+ public static void testPromisedEvent() {
+ Thread thread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ assertNull(Looper.myLooper());
+ Event.Raisable<Object> event = new Event.PromisedRaisable<>();
+ final List<Object> called1 = new ArrayList<>();
+ final List<Object> called2 = new ArrayList<>();
+ final List<Object> called3 = new ArrayList<>();
+ final List<Object> called4 = new ArrayList<>();
+ final List<Object> parameters = new ArrayList<>();
+ event.add(new Event.ParameterRunnable<Object>() {
+ @Override
+ public void run(Object obj) {
+ called1.add(obj);
+ }
+ });
+ Object parameter = new Object();
+ event.raise(parameter);
+ parameters.add(parameter);
+ event.add(new Event.ParameterRunnable<Object>() {
+ @Override
+ public void run(Object obj) {
+ called2.add(obj);
+ }
+ });
+ parameter = new Object();
+ event.raise(parameter);
+ parameters.add(parameter);
+ event.add(new Event.ParameterRunnable<Object>() {
+ @Override
+ public void run(Object obj) {
+ called3.add(obj);
+ }
+ });
+ parameter = new Object();
+ event.raise(parameter);
+ parameters.add(parameter);
+ event.add(new Event.ParameterRunnable<Object>() {
+ @Override
+ public void run(Object obj) {
+ called4.add(obj);
+ }
+ });
+
+ assertEquals(called1.size(), 3);
+ assertEquals(called2.size(), 3);
+ assertEquals(called3.size(), 2);
+ assertEquals(called4.size(), 1);
+
+ for (int i = 0; i < 3; i++) {
+ assertTrue(called1.get(i) == parameters.get(i));
+ assertTrue(called2.get(i) == parameters.get(i));
+ }
+ for (int i = 0; i < 2; i++) {
+ assertTrue(called3.get(i) == parameters.get(i + 1));
+ }
+ assertTrue(called4.get(0) == parameters.get(2));
+ }
+ });
+ thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+ @Override
+ public void uncaughtException(Thread t, Throwable e) {
+ // Forward exceptions from test thread.
+ assertFalse(true);
+ }
+ });
+ thread.start();
+ try {
+ thread.join();
+ } catch (InterruptedException ex) { }
+ }
+
+ @SmallTest
+ @Feature({"Chromoting"})
+ public static void testPromisedEventWithLooper() {
+ assertNotNull(Looper.myLooper());
+ Event.Raisable<Object> event = new Event.PromisedRaisable<>();
+ final List<Object> called1 = new ArrayList<>();
+ final List<Object> called2 = new ArrayList<>();
+ final List<Object> called3 = new ArrayList<>();
+ final List<Object> called4 = new ArrayList<>();
+ final List<Object> parameters = new ArrayList<>();
+ event.add(new Event.ParameterRunnable<Object>() {
+ @Override
+ public void run(Object obj) {
+ called1.add(obj);
+ }
+ });
+ Object parameter = new Object();
+ event.raise(parameter);
+ parameters.add(parameter);
+ event.add(new Event.ParameterRunnable<Object>() {
+ @Override
+ public void run(Object obj) {
+ called2.add(obj);
+ }
+ });
+ parameter = new Object();
+ event.raise(parameter);
+ parameters.add(parameter);
+ event.add(new Event.ParameterRunnable<Object>() {
+ @Override
+ public void run(Object obj) {
+ called3.add(obj);
+ }
+ });
+ parameter = new Object();
+ event.raise(parameter);
+ parameters.add(parameter);
+ event.add(new Event.ParameterRunnable<Object>() {
+ @Override
+ public void run(Object obj) {
+ called4.add(obj);
+ }
+ });
+
+ Handler h = new Handler(Looper.myLooper());
+ h.post(new Runnable() {
+ @Override
+ public void run() {
+ Looper.myLooper().quit();
+ }
+ });
+ Looper.loop();
+
+ assertEquals(called1.size(), 3);
+ assertEquals(called2.size(), 3);
+ assertEquals(called3.size(), 2);
+ assertEquals(called4.size(), 1);
+
+ for (int i = 0; i < 3; i++) {
+ assertTrue(called1.get(i) == parameters.get(i));
+ }
+ assertTrue(called2.get(0) == parameters.get(1));
+ for (int i = 0; i < 2; i++) {
+ assertTrue(called2.get(i + 1) == parameters.get(2));
+ assertTrue(called3.get(i) == parameters.get(2));
+ }
+ assertTrue(called4.get(0) == parameters.get(2));
+ }
}

Powered by Google App Engine
This is Rietveld 408576698