@Test public void cancelShouldUnsubscribe() { TestSubject<String> single = TestSubject.create(new TestScheduler()); assertFalse(single.hasObservers()); T future = toFuture(single.toSingle()); assertTrue(single.hasObservers()); future.cancel(true); assertFalse(single.hasObservers()); }
@Before public void setUp() throws Exception { mLifecycleScheduler = new TestScheduler(); mLifecycleSubject = TestSubject.create(mLifecycleScheduler); mEventScheduler = new TestScheduler(); mEventSubject = TestSubject.create(mEventScheduler); mTestHost = new TestHost(mEventSubject.asObservable(), mLifecycleSubject.asObservable()); }
@Test public void testFlakyReplayBehavior() { final TestScheduler scheduler = new TestScheduler(); final TestSubject<Integer> subject = TestSubject.create(scheduler); final TestSubscriber<Integer> subscriber = new TestSubscriber<>(); final ConnectableObservable<Integer> sums = subject.scan(1, (a, b) -> a + b).replay(1); sums.connect(); subject.onNext(2); subject.onNext(3); scheduler.triggerActions(); sums.subscribe(subscriber); // subscriber.assertValueCount(1); subscriber.assertValues(6); }
@Test public void testExpectedReplayBehavior() { final TestScheduler scheduler = new TestScheduler(); final TestSubject<Integer> subject = TestSubject.create(scheduler); final TestSubscriber<Integer> subscriber = new TestSubscriber<>(); final ConnectableObservable<Integer> sums = subject.scan((a, b) -> a + b).replay(1); sums.connect(); subject.onNext(1); subject.onNext(2); subject.onNext(3); scheduler.triggerActions(); sums.subscribe(subscriber); subscriber.assertValueCount(1); subscriber.assertValues(6); }
@SuppressWarnings("unchecked") @Test public void multipleLeftTerminalRightOtherThread() { TestScheduler otherScheduler = Schedulers.test(); TestSubject<EventB> eventBSubject = TestSubject.create(otherScheduler); Observable<Either<EventA, EventB>> either = RxEither.from(eventASubject, eventBSubject); either.subscribe(subscriber); eventASubject.onNext(eventA); eventBSubject.onNext(eventB); eventBSubject.onCompleted(); eventASubject.onNext(eventA); testScheduler.triggerActions(); subscriber.assertNotCompleted(); otherScheduler.triggerActions(); subscriber.assertNoErrors(); subscriber.assertCompleted(); subscriber.assertUnsubscribed(); subscriber.assertValues(Either.<EventA, EventB>left(eventA), Either.<EventA, EventB>left(eventA), Either.<EventA, EventB>right(eventB)); }