BAEL - 1060

Review comments incorporated
This commit is contained in:
TINO 2019-03-11 22:23:46 +03:00
parent c8ee65b1d2
commit 9f2f10dfa2

View File

@ -1,5 +1,8 @@
package com.baeldung.rxjava; package com.baeldung.rxjava;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Test; import org.junit.Test;
import io.reactivex.Completable; import io.reactivex.Completable;
@ -14,203 +17,190 @@ import io.reactivex.schedulers.Schedulers;
public class RxJavaHooksUnitTest { public class RxJavaHooksUnitTest {
private boolean initHookCalled = false;
private boolean hookCalled = false;
@Test
public void givenObservable_whenError_shouldExecuteTheHook() {
RxJavaPlugins.setErrorHandler(throwable -> {
hookCalled = true;
});
Observable.error(new IllegalStateException())
.subscribe();
assertTrue(hookCalled);
}
@Test @Test
public void givenCompletable_whenAssembled_shouldExecuteTheHook() { public void givenCompletable_whenAssembled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnCompletableAssembly(completable -> { RxJavaPlugins.setOnCompletableAssembly(completable -> {
System.out.println("Assembling Completable"); hookCalled = true;
return completable; return completable;
}); });
Completable.fromSingle(Single.just(1)); Completable.fromSingle(Single.just(1));
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenCompletable_whenSubscribed_shouldExecuteTheHook() { public void givenCompletable_whenSubscribed_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnCompletableSubscribe((completable, observer) -> { RxJavaPlugins.setOnCompletableSubscribe((completable, observer) -> {
System.out.println("Subscribing to Completable"); hookCalled = true;
return observer; return observer;
}); });
Completable.fromSingle(Single.just(1)) Completable.fromSingle(Single.just(1))
.test(true); .test();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenObservable_whenAssembled_shouldExecuteTheHook() { public void givenObservable_whenAssembled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnObservableAssembly(observable -> { RxJavaPlugins.setOnObservableAssembly(observable -> {
System.out.println("Assembling Observable"); hookCalled = true;
return observable; return observable;
}); });
Observable.range(1, 10); Observable.range(1, 10);
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenObservable_whenSubscribed_shouldExecuteTheHook() { public void givenObservable_whenSubscribed_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnObservableSubscribe((observable, observer) -> { RxJavaPlugins.setOnObservableSubscribe((observable, observer) -> {
System.out.println("Suscribing to Observable"); hookCalled = true;
return observer; return observer;
}); });
Observable.range(1, 10) Observable.range(1, 10)
.test(true); .test();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenConnectableObservable_whenAssembled_shouldExecuteTheHook() { public void givenConnectableObservable_whenAssembled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnConnectableObservableAssembly(connectableObservable -> { RxJavaPlugins.setOnConnectableObservableAssembly(connectableObservable -> {
System.out.println("Assembling ConnectableObservable"); hookCalled = true;
return connectableObservable; return connectableObservable;
}); });
ConnectableObservable.range(1, 10) ConnectableObservable.range(1, 10)
.publish() .publish()
.connect(); .connect();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenFlowable_whenAssembled_shouldExecuteTheHook() { public void givenFlowable_whenAssembled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnFlowableAssembly(flowable -> { RxJavaPlugins.setOnFlowableAssembly(flowable -> {
System.out.println("Assembling Flowable"); hookCalled = true;
return flowable; return flowable;
}); });
Flowable.range(1, 10); Flowable.range(1, 10);
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenFlowable_whenSubscribed_shouldExecuteTheHook() { public void givenFlowable_whenSubscribed_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnFlowableSubscribe((flowable, observer) -> { RxJavaPlugins.setOnFlowableSubscribe((flowable, observer) -> {
System.out.println("Suscribing to Flowable"); hookCalled = true;
return observer; return observer;
}); });
Flowable.range(1, 10) Flowable.range(1, 10)
.test(); .test();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenConnectableFlowable_whenAssembled_shouldExecuteTheHook() { public void givenConnectableFlowable_whenAssembled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnConnectableFlowableAssembly(connectableFlowable -> { RxJavaPlugins.setOnConnectableFlowableAssembly(connectableFlowable -> {
System.out.println("Assembling ConnectableFlowable"); hookCalled = true;
return connectableFlowable; return connectableFlowable;
}); });
ConnectableFlowable.range(1, 10) ConnectableFlowable.range(1, 10)
.publish() .publish()
.connect(); .connect();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenParallel_whenAssembled_shouldExecuteTheHook() { public void givenParallel_whenAssembled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnParallelAssembly(parallelFlowable -> { RxJavaPlugins.setOnParallelAssembly(parallelFlowable -> {
System.out.println("Assembling ParallelFlowable"); hookCalled = true;
return parallelFlowable; return parallelFlowable;
}); });
Flowable.range(1, 10) Flowable.range(1, 10)
.parallel(); .parallel();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenMaybe_whenAssembled_shouldExecuteTheHook() { public void givenMaybe_whenAssembled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnMaybeAssembly(maybe -> { RxJavaPlugins.setOnMaybeAssembly(maybe -> {
System.out.println("Assembling Maybe"); hookCalled = true;
return maybe; return maybe;
}); });
Maybe.just(1); Maybe.just(1);
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenMaybe_whenSubscribed_shouldExecuteTheHook() { public void givenMaybe_whenSubscribed_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnMaybeSubscribe((maybe, observer) -> { RxJavaPlugins.setOnMaybeSubscribe((maybe, observer) -> {
System.out.println("Suscribing to Maybe"); hookCalled = true;
return observer; return observer;
}); });
Maybe.just(1) Maybe.just(1)
.test(); .test();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenSingle_whenAssembled_shouldExecuteTheHook() { public void givenSingle_whenAssembled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnSingleAssembly(single -> { RxJavaPlugins.setOnSingleAssembly(single -> {
System.out.println("Assembling Single"); hookCalled = true;
return single; return single;
}); });
Single.just(1); Single.just(1);
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenSingle_whenSubscribed_shouldExecuteTheHook() { public void givenSingle_whenSubscribed_shouldExecuteTheHook() {
try {
RxJavaPlugins.setOnSingleSubscribe((single, observer) -> { RxJavaPlugins.setOnSingleSubscribe((single, observer) -> {
System.out.println("Suscribing to Single"); hookCalled = true;
return observer; return observer;
}); });
Single.just(1) Single.just(1)
.test(); .test();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenAnyScheduler_whenCalled_shouldExecuteTheHook() { public void givenAnyScheduler_whenCalled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setScheduleHandler((runnable) -> { RxJavaPlugins.setScheduleHandler((runnable) -> {
System.out.println("Executing Scheduler"); hookCalled = true;
return runnable; return runnable;
}); });
@ -218,25 +208,23 @@ public class RxJavaHooksUnitTest {
.map(v -> v * 2) .map(v -> v * 2)
.subscribeOn(Schedulers.single()) .subscribeOn(Schedulers.single())
.test(); .test();
hookCalled = false;
Observable.range(1, 10) Observable.range(1, 10)
.map(v -> v * 2) .map(v -> v * 2)
.subscribeOn(Schedulers.computation()) .subscribeOn(Schedulers.computation())
.test(); .test();
} finally { assertTrue(hookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenComputationScheduler_whenCalled_shouldExecuteTheHooks() { public void givenComputationScheduler_whenCalled_shouldExecuteTheHooks() {
try {
RxJavaPlugins.setInitComputationSchedulerHandler((scheduler) -> { RxJavaPlugins.setInitComputationSchedulerHandler((scheduler) -> {
System.out.println("Initializing Computation Scheduler"); initHookCalled = true;
return scheduler.call(); return scheduler.call();
}); });
RxJavaPlugins.setComputationSchedulerHandler((scheduler) -> { RxJavaPlugins.setComputationSchedulerHandler((scheduler) -> {
System.out.println("Executing Computation Scheduler"); hookCalled = true;
return scheduler; return scheduler;
}); });
@ -244,21 +232,19 @@ public class RxJavaHooksUnitTest {
.map(v -> v * 2) .map(v -> v * 2)
.subscribeOn(Schedulers.computation()) .subscribeOn(Schedulers.computation())
.test(); .test();
} finally { assertTrue(hookCalled && initHookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenIOScheduler_whenCalled_shouldExecuteTheHooks() { public void givenIOScheduler_whenCalled_shouldExecuteTheHooks() {
try {
RxJavaPlugins.setInitIoSchedulerHandler((scheduler) -> { RxJavaPlugins.setInitIoSchedulerHandler((scheduler) -> {
System.out.println("Initializing IO Scheduler"); initHookCalled = true;
return scheduler.call(); return scheduler.call();
}); });
RxJavaPlugins.setIoSchedulerHandler((scheduler) -> { RxJavaPlugins.setIoSchedulerHandler((scheduler) -> {
System.out.println("Executing IO Scheduler"); hookCalled = true;
return scheduler; return scheduler;
}); });
@ -266,21 +252,19 @@ public class RxJavaHooksUnitTest {
.map(v -> v * 2) .map(v -> v * 2)
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.test(); .test();
} finally { assertTrue(hookCalled && initHookCalled);
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenNewThreadScheduler_whenCalled_shouldExecuteTheHook() { public void givenNewThreadScheduler_whenCalled_shouldExecuteTheHook() {
try {
RxJavaPlugins.setInitNewThreadSchedulerHandler((scheduler) -> { RxJavaPlugins.setInitNewThreadSchedulerHandler((scheduler) -> {
System.out.println("Initializing newThread Scheduler"); initHookCalled = true;
return scheduler.call(); return scheduler.call();
}); });
RxJavaPlugins.setNewThreadSchedulerHandler((scheduler) -> { RxJavaPlugins.setNewThreadSchedulerHandler((scheduler) -> {
System.out.println("Executing newThread Scheduler"); hookCalled = true;
return scheduler; return scheduler;
}); });
@ -288,22 +272,19 @@ public class RxJavaHooksUnitTest {
.map(v -> v * 2) .map(v -> v * 2)
.subscribeOn(Schedulers.newThread()) .subscribeOn(Schedulers.newThread())
.test(); .test();
assertTrue(hookCalled && initHookCalled);
} finally {
RxJavaPlugins.reset();
}
} }
@Test @Test
public void givenSingleScheduler_whenCalled_shouldExecuteTheHooks() { public void givenSingleScheduler_whenCalled_shouldExecuteTheHooks() {
try {
RxJavaPlugins.setInitSingleSchedulerHandler((scheduler) -> { RxJavaPlugins.setInitSingleSchedulerHandler((scheduler) -> {
System.out.println("Initializing Single Scheduler"); initHookCalled = true;
return scheduler.call(); return scheduler.call();
}); });
RxJavaPlugins.setSingleSchedulerHandler((scheduler) -> { RxJavaPlugins.setSingleSchedulerHandler((scheduler) -> {
System.out.println("Executing Single Scheduler"); hookCalled = true;
return scheduler; return scheduler;
}); });
@ -311,19 +292,14 @@ public class RxJavaHooksUnitTest {
.map(v -> v * 2) .map(v -> v * 2)
.subscribeOn(Schedulers.single()) .subscribeOn(Schedulers.single())
.test(); .test();
assertTrue(hookCalled && initHookCalled);
} finally { }
@After
public void reset() {
initHookCalled = false;
hookCalled = false;
RxJavaPlugins.reset(); RxJavaPlugins.reset();
} }
}
@Test
public void givenObservable_whenError_shouldExecuteTheHook() {
RxJavaPlugins.setErrorHandler(throwable -> {
System.out.println("Handling error" + throwable.getCause());
});
Observable.error(new IllegalStateException())
.subscribe();
}
} }