use of io.reactivex.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class ScheduledRunnableTest method setFutureCancelRace.
@Test
public void setFutureCancelRace() {
for (int i = 0; i < 500; i++) {
CompositeDisposable set = new CompositeDisposable();
final ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, set);
set.add(run);
final FutureTask<Object> ft = new FutureTask<Object>(Functions.EMPTY_RUNNABLE, 0);
Runnable r1 = new Runnable() {
@Override
public void run() {
run.setFuture(ft);
}
};
Runnable r2 = new Runnable() {
@Override
public void run() {
run.dispose();
}
};
TestHelper.race(r1, r2);
assertEquals(0, set.size());
}
}
use of io.reactivex.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class ScheduledRunnableTest method dispose.
@Test
public void dispose() {
CompositeDisposable set = new CompositeDisposable();
ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, set);
set.add(run);
assertFalse(run.isDisposed());
set.dispose();
assertTrue(run.isDisposed());
}
use of io.reactivex.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class ScheduledRunnableTest method runDispose.
@Test
public void runDispose() {
for (int i = 0; i < 500; i++) {
CompositeDisposable set = new CompositeDisposable();
final ScheduledRunnable run = new ScheduledRunnable(Functions.EMPTY_RUNNABLE, set);
set.add(run);
Runnable r1 = new Runnable() {
@Override
public void run() {
run.call();
}
};
Runnable r2 = new Runnable() {
@Override
public void run() {
run.dispose();
}
};
TestHelper.race(r1, r2);
assertEquals(0, set.size());
}
}
use of io.reactivex.disposables.CompositeDisposable in project RxJava by ReactiveX.
the class TrampolineSchedulerTest method testNestedTrampolineWithUnsubscribe.
@Test
public void testNestedTrampolineWithUnsubscribe() {
final ArrayList<String> workDone = new ArrayList<String>();
final CompositeDisposable workers = new CompositeDisposable();
Worker worker = Schedulers.trampoline().createWorker();
try {
workers.add(worker);
worker.schedule(new Runnable() {
@Override
public void run() {
workers.add(doWorkOnNewTrampoline("A", workDone));
}
});
final Worker worker2 = Schedulers.trampoline().createWorker();
workers.add(worker2);
worker2.schedule(new Runnable() {
@Override
public void run() {
workers.add(doWorkOnNewTrampoline("B", workDone));
// we unsubscribe worker2 ... it should not affect work scheduled on a separate Trampline.Worker
worker2.dispose();
}
});
assertEquals(6, workDone.size());
assertEquals(Arrays.asList("A.1", "A.B.1", "A.B.2", "B.1", "B.B.1", "B.B.2"), workDone);
} finally {
workers.dispose();
}
}
use of io.reactivex.disposables.CompositeDisposable in project mosby by sockeqwe.
the class MviBasePresenter method bindIntentActually.
@MainThread
private <I> Observable<I> bindIntentActually(@NonNull V view, @NonNull IntentRelayBinderPair<?> relayBinderPair) {
if (view == null) {
throw new NullPointerException("View is null. This is a Mosby internal bug. Please file an issue at https://github.com/sockeqwe/mosby/issues");
}
if (relayBinderPair == null) {
throw new NullPointerException("IntentRelayBinderPair is null. This is a Mosby internal bug. Please file an issue at https://github.com/sockeqwe/mosby/issues");
}
PublishSubject<I> intentRelay = (PublishSubject<I>) relayBinderPair.intentRelaySubject;
if (intentRelay == null) {
throw new NullPointerException("IntentRelay from binderPair is null. This is a Mosby internal bug. Please file an issue at https://github.com/sockeqwe/mosby/issues");
}
ViewIntentBinder<V, I> intentBinder = (ViewIntentBinder<V, I>) relayBinderPair.intentBinder;
if (intentBinder == null) {
throw new NullPointerException(ViewIntentBinder.class.getSimpleName() + " is null. This is a Mosby internal bug. Please file an issue at https://github.com/sockeqwe/mosby/issues");
}
Observable<I> intent = intentBinder.bind(view);
if (intent == null) {
throw new NullPointerException("Intent Observable returned from Binder " + intentBinder + " is null");
}
if (intentDisposals == null) {
intentDisposals = new CompositeDisposable();
}
intentDisposals.add(intent.subscribeWith(new DisposableIntentObserver<I>(intentRelay)));
return intentRelay;
}
Aggregations