diff --git a/src/main/java/io/reactivex/internal/operators/completable/CompletableCreate.java b/src/main/java/io/reactivex/internal/operators/completable/CompletableCreate.java index c9035e7033..8e0cc20438 100644 --- a/src/main/java/io/reactivex/internal/operators/completable/CompletableCreate.java +++ b/src/main/java/io/reactivex/internal/operators/completable/CompletableCreate.java @@ -118,5 +118,10 @@ public void dispose() { public boolean isDisposed() { return DisposableHelper.isDisposed(get()); } + + @Override + public String toString() { + return String.format("%s{%s}", getClass().getSimpleName(), super.toString()); + } } } diff --git a/src/main/java/io/reactivex/internal/operators/flowable/FlowableCreate.java b/src/main/java/io/reactivex/internal/operators/flowable/FlowableCreate.java index a729b8dc0f..c1f506abc1 100644 --- a/src/main/java/io/reactivex/internal/operators/flowable/FlowableCreate.java +++ b/src/main/java/io/reactivex/internal/operators/flowable/FlowableCreate.java @@ -233,6 +233,11 @@ public boolean isCancelled() { public FlowableEmitter serialize() { return this; } + + @Override + public String toString() { + return emitter.toString(); + } } abstract static class BaseEmitter @@ -338,6 +343,11 @@ public final long requested() { public final FlowableEmitter serialize() { return new SerializedEmitter(this); } + + @Override + public String toString() { + return String.format("%s{%s}", getClass().getSimpleName(), super.toString()); + } } static final class MissingEmitter extends BaseEmitter { diff --git a/src/main/java/io/reactivex/internal/operators/maybe/MaybeCreate.java b/src/main/java/io/reactivex/internal/operators/maybe/MaybeCreate.java index 21f06e2109..e0c42b68ca 100644 --- a/src/main/java/io/reactivex/internal/operators/maybe/MaybeCreate.java +++ b/src/main/java/io/reactivex/internal/operators/maybe/MaybeCreate.java @@ -145,5 +145,10 @@ public void dispose() { public boolean isDisposed() { return DisposableHelper.isDisposed(get()); } + + @Override + public String toString() { + return String.format("%s{%s}", getClass().getSimpleName(), super.toString()); + } } } diff --git a/src/main/java/io/reactivex/internal/operators/observable/ObservableCreate.java b/src/main/java/io/reactivex/internal/operators/observable/ObservableCreate.java index 153e44aef0..68ffd7ed82 100644 --- a/src/main/java/io/reactivex/internal/operators/observable/ObservableCreate.java +++ b/src/main/java/io/reactivex/internal/operators/observable/ObservableCreate.java @@ -126,6 +126,11 @@ public void dispose() { public boolean isDisposed() { return DisposableHelper.isDisposed(get()); } + + @Override + public String toString() { + return String.format("%s{%s}", getClass().getSimpleName(), super.toString()); + } } /** @@ -279,6 +284,11 @@ public boolean isDisposed() { public ObservableEmitter serialize() { return this; } + + @Override + public String toString() { + return emitter.toString(); + } } } diff --git a/src/main/java/io/reactivex/internal/operators/single/SingleCreate.java b/src/main/java/io/reactivex/internal/operators/single/SingleCreate.java index 69cac3c393..8bb129bda2 100644 --- a/src/main/java/io/reactivex/internal/operators/single/SingleCreate.java +++ b/src/main/java/io/reactivex/internal/operators/single/SingleCreate.java @@ -123,5 +123,10 @@ public void dispose() { public boolean isDisposed() { return DisposableHelper.isDisposed(get()); } + + @Override + public String toString() { + return String.format("%s{%s}", getClass().getSimpleName(), super.toString()); + } } } diff --git a/src/test/java/io/reactivex/internal/operators/completable/CompletableCreateTest.java b/src/test/java/io/reactivex/internal/operators/completable/CompletableCreateTest.java index d64484081c..13b64091fe 100644 --- a/src/test/java/io/reactivex/internal/operators/completable/CompletableCreateTest.java +++ b/src/test/java/io/reactivex/internal/operators/completable/CompletableCreateTest.java @@ -297,4 +297,14 @@ public void subscribe(CompletableEmitter e) throws Exception { RxJavaPlugins.reset(); } } + + @Test + public void emitterHasToString() { + Completable.create(new CompletableOnSubscribe() { + @Override + public void subscribe(CompletableEmitter emitter) throws Exception { + assertTrue(emitter.toString().contains(CompletableCreate.Emitter.class.getSimpleName())); + } + }).test().assertEmpty(); + } } diff --git a/src/test/java/io/reactivex/internal/operators/flowable/FlowableCreateTest.java b/src/test/java/io/reactivex/internal/operators/flowable/FlowableCreateTest.java index 786dd5cb1e..edc31e5b37 100644 --- a/src/test/java/io/reactivex/internal/operators/flowable/FlowableCreateTest.java +++ b/src/test/java/io/reactivex/internal/operators/flowable/FlowableCreateTest.java @@ -16,7 +16,9 @@ import static org.junit.Assert.*; import java.io.IOException; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.junit.Test; import org.reactivestreams.*; @@ -931,4 +933,26 @@ public void subscribe(FlowableEmitter e) throws Exception { } } } + + @Test + public void emittersHasToString() { + Map> emitterMap = + new HashMap>(); + + emitterMap.put(BackpressureStrategy.MISSING, FlowableCreate.MissingEmitter.class); + emitterMap.put(BackpressureStrategy.ERROR, FlowableCreate.ErrorAsyncEmitter.class); + emitterMap.put(BackpressureStrategy.DROP, FlowableCreate.DropAsyncEmitter.class); + emitterMap.put(BackpressureStrategy.LATEST, FlowableCreate.LatestAsyncEmitter.class); + emitterMap.put(BackpressureStrategy.BUFFER, FlowableCreate.BufferAsyncEmitter.class); + + for (final Map.Entry> entry : emitterMap.entrySet()) { + Flowable.create(new FlowableOnSubscribe() { + @Override + public void subscribe(FlowableEmitter emitter) throws Exception { + assertTrue(emitter.toString().contains(entry.getValue().getSimpleName())); + assertTrue(emitter.serialize().toString().contains(entry.getValue().getSimpleName())); + } + }, entry.getKey()).test().assertEmpty(); + } + } } diff --git a/src/test/java/io/reactivex/internal/operators/maybe/MaybeCreateTest.java b/src/test/java/io/reactivex/internal/operators/maybe/MaybeCreateTest.java index 477562310b..1e114a2ac3 100644 --- a/src/test/java/io/reactivex/internal/operators/maybe/MaybeCreateTest.java +++ b/src/test/java/io/reactivex/internal/operators/maybe/MaybeCreateTest.java @@ -335,4 +335,14 @@ public void subscribe(MaybeEmitter e) throws Exception { RxJavaPlugins.reset(); } } + + @Test + public void emitterHasToString() { + Maybe.create(new MaybeOnSubscribe() { + @Override + public void subscribe(MaybeEmitter emitter) throws Exception { + assertTrue(emitter.toString().contains(MaybeCreate.Emitter.class.getSimpleName())); + } + }).test().assertEmpty(); + } } diff --git a/src/test/java/io/reactivex/internal/operators/observable/ObservableCreateTest.java b/src/test/java/io/reactivex/internal/operators/observable/ObservableCreateTest.java index 4933a70fb7..a3e86e18e9 100644 --- a/src/test/java/io/reactivex/internal/operators/observable/ObservableCreateTest.java +++ b/src/test/java/io/reactivex/internal/operators/observable/ObservableCreateTest.java @@ -643,4 +643,15 @@ public void subscribe(ObservableEmitter e) throws Exception { RxJavaPlugins.reset(); } } + + @Test + public void emitterHasToString() { + Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + assertTrue(emitter.toString().contains(ObservableCreate.CreateEmitter.class.getSimpleName())); + assertTrue(emitter.serialize().toString().contains(ObservableCreate.CreateEmitter.class.getSimpleName())); + } + }).test().assertEmpty(); + } } diff --git a/src/test/java/io/reactivex/internal/operators/single/SingleCreateTest.java b/src/test/java/io/reactivex/internal/operators/single/SingleCreateTest.java index 51603819eb..2aee2b0f6f 100644 --- a/src/test/java/io/reactivex/internal/operators/single/SingleCreateTest.java +++ b/src/test/java/io/reactivex/internal/operators/single/SingleCreateTest.java @@ -307,4 +307,14 @@ public void subscribe(SingleEmitter e) throws Exception { RxJavaPlugins.reset(); } } + + @Test + public void emitterHasToString() { + Single.create(new SingleOnSubscribe() { + @Override + public void subscribe(SingleEmitter emitter) throws Exception { + assertTrue(emitter.toString().contains(SingleCreate.Emitter.class.getSimpleName())); + } + }).test().assertEmpty(); + } }