|
32 | 32 | import rx.Subscription;
|
33 | 33 | import rx.concurrency.Schedulers;
|
34 | 34 | import rx.concurrency.TestScheduler;
|
35 |
| -import rx.observables.ConnectableObservable; |
36 | 35 | import rx.subscriptions.Subscriptions;
|
37 | 36 | import rx.util.functions.Action0;
|
38 | 37 |
|
@@ -165,5 +164,46 @@ public void testWithMultipleSubscribersStartingAtSameTime() {
|
165 | 164 | verify(observer2, times(1)).onCompleted();
|
166 | 165 | verify(observer2, never()).onError(any(Throwable.class));
|
167 | 166 | }
|
| 167 | + |
| 168 | + @Test |
| 169 | + public void testWithMultipleStaggeredSubscribers() { |
| 170 | + Observable<Long> w = Observable.create(OperationInterval.interval(1, TimeUnit.SECONDS, scheduler)); |
| 171 | + Subscription sub1 = w.subscribe(observer); |
| 172 | + |
| 173 | + verify(observer, never()).onNext(anyLong()); |
| 174 | + |
| 175 | + scheduler.advanceTimeTo(2, TimeUnit.SECONDS); |
| 176 | + Subscription sub2 = w.subscribe(observer2); |
| 177 | + |
| 178 | + InOrder inOrder1 = inOrder(observer); |
| 179 | + inOrder1.verify(observer, times(1)).onNext(0L); |
| 180 | + inOrder1.verify(observer, times(1)).onNext(1L); |
| 181 | + inOrder1.verify(observer, never()).onNext(2L); |
| 182 | + |
| 183 | + verify(observer, never()).onCompleted(); |
| 184 | + verify(observer, never()).onError(any(Throwable.class)); |
| 185 | + verify(observer2, never()).onNext(anyLong()); |
| 186 | + |
| 187 | + scheduler.advanceTimeTo(4, TimeUnit.SECONDS); |
| 188 | + |
| 189 | + inOrder1.verify(observer, times(1)).onNext(2L); |
| 190 | + inOrder1.verify(observer, times(1)).onNext(3L); |
| 191 | + inOrder1.verify(observer, never()).onNext(4L); |
| 192 | + |
| 193 | + InOrder inOrder2 = inOrder(observer2); |
| 194 | + inOrder2.verify(observer2, times(1)).onNext(0L); |
| 195 | + inOrder2.verify(observer2, times(1)).onNext(1L); |
| 196 | + |
| 197 | + sub1.unsubscribe(); |
| 198 | + sub2.unsubscribe(); |
| 199 | + |
| 200 | + inOrder1.verify(observer, never()).onNext(anyLong()); |
| 201 | + inOrder1.verify(observer, times(1)).onCompleted(); |
| 202 | + verify(observer, never()).onError(any(Throwable.class)); |
| 203 | + |
| 204 | + inOrder2.verify(observer2, never()).onNext(2L); |
| 205 | + inOrder2.verify(observer2, times(1)).onCompleted(); |
| 206 | + verify(observer2, never()).onError(any(Throwable.class)); |
| 207 | + } |
168 | 208 | }
|
169 | 209 | }
|
0 commit comments