@Override public void run() { cs.test(); } };
@Test public void cancelOnArrival() { CompletableSubject.create() .test(true) .assertEmpty(); }
@Test public void addRemoveRace() { for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { final CompletableSubject cs = CompletableSubject.create(); final TestObserver<Void> to = cs.test(); Runnable r1 = new Runnable() { @Override public void run() { cs.test(); } }; Runnable r2 = new Runnable() { @Override public void run() { to.cancel(); } }; TestHelper.race(r1, r2); } } }
@Test public void nullThrowable() { CompletableSubject cs = CompletableSubject.create(); try { cs.onError(null); fail("No NullPointerException thrown"); } catch (NullPointerException ex) { assertEquals("onError called with null. Null values are generally not allowed in 2.x operators and sources.", ex.getMessage()); } cs.test().assertEmpty().cancel();; }
@Test public void once() { CompletableSubject cs = CompletableSubject.create(); TestObserver<Void> to = cs.test(); cs.onComplete(); List<Throwable> errors = TestHelper.trackPluginErrors(); try { cs.onError(new IOException()); TestHelper.assertUndeliverable(errors, 0, IOException.class); } finally { RxJavaPlugins.reset(); } cs.onComplete(); to.assertResult(); }
@Test public void error() { CompletableSubject cs = CompletableSubject.create(); assertFalse(cs.hasComplete()); assertFalse(cs.hasThrowable()); assertNull(cs.getThrowable()); assertFalse(cs.hasObservers()); assertEquals(0, cs.observerCount()); TestObserver<Void> to = cs.test(); to.assertEmpty(); assertTrue(cs.hasObservers()); assertEquals(1, cs.observerCount()); cs.onError(new IOException()); assertFalse(cs.hasComplete()); assertTrue(cs.hasThrowable()); assertTrue(cs.getThrowable().toString(), cs.getThrowable() instanceof IOException); assertFalse(cs.hasObservers()); assertEquals(0, cs.observerCount()); to.assertFailure(IOException.class); cs.test().assertFailure(IOException.class); assertFalse(cs.hasComplete()); assertTrue(cs.hasThrowable()); assertTrue(cs.getThrowable().toString(), cs.getThrowable() instanceof IOException); assertFalse(cs.hasObservers()); assertEquals(0, cs.observerCount()); }
@Test public void complete() { CompletableSubject cs = CompletableSubject.create(); assertFalse(cs.hasComplete()); assertFalse(cs.hasThrowable()); assertNull(cs.getThrowable()); assertFalse(cs.hasObservers()); assertEquals(0, cs.observerCount()); TestObserver<Void> to = cs.test(); to.assertEmpty(); assertTrue(cs.hasObservers()); assertEquals(1, cs.observerCount()); cs.onComplete(); assertTrue(cs.hasComplete()); assertFalse(cs.hasThrowable()); assertNull(cs.getThrowable()); assertFalse(cs.hasObservers()); assertEquals(0, cs.observerCount()); to.assertResult(); cs.test().assertResult(); assertTrue(cs.hasComplete()); assertFalse(cs.hasThrowable()); assertNull(cs.getThrowable()); assertFalse(cs.hasObservers()); assertEquals(0, cs.observerCount()); }