|
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