@Test public void noEvents() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bind(lifecycle, CORRESPONDING_EVENTS)) .test(); stream.onNext("1"); stream.onNext("2"); testObserver.assertValues("1", "2"); testObserver.assertNotTerminated(); }
@Test public void noEvent() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bind(lifecycle)) .test(); stream.onNext("1"); stream.onNext("2"); testObserver.assertValues("1", "2"); testObserver.assertNotTerminated(); }
@Test public void noEvents() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bindUntilEvent(lifecycle, "stop")) .test(); stream.onNext("1"); stream.onNext("2"); testObserver.assertValues("1", "2"); testObserver.assertNotTerminated(); }
@Test public void oneWrongEvent() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bindUntilEvent(lifecycle, "stop")) .test(); stream.onNext("1"); lifecycle.onNext("keep going"); stream.onNext("2"); testObserver.assertValues("1", "2"); testObserver.assertNotTerminated(); }
@Test public void oneEvent() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bind(lifecycle)) .test(); stream.onNext("1"); lifecycle.onNext("stop"); stream.onNext("2"); testObserver.assertValues("1"); testObserver.assertComplete(); } }
@Test public void oneStartEvent() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bind(lifecycle, CORRESPONDING_EVENTS)) .test(); lifecycle.onNext("create"); stream.onNext("1"); stream.onNext("2"); testObserver.assertValues("1", "2"); testObserver.assertNotTerminated(); }
@Test public void twoOpenEvents() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bind(lifecycle, CORRESPONDING_EVENTS)) .test(); lifecycle.onNext("create"); stream.onNext("1"); lifecycle.onNext("start"); stream.onNext("2"); testObserver.assertValues("1", "2"); testObserver.assertNotTerminated(); }
@Test public void openAndCloseEvent() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bind(lifecycle, CORRESPONDING_EVENTS)) .test(); lifecycle.onNext("create"); stream.onNext("1"); lifecycle.onNext("destroy"); stream.onNext("2"); testObserver.assertValues("1"); testObserver.assertComplete(); }
@Test public void eventOutOfLifecycle() { PublishSubject<String> stream = PublishSubject.create(); PublishSubject<String> lifecycle = PublishSubject.create(); TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bind(lifecycle, CORRESPONDING_EVENTS)) .test(); // Event is out of lifecycle, but this just results in completing the stream lifecycle.onNext("destroy"); stream.onNext("1"); testObserver.assertNoValues(); testObserver.assertComplete(); }
@Test public void twoEvents() { TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bindUntilEvent(lifecycle, "stop")) .test(); stream.onNext("1"); lifecycle.onNext("keep going"); stream.onNext("2"); lifecycle.onNext("stop"); stream.onNext("3"); testObserver.assertValues("1", "2"); testObserver.assertComplete(); }
@Test public void eventThrowsBadException() { PublishSubject<String> stream = PublishSubject.create(); PublishSubject<String> lifecycle = PublishSubject.create(); TestObserver<String> testObserver = stream .compose(RxLifecycle.<String, String>bind(lifecycle, CORRESPONDING_EVENTS)) .test(); // We get an error from the function for this lifecycle event lifecycle.onNext("ick"); stream.onNext("1"); testObserver.assertNoValues(); // We only want to check for our IllegalArgumentException, but may have // to wade through a CompositeException to get at it. testObserver.assertError(new Predicate<Throwable>() { @Override public boolean test(Throwable throwable) throws Exception { if (throwable instanceof CompositeException) { CompositeException ce = (CompositeException) throwable; for (Throwable t : ce.getExceptions()) { if (t instanceof IllegalArgumentException) { return true; } } } return false; } }); }
@Test public void shouldRemoveResponseAfterErrorDelivery() throws InterruptedException { ObservableGroup group = observableManager.newGroup(); TestObserver<String> testObserver = new TestObserver<>(); PublishSubject<String> sourceObservable = PublishSubject.create(); sourceObservable.compose(group.transform(testObserver)).subscribe(testObserver); sourceObservable.onError(new RuntimeException("BOOM!")); testObserver.assertError(Exception.class); assertThat(group.hasObservables(fooObserver)).isEqualTo(false); }
@Test public void testDisposingObserver() { ObservableGroup group = observableManager.newGroup(); TestObserver<String> testObserver = new TestObserver<>(); PublishSubject<String> sourceObservable = PublishSubject.create(); sourceObservable.compose(group.transform(testObserver)).subscribe(testObserver); testObserver.dispose(); sourceObservable.onNext("Chespirito"); testObserver.assertNoValues(); assertThat(group.hasObservables(testObserver)).isEqualTo(true); }
@Test public void shouldRemoveObservablesAfterTermination() throws Exception { ObservableGroup group = observableManager.newGroup(); PublishSubject<String> sourceObservable = PublishSubject.create(); TestObserver<String> subscriber = new TestObserver<>(); sourceObservable.compose(group.transform(subscriber)).subscribe(subscriber); sourceObservable.onNext("Roberto Gomez Bolanos is king"); sourceObservable.onComplete(); subscriber.assertComplete(); assertThat(group.hasObservables(fooObserver)).isEqualTo(false); }
@Test public void shouldClearQueuedResults() throws Exception { ObservableGroup group = observableManager.newGroup(); PublishSubject<String> sourceObservable = PublishSubject.create(); TestObserver<String> subscriber1 = new TestObserver<>(); sourceObservable.compose(group.transform(subscriber1)).subscribe(subscriber1); group.dispose(); sourceObservable.onNext("Hello"); sourceObservable.onComplete(); observableManager.destroy(group); assertThat(group.hasObservables(fooObserver)).isEqualTo(false); }
@Test public void shouldNotDeliverResultWhileUnsubscribed() throws Exception { ObservableGroup group = observableManager.newGroup(); TestObserver<String> testObserver = new TestObserver<>(); PublishSubject<String> sourceObservable = PublishSubject.create(); sourceObservable.compose(group.transform(testObserver)).subscribe(testObserver); group.dispose(); sourceObservable.onNext("Roberto Gomez Bolanos"); sourceObservable.onComplete(); testObserver.assertNotComplete(); assertThat(group.hasObservables(testObserver)).isEqualTo(true); }
@Test public void shouldNotDeliverEventsAfterCancelled() throws Exception { ObservableGroup group = observableManager.newGroup(); PublishSubject<String> sourceObservable = PublishSubject.create(); TestObserver<String> testObserver = new TestObserver<>(); sourceObservable.compose(group.transform(testObserver)).subscribe(testObserver); observableManager.destroy(group); sourceObservable.onNext("Gremio Foot-ball Porto Alegrense"); sourceObservable.onComplete(); testObserver.assertNotComplete(); assertThat(group.hasObservables(fooObserver)).isEqualTo(false); }
@Test public void shouldNotDeliverResultWhileLocked() throws Exception { ObservableGroup group = observableManager.newGroup(); TestObserver<String> testObserver = new TestObserver<>(); PublishSubject<String> sourceObservable = PublishSubject.create(); group.lock(); sourceObservable.compose(group.transform(testObserver)).subscribe(testObserver); sourceObservable.onNext("Chespirito"); sourceObservable.onComplete(); testObserver.assertNotComplete(); testObserver.assertNoValues(); assertThat(group.hasObservables(testObserver)).isEqualTo(true); }
@Test public void shouldDeliverSuccessfulEvent() throws Exception { ObservableGroup group = observableManager.newGroup(); PublishSubject<String> sourceObservable = PublishSubject.create(); TestObserver<String> subscriber = new TestObserver<>(); sourceObservable.compose(group.transform(subscriber)).subscribe(subscriber); subscriber.assertNotComplete(); sourceObservable.onNext("Foo Bar"); sourceObservable.onComplete(); subscriber.assertComplete(); subscriber.assertValue("Foo Bar"); }
@Test public void testDisposingObserverResubscribe() { ObservableGroup group = observableManager.newGroup(); TestAutoResubscribingObserver testObserver = new TestAutoResubscribingObserver("foo"); PublishSubject<String> sourceObservable = PublishSubject.create(); sourceObservable.compose(group.transform(testObserver)).subscribe(testObserver); testObserver.dispose(); sourceObservable.onNext("Chespirito"); testObserver.assertionTarget.assertNoValues(); testObserver = new TestAutoResubscribingObserver("foo"); group.resubscribe(testObserver); testObserver.assertionTarget.assertValue("Chespirito"); }