|
15 | 15 | */
|
16 | 16 | package rx.internal.operators;
|
17 | 17 |
|
18 |
| -import static org.junit.Assert.assertEquals; |
19 |
| -import static org.junit.Assert.assertNotNull; |
20 |
| -import static org.junit.Assert.fail; |
21 |
| -import static org.mockito.Matchers.any; |
22 |
| -import static org.mockito.Matchers.anyInt; |
23 |
| -import static org.mockito.Mockito.inOrder; |
24 |
| -import static org.mockito.Mockito.mock; |
25 |
| -import static org.mockito.Mockito.never; |
26 |
| -import static org.mockito.Mockito.times; |
27 |
| -import static org.mockito.Mockito.verify; |
28 |
| - |
29 |
| -import java.util.ArrayList; |
30 |
| -import java.util.List; |
31 |
| - |
32 | 18 | import org.junit.Before;
|
33 | 19 | import org.junit.Test;
|
34 | 20 | import org.mockito.InOrder;
|
35 | 21 | import org.mockito.Mock;
|
36 | 22 | import org.mockito.MockitoAnnotations;
|
37 |
| - |
38 | 23 | import rx.Observable;
|
39 | 24 | import rx.Observable.OnSubscribe;
|
40 | 25 | import rx.Observer;
|
41 | 26 | import rx.Subscriber;
|
42 | 27 | import rx.exceptions.CompositeException;
|
43 | 28 | import rx.exceptions.TestException;
|
44 | 29 |
|
| 30 | +import java.util.ArrayList; |
| 31 | +import java.util.List; |
| 32 | +import java.util.concurrent.CountDownLatch; |
| 33 | + |
| 34 | +import static org.junit.Assert.*; |
| 35 | +import static org.mockito.Matchers.any; |
| 36 | +import static org.mockito.Matchers.anyInt; |
| 37 | +import static org.mockito.Mockito.*; |
| 38 | + |
45 | 39 | public class OperatorMergeDelayErrorTest {
|
46 | 40 |
|
47 | 41 | @Mock
|
@@ -289,6 +283,35 @@ public void testMergeArrayWithThreading() {
|
289 | 283 | verify(stringObserver, times(1)).onCompleted();
|
290 | 284 | }
|
291 | 285 |
|
| 286 | + @Test(timeout=1000L) |
| 287 | + public void testSynchronousError() { |
| 288 | + final Observable<Observable<String>> o1 = Observable.error(new RuntimeException("unit test")); |
| 289 | + |
| 290 | + final CountDownLatch latch = new CountDownLatch(1); |
| 291 | + Observable.mergeDelayError(o1).subscribe(new Subscriber<String>() { |
| 292 | + @Override |
| 293 | + public void onCompleted() { |
| 294 | + fail("Expected onError path"); |
| 295 | + } |
| 296 | + |
| 297 | + @Override |
| 298 | + public void onError(Throwable e) { |
| 299 | + latch.countDown(); |
| 300 | + } |
| 301 | + |
| 302 | + @Override |
| 303 | + public void onNext(String s) { |
| 304 | + fail("Expected onError path"); |
| 305 | + } |
| 306 | + }); |
| 307 | + |
| 308 | + try { |
| 309 | + latch.await(); |
| 310 | + } catch (InterruptedException ex) { |
| 311 | + fail("interrupted"); |
| 312 | + } |
| 313 | + } |
| 314 | + |
292 | 315 | private static class TestSynchronousObservable implements Observable.OnSubscribe<String> {
|
293 | 316 |
|
294 | 317 | @Override
|
|
0 commit comments