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..1507444b9f85e2e7d2291ed040ffda9d50067988 100644 |
--- a/remoting/android/javatests/src/org/chromium/chromoting/EventTest.java |
+++ b/remoting/android/javatests/src/org/chromium/chromoting/EventTest.java |
@@ -11,6 +11,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 +146,62 @@ public class EventTest extends InstrumentationTestCase { |
assertFalse(called.get()); |
assertTrue(event.isEmpty()); |
} |
+ |
+ @SmallTest |
+ @Feature({"Chromoting"}) |
+ public static void testReproducibleEvent() { |
+ Event.Raisable<Object> event = new Event.ReproducibleRaisable<>(); |
+ 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)); |
+ } |
} |