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