use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class ObservableTimeoutTests method onNextOnTimeoutRaceFallback.
@Test
public void onNextOnTimeoutRaceFallback() {
for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) {
final TestScheduler sch = new TestScheduler();
final PublishSubject<Integer> ps = PublishSubject.create();
TestObserverEx<Integer> to = ps.timeout(1, TimeUnit.SECONDS, sch, Observable.just(2)).to(TestHelper.<Integer>testConsumer());
Runnable r1 = new Runnable() {
@Override
public void run() {
ps.onNext(1);
}
};
Runnable r2 = new Runnable() {
@Override
public void run() {
sch.advanceTimeBy(1, TimeUnit.SECONDS);
}
};
TestHelper.race(r1, r2);
if (to.isTerminated()) {
int c = to.values().size();
if (c == 1) {
int v = to.values().get(0);
assertTrue("" + v, v == 1 || v == 2);
} else {
to.assertResult(1, 2);
}
} else {
to.assertValuesOnly(1);
}
}
}
use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class ObservableTimeoutTests method onNextOnTimeoutRace.
@Test
public void onNextOnTimeoutRace() {
for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) {
final TestScheduler sch = new TestScheduler();
final PublishSubject<Integer> ps = PublishSubject.create();
TestObserverEx<Integer> to = ps.timeout(1, TimeUnit.SECONDS, sch).to(TestHelper.<Integer>testConsumer());
Runnable r1 = new Runnable() {
@Override
public void run() {
ps.onNext(1);
}
};
Runnable r2 = new Runnable() {
@Override
public void run() {
sch.advanceTimeBy(1, TimeUnit.SECONDS);
}
};
TestHelper.race(r1, r2);
if (to.values().size() != 0) {
if (to.errors().size() != 0) {
to.assertFailure(TimeoutException.class, 1);
to.assertErrorMessage(timeoutMessage(1, TimeUnit.SECONDS));
} else {
to.assertValuesOnly(1);
}
} else {
to.assertFailure(TimeoutException.class);
to.assertErrorMessage(timeoutMessage(1, TimeUnit.SECONDS));
}
}
}
use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class ObservableThrottleLatestTest method normalEmitLast.
@Test
public void normalEmitLast() {
TestScheduler sch = new TestScheduler();
PublishSubject<Integer> ps = PublishSubject.create();
TestObserver<Integer> to = ps.throttleLatest(1, TimeUnit.SECONDS, sch, true).test();
ps.onNext(1);
to.assertValuesOnly(1);
ps.onNext(2);
to.assertValuesOnly(1);
ps.onNext(3);
to.assertValuesOnly(1);
sch.advanceTimeBy(1, TimeUnit.SECONDS);
to.assertValuesOnly(1, 3);
ps.onNext(4);
to.assertValuesOnly(1, 3);
ps.onNext(5);
sch.advanceTimeBy(1, TimeUnit.SECONDS);
to.assertValuesOnly(1, 3, 5);
sch.advanceTimeBy(1, TimeUnit.SECONDS);
to.assertValuesOnly(1, 3, 5);
ps.onNext(6);
to.assertValuesOnly(1, 3, 5, 6);
ps.onNext(7);
ps.onComplete();
to.assertResult(1, 3, 5, 6, 7);
sch.advanceTimeBy(1, TimeUnit.SECONDS);
to.assertResult(1, 3, 5, 6, 7);
}
use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class ObservableThrottleLatestTest method reentrantComplete.
@Test
public void reentrantComplete() {
TestScheduler sch = new TestScheduler();
final PublishSubject<Integer> ps = PublishSubject.create();
TestObserver<Integer> to = new TestObserver<Integer>() {
@Override
public void onNext(Integer t) {
super.onNext(t);
if (t == 1) {
ps.onNext(2);
}
if (t == 2) {
ps.onComplete();
}
}
};
ps.throttleLatest(1, TimeUnit.SECONDS, sch).subscribe(to);
ps.onNext(1);
sch.advanceTimeBy(1, TimeUnit.SECONDS);
to.assertResult(1, 2);
}
use of io.reactivex.rxjava3.subjects.PublishSubject in project RxJava by ReactiveX.
the class ObservableTakeTimedTest method takeTimed.
@Test
public void takeTimed() {
TestScheduler scheduler = new TestScheduler();
PublishSubject<Integer> source = PublishSubject.create();
Observable<Integer> result = source.take(1, TimeUnit.SECONDS, scheduler);
Observer<Object> o = TestHelper.mockObserver();
result.subscribe(o);
source.onNext(1);
source.onNext(2);
source.onNext(3);
scheduler.advanceTimeBy(1, TimeUnit.SECONDS);
source.onNext(4);
InOrder inOrder = inOrder(o);
inOrder.verify(o).onNext(1);
inOrder.verify(o).onNext(2);
inOrder.verify(o).onNext(3);
inOrder.verify(o).onComplete();
inOrder.verifyNoMoreInteractions();
verify(o, never()).onNext(4);
verify(o, never()).onError(any(Throwable.class));
}
Aggregations