Skip to content

Commit 2d810be

Browse files
author
Joachim Hofer
committed
added another test against multiple staggered subscribers
1 parent bd9d4f8 commit 2d810be

File tree

1 file changed

+41
-1
lines changed

1 file changed

+41
-1
lines changed

rxjava-core/src/main/java/rx/operators/OperationInterval.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import rx.Subscription;
3333
import rx.concurrency.Schedulers;
3434
import rx.concurrency.TestScheduler;
35-
import rx.observables.ConnectableObservable;
3635
import rx.subscriptions.Subscriptions;
3736
import rx.util.functions.Action0;
3837

@@ -165,5 +164,46 @@ public void testWithMultipleSubscribersStartingAtSameTime() {
165164
verify(observer2, times(1)).onCompleted();
166165
verify(observer2, never()).onError(any(Throwable.class));
167166
}
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+
}
168208
}
169209
}

0 commit comments

Comments
 (0)