@Test public void testMaterialize2() { final TestAsyncErrorObservable o1 = new TestAsyncErrorObservable("one", "two", "three"); TestObserver NbpObserver = new TestObserver(); NbpObservable<Try<Optional<String>>> m = NbpObservable.create(o1).materialize(); m.subscribe(NbpObserver); try { o1.t.join(); } catch (InterruptedException e) { throw new RuntimeException(e); } assertFalse(NbpObserver.onError); assertTrue(NbpObserver.onCompleted); assertEquals(4, NbpObserver.notifications.size()); assertEquals("one", Notification.getValue(NbpObserver.notifications.get(0))); assertTrue(Notification.isNext(NbpObserver.notifications.get(0))); assertEquals("two", Notification.getValue(NbpObserver.notifications.get(1))); assertTrue(Notification.isNext(NbpObserver.notifications.get(1))); assertEquals("three", Notification.getValue(NbpObserver.notifications.get(2))); assertTrue(Notification.isNext(NbpObserver.notifications.get(2))); assertTrue(Notification.isComplete(NbpObserver.notifications.get(3))); }
@Test public void testMaterialize1() { // null will cause onError to be triggered before "three" can be // returned final TestAsyncErrorObservable o1 = new TestAsyncErrorObservable("one", "two", null, "three"); TestObserver NbpObserver = new TestObserver(); NbpObservable<Try<Optional<String>>> m = NbpObservable.create(o1).materialize(); m.subscribe(NbpObserver); try { o1.t.join(); } catch (InterruptedException e) { throw new RuntimeException(e); } assertFalse(NbpObserver.onError); assertTrue(NbpObserver.onCompleted); assertEquals(3, NbpObserver.notifications.size()); assertEquals("one", NbpObserver.notifications.get(0).value().get()); assertTrue(Notification.isNext(NbpObserver.notifications.get(0))); assertEquals("two", Notification.getValue(NbpObserver.notifications.get(1))); assertTrue(Notification.isNext(NbpObserver.notifications.get(1))); assertEquals(NullPointerException.class, NbpObserver.notifications.get(2).error().getClass()); assertTrue(Notification.isError(NbpObserver.notifications.get(2))); }
@Test public void testMultipleSubscribes() throws InterruptedException, ExecutionException { final TestAsyncErrorObservable o = new TestAsyncErrorObservable("one", "two", null, "three"); NbpObservable<Try<Optional<String>>> m = NbpObservable.create(o).materialize(); assertEquals(3, m.toList().toBlocking().toFuture().get().size()); assertEquals(3, m.toList().toBlocking().toFuture().get().size()); }