@Test public void overrideInitComputationSchedulerCrashes() { // fail when Callable is null try { RxJavaCommonPlugins.initComputationScheduler(null); fail("Should have thrown NullPointerException"); } catch (NullPointerException npe) { assertEquals("Scheduler Callable can't be null", npe.getMessage()); } // fail when Callable result is null try { RxJavaCommonPlugins.initComputationScheduler(nullResultCallable); fail("Should have thrown NullPointerException"); } catch (NullPointerException npe) { assertEquals("Scheduler Callable result can't be null", npe.getMessage()); } }
@Test public void overrideInitComputationScheduler() { final Scheduler s = Schedulers.computation(); // make sure the Schedulers is initialized Callable<Scheduler> c = new Callable<Scheduler>() { @Override public Scheduler call() throws Exception { return s; } }; try { RxJavaCommonPlugins.setInitComputationSchedulerHandler(initReplaceWithImmediate); assertSame(ImmediateThinScheduler.INSTANCE, RxJavaCommonPlugins.initComputationScheduler(c)); } finally { RxJavaCommonPlugins.reset(); } // make sure the reset worked assertSame(s, RxJavaCommonPlugins.initComputationScheduler(c)); }
@Test public void testDefaultComputationSchedulerIsInitializedLazily() { // unsafe default Scheduler Callable should not be evaluated try { RxJavaCommonPlugins.setInitComputationSchedulerHandler(initReplaceWithImmediate); RxJavaCommonPlugins.initComputationScheduler(unsafeDefault); } finally { RxJavaCommonPlugins.reset(); } // make sure the reset worked assertNotSame(ImmediateThinScheduler.INSTANCE, Schedulers.computation()); }
assertSame(s, RxJavaCommonPlugins.initComputationScheduler(c));