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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chromoting; 5 package org.chromium.chromoting;
6 6
7 import android.os.Handler;
8 import android.os.Looper;
7 import android.test.InstrumentationTestCase; 9 import android.test.InstrumentationTestCase;
8 import android.test.suitebuilder.annotation.MediumTest; 10 import android.test.suitebuilder.annotation.MediumTest;
9 import android.test.suitebuilder.annotation.SmallTest; 11 import android.test.suitebuilder.annotation.SmallTest;
10 12
11 import org.chromium.base.test.util.Feature; 13 import org.chromium.base.test.util.Feature;
12 import org.chromium.chromoting.test.util.MutableReference; 14 import org.chromium.chromoting.test.util.MutableReference;
13 15
16 import java.util.ArrayList;
17 import java.util.List;
18
14 /** 19 /**
15 * Tests for {@link Event}. 20 * Tests for {@link Event}.
16 */ 21 */
17 public class EventTest extends InstrumentationTestCase { 22 public class EventTest extends InstrumentationTestCase {
18 @SmallTest 23 @SmallTest
19 @Feature({"Chromoting"}) 24 @Feature({"Chromoting"})
20 public static void testBasicScenario() { 25 public static void testBasicScenario() {
21 Event.Raisable<Void> event = new Event.Raisable<>(); 26 Event.Raisable<Void> event = new Event.Raisable<>();
22 final MutableReference<Integer> callTimes = new MutableReference<Integer >(0); 27 final MutableReference<Integer> callTimes = new MutableReference<Integer >(0);
23 Object eventId1 = event.add(new Event.ParameterRunnable<Void>() { 28 Object eventId1 = event.add(new Event.ParameterRunnable<Void>() {
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 nextReturn.set(false); 141 nextReturn.set(false);
137 assertEquals(event.raise(null), 1); 142 assertEquals(event.raise(null), 1);
138 assertTrue(called.get()); 143 assertTrue(called.get());
139 assertTrue(event.isEmpty()); 144 assertTrue(event.isEmpty());
140 called.set(false); 145 called.set(false);
141 nextReturn.set(true); 146 nextReturn.set(true);
142 assertEquals(event.raise(null), 0); 147 assertEquals(event.raise(null), 0);
143 assertFalse(called.get()); 148 assertFalse(called.get());
144 assertTrue(event.isEmpty()); 149 assertTrue(event.isEmpty());
145 } 150 }
151
152 @SmallTest
153 @Feature({"Chromoting"})
154 public static void testPromisedEvent() {
155 Thread thread = new Thread(new Runnable() {
156 @Override
157 public void run() {
158 assertNull(Looper.myLooper());
159 Event.Raisable<Object> event = new Event.PromisedRaisable<>();
160 final List<Object> called1 = new ArrayList<>();
161 final List<Object> called2 = new ArrayList<>();
162 final List<Object> called3 = new ArrayList<>();
163 final List<Object> called4 = new ArrayList<>();
164 final List<Object> parameters = new ArrayList<>();
165 event.add(new Event.ParameterRunnable<Object>() {
166 @Override
167 public void run(Object obj) {
168 called1.add(obj);
169 }
170 });
171 Object parameter = new Object();
172 event.raise(parameter);
173 parameters.add(parameter);
174 event.add(new Event.ParameterRunnable<Object>() {
175 @Override
176 public void run(Object obj) {
177 called2.add(obj);
178 }
179 });
180 parameter = new Object();
181 event.raise(parameter);
182 parameters.add(parameter);
183 event.add(new Event.ParameterRunnable<Object>() {
184 @Override
185 public void run(Object obj) {
186 called3.add(obj);
187 }
188 });
189 parameter = new Object();
190 event.raise(parameter);
191 parameters.add(parameter);
192 event.add(new Event.ParameterRunnable<Object>() {
193 @Override
194 public void run(Object obj) {
195 called4.add(obj);
196 }
197 });
198
199 assertEquals(called1.size(), 3);
200 assertEquals(called2.size(), 3);
201 assertEquals(called3.size(), 2);
202 assertEquals(called4.size(), 1);
203
204 for (int i = 0; i < 3; i++) {
205 assertTrue(called1.get(i) == parameters.get(i));
206 assertTrue(called2.get(i) == parameters.get(i));
207 }
208 for (int i = 0; i < 2; i++) {
209 assertTrue(called3.get(i) == parameters.get(i + 1));
210 }
211 assertTrue(called4.get(0) == parameters.get(2));
212 }
213 });
214 thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
215 @Override
216 public void uncaughtException(Thread t, Throwable e) {
217 // Forward exceptions from test thread.
218 assertFalse(true);
219 }
220 });
221 thread.start();
222 try {
223 thread.join();
224 } catch (InterruptedException ex) { }
225 }
226
227 @SmallTest
228 @Feature({"Chromoting"})
229 public static void testPromisedEventWithLooper() {
230 assertNotNull(Looper.myLooper());
231 Event.Raisable<Object> event = new Event.PromisedRaisable<>();
232 final List<Object> called1 = new ArrayList<>();
233 final List<Object> called2 = new ArrayList<>();
234 final List<Object> called3 = new ArrayList<>();
235 final List<Object> called4 = new ArrayList<>();
236 final List<Object> parameters = new ArrayList<>();
237 event.add(new Event.ParameterRunnable<Object>() {
238 @Override
239 public void run(Object obj) {
240 called1.add(obj);
241 }
242 });
243 Object parameter = new Object();
244 event.raise(parameter);
245 parameters.add(parameter);
246 event.add(new Event.ParameterRunnable<Object>() {
247 @Override
248 public void run(Object obj) {
249 called2.add(obj);
250 }
251 });
252 parameter = new Object();
253 event.raise(parameter);
254 parameters.add(parameter);
255 event.add(new Event.ParameterRunnable<Object>() {
256 @Override
257 public void run(Object obj) {
258 called3.add(obj);
259 }
260 });
261 parameter = new Object();
262 event.raise(parameter);
263 parameters.add(parameter);
264 event.add(new Event.ParameterRunnable<Object>() {
265 @Override
266 public void run(Object obj) {
267 called4.add(obj);
268 }
269 });
270
271 Handler h = new Handler(Looper.myLooper());
272 h.post(new Runnable() {
273 @Override
274 public void run() {
275 Looper.myLooper().quit();
276 }
277 });
278 Looper.loop();
279
280 assertEquals(called1.size(), 3);
281 assertEquals(called2.size(), 3);
282 assertEquals(called3.size(), 2);
283 assertEquals(called4.size(), 1);
284
285 for (int i = 0; i < 3; i++) {
286 assertTrue(called1.get(i) == parameters.get(i));
287 }
288 assertTrue(called2.get(0) == parameters.get(1));
289 for (int i = 0; i < 2; i++) {
290 assertTrue(called2.get(i + 1) == parameters.get(2));
291 assertTrue(called3.get(i) == parameters.get(2));
292 }
293 assertTrue(called4.get(0) == parameters.get(2));
294 }
146 } 295 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698