From 2b5159139162537574a630e2ad6657ec860469ed Mon Sep 17 00:00:00 2001 From: Dave Moten Date: Thu, 4 Sep 2014 20:34:47 +1000 Subject: [PATCH] check for null values of leftOver in onCompleted and onError --- .../java/rx/observables/StringObservable.java | 6 ++++-- .../rx/observables/StringObservableTest.java | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/rxjava-contrib/rxjava-string/src/main/java/rx/observables/StringObservable.java b/rxjava-contrib/rxjava-string/src/main/java/rx/observables/StringObservable.java index a7154c8511..77ed6fb124 100644 --- a/rxjava-contrib/rxjava-string/src/main/java/rx/observables/StringObservable.java +++ b/rxjava-contrib/rxjava-string/src/main/java/rx/observables/StringObservable.java @@ -441,14 +441,16 @@ public Subscriber call(final Subscriber o) { @Override public void onCompleted() { - output(leftOver); + if (leftOver!=null) + output(leftOver); if (!o.isUnsubscribed()) o.onCompleted(); } @Override public void onError(Throwable e) { - output(leftOver); + if (leftOver!=null) + output(leftOver); if (!o.isUnsubscribed()) o.onError(e); } diff --git a/rxjava-contrib/rxjava-string/src/test/java/rx/observables/StringObservableTest.java b/rxjava-contrib/rxjava-string/src/test/java/rx/observables/StringObservableTest.java index e566cef14b..14f60804a6 100644 --- a/rxjava-contrib/rxjava-string/src/test/java/rx/observables/StringObservableTest.java +++ b/rxjava-contrib/rxjava-string/src/test/java/rx/observables/StringObservableTest.java @@ -142,6 +142,24 @@ public void testSplitOnCollon() { public void testSplitOnOh() { testSplit("boo:and:foo", "o", 0, "b", "", ":and:f"); } + + @Test + public void testSplitOnEmptyStream() { + assertEquals(0, (int) StringObservable.split(Observable.empty(), "\n") + .count().toBlocking().single()); + } + + @Test + public void testSplitOnStreamThatThrowsExceptionImmediately() { + RuntimeException ex = new RuntimeException("boo"); + try { + StringObservable.split(Observable.error(ex), "\n") + .count().toBlocking().single(); + fail(); + } catch (RuntimeException e) { + assertEquals(ex, e); + } + } public void testSplit(String str, String regex, int limit, String... parts) { testSplit(str, regex, 0, Observable.from(str), parts);