From eef1a91dc93d4bdd6e521a1b252f10921a1888dc Mon Sep 17 00:00:00 2001 From: akarnokd Date: Mon, 22 Jun 2026 23:12:37 +0200 Subject: [PATCH 1/2] 4.x: Unit test lambdaification 21 of N --- .../ObservableConcatMapCompletablePerf.java | 25 +- .../xmapz/ObservableConcatMapMaybePerf.java | 25 +- .../xmapz/ObservableConcatMapSinglePerf.java | 25 +- .../ObservableFlatMapCompletablePerf.java | 25 +- .../xmapz/ObservableFlatMapMaybePerf.java | 25 +- .../xmapz/ObservableFlatMapSinglePerf.java | 25 +- .../ObservableConcatMapCompletableTest.java | 129 +---- .../mixed/ObservableConcatMapMaybeTest.java | 175 ++---- .../mixed/ObservableConcatMapSingleTest.java | 143 +---- .../observable/ObservableAllTest.java | 126 +---- .../observable/ObservableAmbTest.java | 140 ++--- .../observable/ObservableAnyTest.java | 161 +----- .../observable/ObservableBlockingTest.java | 62 +-- .../observable/ObservableBufferTest.java | 324 +++-------- .../ObservableBufferUntilSubscriberTest.java | 40 +- .../observable/ObservableCacheTest.java | 103 ++-- .../observable/ObservableCollectTest.java | 147 +---- .../ObservableCombineLatestTest.java | 378 +++---------- .../ObservableConcatMapCompletableTest.java | 49 +- .../ObservableConcatMapEagerTest.java | 351 ++---------- .../ObservableConcatMapSchedulerTest.java | 385 +++---------- .../observable/ObservableConcatMapTest.java | 236 ++------ .../observable/ObservableConcatTest.java | 305 ++++------- .../ObservableConcatWithMaybeTest.java | 22 +- .../observable/ObservableCreateTest.java | 511 +++++++----------- .../observable/ObservableDebounceTest.java | 224 +++----- .../ObservableDelaySubscriptionOtherTest.java | 53 +- .../observable/ObservableDelayTest.java | 190 ++----- .../observable/ObservableDistinctTest.java | 25 +- .../ObservableDistinctUntilChangedTest.java | 70 +-- .../observable/ObservableDoAfterNextTest.java | 28 +- .../observable/ObservableDoFinallyTest.java | 100 +--- .../observable/ObservableDoOnEachTest.java | 315 +++-------- .../ObservableDoOnSubscribeTest.java | 54 +- .../ObservableDoOnUnsubscribeTest.java | 74 +-- .../observable/ObservableFilterTest.java | 44 +- .../observable/ObservableFirstTest.java | 91 +--- .../ObservableFlatMapCompletableTest.java | 231 ++------ .../ObservableFlatMapMaybeTest.java | 184 ++----- .../ObservableFlatMapSingleTest.java | 152 +----- .../observable/ObservableFlatMapTest.java | 443 +++------------ .../ObservableFlattenIterableTest.java | 57 +- .../observable/ObservableForEachTest.java | 62 +-- .../observable/ObservableFromActionTest.java | 51 +- .../ObservableFromCallableTest.java | 118 +--- .../ObservableFromCompletableTest.java | 44 +- .../ObservableFromIterableTest.java | 171 +++--- .../ObservableFromRunnableTest.java | 59 +- .../ObservableFromSupplierTest.java | 117 +--- .../ObservableCombineLatestTests.java | 25 +- .../observable/ObservableCovarianceTest.java | 143 ++--- .../observable/ObservableDoOnTest.java | 36 +- 52 files changed, 1642 insertions(+), 5456 deletions(-) diff --git a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapCompletablePerf.java b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapCompletablePerf.java index 309db95db3..b72a5525d9 100644 --- a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapCompletablePerf.java +++ b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapCompletablePerf.java @@ -45,26 +45,11 @@ public void setup() { Observable source = Observable.fromArray(sourceArray); - observablePlain = source.concatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.empty(); - } - }); - - observableConvert = source.concatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Completable.complete().toObservable(); - } - }); - - observableDedicated = source.concatMapCompletable(new Function() { - @Override - public Completable apply(Integer v) { - return Completable.complete(); - } - }); + observablePlain = source.concatMap((Function>) _ -> Observable.empty()); + + observableConvert = source.concatMap((Function>) _ -> Completable.complete().toObservable()); + + observableDedicated = source.concatMapCompletable((Function) _ -> Completable.complete()); } @Benchmark diff --git a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapMaybePerf.java b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapMaybePerf.java index 9a5b951d11..eb55089b4b 100644 --- a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapMaybePerf.java +++ b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapMaybePerf.java @@ -45,26 +45,11 @@ public void setup() { Observable source = Observable.fromArray(sourceArray); - observablePlain = source.concatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.just(v); - } - }); - - observableConvert = source.concatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Maybe.just(v).toObservable(); - } - }); - - observableDedicated = source.concatMapMaybe(new Function>() { - @Override - public Maybe apply(Integer v) { - return Maybe.just(v); - } - }); + observablePlain = source.concatMap((Function>) Observable::just); + + observableConvert = source.concatMap((Function>) v -> Maybe.just(v).toObservable()); + + observableDedicated = source.concatMapMaybe((Function>) Maybe::just); } @Benchmark diff --git a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapSinglePerf.java b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapSinglePerf.java index 71a81eaed9..8cc1f57d9e 100644 --- a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapSinglePerf.java +++ b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableConcatMapSinglePerf.java @@ -45,26 +45,11 @@ public void setup() { Observable source = Observable.fromArray(sourceArray); - observablePlain = source.concatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.just(v); - } - }); - - observableConvert = source.concatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Single.just(v).toObservable(); - } - }); - - observableDedicated = source.concatMapSingle(new Function>() { - @Override - public Single apply(Integer v) { - return Single.just(v); - } - }); + observablePlain = source.concatMap((Function>) Observable::just); + + observableConvert = source.concatMap((Function>) v -> Single.just(v).toObservable()); + + observableDedicated = source.concatMapSingle((Function>) Single::just); } @Benchmark diff --git a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapCompletablePerf.java b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapCompletablePerf.java index ff8d7e31d4..56052ee0ae 100644 --- a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapCompletablePerf.java +++ b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapCompletablePerf.java @@ -45,26 +45,11 @@ public void setup() { Observable source = Observable.fromArray(sourceArray); - observablePlain = source.flatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.empty(); - } - }); - - observableConvert = source.flatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Completable.complete().toObservable(); - } - }); - - observableDedicated = source.flatMapCompletable(new Function() { - @Override - public Completable apply(Integer v) { - return Completable.complete(); - } - }); + observablePlain = source.flatMap((Function>) _ -> Observable.empty()); + + observableConvert = source.flatMap((Function>) _ -> Completable.complete().toObservable()); + + observableDedicated = source.flatMapCompletable((Function) _ -> Completable.complete()); } @Benchmark diff --git a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapMaybePerf.java b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapMaybePerf.java index 2d93a56b86..5c0b170ca3 100644 --- a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapMaybePerf.java +++ b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapMaybePerf.java @@ -45,26 +45,11 @@ public void setup() { Observable source = Observable.fromArray(sourceArray); - observablePlain = source.flatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.just(v); - } - }); - - observableConvert = source.flatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Maybe.just(v).toObservable(); - } - }); - - observableDedicated = source.flatMapMaybe(new Function>() { - @Override - public Maybe apply(Integer v) { - return Maybe.just(v); - } - }); + observablePlain = source.flatMap((Function>) Observable::just); + + observableConvert = source.flatMap((Function>) v -> Maybe.just(v).toObservable()); + + observableDedicated = source.flatMapMaybe((Function>) Maybe::just); } @Benchmark diff --git a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapSinglePerf.java b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapSinglePerf.java index 86ef25e2ea..bdce2b9086 100644 --- a/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapSinglePerf.java +++ b/src/jmh/java/io/reactivex/rxjava4/xmapz/ObservableFlatMapSinglePerf.java @@ -45,26 +45,11 @@ public void setup() { Observable source = Observable.fromArray(sourceArray); - observablePlain = source.flatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.just(v); - } - }); - - observableConvert = source.flatMap(new Function>() { - @Override - public Observable apply(Integer v) { - return Single.just(v).toObservable(); - } - }); - - observableDedicated = source.flatMapSingle(new Function>() { - @Override - public Single apply(Integer v) { - return Single.just(v); - } - }); + observablePlain = source.flatMap((Function>) Observable::just); + + observableConvert = source.flatMap((Function>) v -> Single.just(v).toObservable()); + + observableDedicated = source.flatMapSingle((Function>) Single::just); } @Benchmark diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapCompletableTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapCompletableTest.java index 6c5708420f..9a173b98b1 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapCompletableTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapCompletableTest.java @@ -44,12 +44,7 @@ public void simple() { public void simple2() { final AtomicInteger counter = new AtomicInteger(); Observable.range(1, 5) - .concatMapCompletable(Functions.justFunction(Completable.fromAction(new Action() { - @Override - public void run() throws Exception { - counter.incrementAndGet(); - } - }))) + .concatMapCompletable(Functions.justFunction(Completable.fromAction(counter::incrementAndGet))) .test() .assertResult(); @@ -84,12 +79,7 @@ public void innerError() { public void innerErrorDelayed() { TestObserverEx to = Observable.range(1, 5) .concatMapCompletableDelayError( - new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.error(new TestException()); - } - } + _ -> Completable.error(new TestException()) ) .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class) @@ -101,11 +91,8 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void mapperCrash() { Observable.just(1) - .concatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - throw new TestException(); - } + .concatMapCompletable(_ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); @@ -114,11 +101,8 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void mapperCrashHidden() { Observable.just(1).hide() - .concatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - throw new TestException(); - } + .concatMapCompletable(_ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); @@ -207,15 +191,12 @@ public void endError() { final CompletableSubject cs2 = CompletableSubject.create(); TestObserver to = ps.concatMapCompletableDelayError( - new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - if (v == 1) { - return cs; - } - return cs2; - } - }, true, 32 + v -> { + if (v == 1) { + return cs; + } + return cs2; + }, true, 32 ) .test(); @@ -250,14 +231,8 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void doubleOnSubscribe() { TestHelper.checkDoubleOnSubscribeObservableToCompletable( - new Function, Completable>() { - @Override - public Completable apply(Observable f) - throws Exception { - return f.concatMapCompletable( - Functions.justFunction(Completable.complete())); - } - } + (Function, Completable>) f -> f.concatMapCompletable( + Functions.justFunction(Completable.complete())) ); } @@ -286,28 +261,13 @@ public void immediateOuterInnerErrorRace() { ps.onNext(1); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps.onError(ex); - } - }; + Runnable r1 = () -> ps.onError(ex); - Runnable r2 = new Runnable() { - @Override - public void run() { - cs.onError(ex); - } - }; + Runnable r2 = () -> cs.onError(ex); TestHelper.race(r1, r2); - to.assertError(new Predicate() { - @Override - public boolean test(Throwable e) throws Exception { - return e instanceof TestException || e instanceof CompositeException; - } - }) + to.assertError(e -> e instanceof TestException || e instanceof CompositeException) .assertNotComplete(); if (!errors.isEmpty()) { @@ -332,19 +292,11 @@ public void disposeInDrainLoop() { ps.onNext(1); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps.onNext(2); - } - }; + Runnable r1 = () -> ps.onNext(2); - Runnable r2 = new Runnable() { - @Override - public void run() { - cs.onComplete(); - to.dispose(); - } + Runnable r2 = () -> { + cs.onComplete(); + to.dispose(); }; TestHelper.race(r1, r2); @@ -432,47 +384,20 @@ public void justScalarSource() { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter() { - @Override - public Completable apply(Observable upstream) { - return upstream.concatMapCompletable(new Function() { - @Override - public Completable apply(Integer v) throws Throwable { - return Completable.complete().hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter) upstream -> + upstream.concatMapCompletable((Function) _ -> Completable.complete().hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter() { - @Override - public Completable apply(Observable upstream) { - return upstream.concatMapCompletableDelayError(new Function() { - @Override - public Completable apply(Integer v) throws Throwable { - return Completable.complete().hide(); - } - }, false, 2); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter) upstream -> + upstream.concatMapCompletableDelayError((Function) _ -> Completable.complete().hide(), false, 2)); } @Test public void undeliverableUponCancelDelayErrorTillEnd() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter() { - @Override - public Completable apply(Observable upstream) { - return upstream.concatMapCompletableDelayError(new Function() { - @Override - public Completable apply(Integer v) throws Throwable { - return Completable.complete().hide(); - } - }, true, 2); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter) upstream -> + upstream.concatMapCompletableDelayError((Function) _ -> Completable.complete().hide(), true, 2)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapMaybeTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapMaybeTest.java index 8f199d34e7..14f817bc2c 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapMaybeTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapMaybeTest.java @@ -39,13 +39,7 @@ public class ObservableConcatMapMaybeTest extends RxJavaTest { @Test public void simple() { Observable.range(1, 5) - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - return Maybe.just(v); - } - }) + .concatMapMaybe((Function>) Maybe::just) .test() .assertResult(1, 2, 3, 4, 5); } @@ -53,13 +47,7 @@ public MaybeSource apply(Integer v) @Test public void simpleLong() { Observable.range(1, 1024) - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - return Maybe.just(v); - } - }, 32) + .concatMapMaybe((Function>) Maybe::just, 32) .test() .assertValueCount(1024) .assertNoErrors() @@ -69,13 +57,7 @@ public MaybeSource apply(Integer v) @Test public void empty() { Observable.range(1, 10) - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - return Maybe.empty(); - } - }) + .concatMapMaybe((Function>) _ -> Maybe.empty()) .test() .assertResult(); } @@ -83,15 +65,11 @@ public MaybeSource apply(Integer v) @Test public void mixed() { Observable.range(1, 10) - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - if (v % 2 == 0) { - return Maybe.just(v); - } - return Maybe.empty(); + .concatMapMaybe((Function>) v -> { + if (v % 2 == 0) { + return Maybe.just(v); } + return Maybe.empty(); }) .test() .assertResult(2, 4, 6, 8, 10); @@ -100,15 +78,11 @@ public MaybeSource apply(Integer v) @Test public void mixedLong() { TestObserverEx to = Observable.range(1, 1024) - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - if (v % 2 == 0) { - return Maybe.just(v).subscribeOn(Schedulers.computation()); - } - return Maybe.empty().subscribeOn(Schedulers.computation()); + .concatMapMaybe((Function>) v -> { + if (v % 2 == 0) { + return Maybe.just(v).subscribeOn(Schedulers.computation()); } + return Maybe.empty().subscribeOn(Schedulers.computation()); }) .to(TestHelper.testConsumer()) .awaitDone(5, TimeUnit.SECONDS) @@ -189,27 +163,15 @@ public void mainBoundaryErrorInnerEmpty() { @Test public void doubleOnSubscribe() { TestHelper.checkDoubleOnSubscribeObservable( - new Function, Observable>() { - @Override - public Observable apply(Observable f) - throws Exception { - return f.concatMapMaybeDelayError( - Functions.justFunction(Maybe.empty())); - } - } + (Function, Observable>) f -> f.concatMapMaybeDelayError( + Functions.justFunction(Maybe.empty())) ); } @Test public void take() { Observable.range(1, 5) - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - return Maybe.just(v); - } - }) + .concatMapMaybe((Function>) Maybe::just) .take(3) .test() .assertResult(1, 2, 3); @@ -218,13 +180,7 @@ public MaybeSource apply(Integer v) @Test public void cancel() { Observable.range(1, 5).concatWith(Observable.never()) - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - return Maybe.just(v); - } - }) + .concatMapMaybe((Function>) Maybe::just) .test() .assertValues(1, 2, 3, 4, 5) .assertNoErrors() @@ -265,19 +221,13 @@ public void innerErrorAfterMainError() { final AtomicReference> obs = new AtomicReference<>(); TestObserverEx to = ps.concatMapMaybe( - new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - return new Maybe() { - @Override - protected void subscribeActual( - MaybeObserver observer) { - observer.onSubscribe(Disposable.empty()); - obs.set(observer); - } - }; - } + (Function>) _ -> new Maybe() { + @Override + protected void subscribeActual( + MaybeObserver observer) { + observer.onSubscribe(Disposable.empty()); + obs.set(observer); + } } ).to(TestHelper.testConsumer()); @@ -297,13 +247,7 @@ protected void subscribeActual( @Test public void delayAllErrors() { TestObserverEx to = Observable.range(1, 5) - .concatMapMaybeDelayError(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - return Maybe.error(new TestException()); - } - }) + .concatMapMaybeDelayError(_ -> Maybe.error(new TestException())) .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class) ; @@ -317,13 +261,9 @@ public void mapperCrash() { final PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - throw new TestException(); - } - }) + .concatMapMaybe(_ -> { + throw new TestException(); + }) .test(); to.assertEmpty(); @@ -340,13 +280,9 @@ public MaybeSource apply(Integer v) @Test public void scalarMapperCrash() { TestObserver to = Observable.just(1) - .concatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) - throws Exception { - throw new TestException(); - } - }) + .concatMapMaybe(_ -> { + throw new TestException(); + }) .test(); to.assertFailure(TestException.class); @@ -423,18 +359,8 @@ public void innerSuccessDisposeRace() { .concatMapMaybe(Functions.justFunction(ms)) .test(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ms.onSuccess(1); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - to.dispose(); - } - }; + Runnable r1 = () -> ms.onSuccess(1); + Runnable r2 = to::dispose; TestHelper.race(r1, r2); @@ -444,47 +370,20 @@ public void run() { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapMaybe(new Function>() { - @Override - public Maybe apply(Integer v) throws Throwable { - return Maybe.just(v).hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapMaybe((Function>) v -> Maybe.just(v).hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapMaybeDelayError(new Function>() { - @Override - public Maybe apply(Integer v) throws Throwable { - return Maybe.just(v).hide(); - } - }, false, 2); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapMaybeDelayError((Function>) v -> Maybe.just(v).hide(), false, 2)); } @Test public void undeliverableUponCancelDelayErrorTillEnd() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapMaybeDelayError(new Function>() { - @Override - public Maybe apply(Integer v) throws Throwable { - return Maybe.just(v).hide(); - } - }, true, 2); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapMaybeDelayError((Function>) v -> Maybe.just(v).hide(), true, 2)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapSingleTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapSingleTest.java index f761c419d1..bb189f195c 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapSingleTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/mixed/ObservableConcatMapSingleTest.java @@ -37,13 +37,7 @@ public class ObservableConcatMapSingleTest extends RxJavaTest { @Test public void simple() { Observable.range(1, 5) - .concatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) - throws Exception { - return Single.just(v); - } - }) + .concatMapSingle((Function>) Single::just) .test() .assertResult(1, 2, 3, 4, 5); } @@ -51,13 +45,7 @@ public SingleSource apply(Integer v) @Test public void simpleLong() { Observable.range(1, 1024) - .concatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) - throws Exception { - return Single.just(v); - } - }, 32) + .concatMapSingle((Function>) Single::just, 32) .test() .assertValueCount(1024) .assertNoErrors() @@ -107,27 +95,15 @@ public void mainBoundaryErrorInnerSuccess() { @Test public void doubleOnSubscribe() { TestHelper.checkDoubleOnSubscribeObservable( - new Function, Observable>() { - @Override - public Observable apply(Observable f) - throws Exception { - return f.concatMapSingleDelayError( - Functions.justFunction(Single.never())); - } - } + (Function, Observable>) f -> f.concatMapSingleDelayError( + Functions.justFunction(Single.never())) ); } @Test public void take() { Observable.range(1, 5) - .concatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) - throws Exception { - return Single.just(v); - } - }) + .concatMapSingle((Function>) Single::just) .take(3) .test() .assertResult(1, 2, 3); @@ -136,13 +112,7 @@ public SingleSource apply(Integer v) @Test public void cancel() { Observable.range(1, 5).concatWith(Observable.never()) - .concatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) - throws Exception { - return Single.just(v); - } - }) + .concatMapSingle((Function>) Single::just) .test() .assertValues(1, 2, 3, 4, 5) .assertNoErrors() @@ -183,19 +153,13 @@ public void innerErrorAfterMainError() { final AtomicReference> obs = new AtomicReference<>(); TestObserverEx to = ps.concatMapSingle( - new Function>() { - @Override - public SingleSource apply(Integer v) - throws Exception { - return new Single() { - @Override - protected void subscribeActual( - SingleObserver observer) { - observer.onSubscribe(Disposable.empty()); - obs.set(observer); - } - }; - } + (Function>) _ -> new Single() { + @Override + protected void subscribeActual( + SingleObserver observer) { + observer.onSubscribe(Disposable.empty()); + obs.set(observer); + } } ).to(TestHelper.testConsumer()); @@ -215,13 +179,7 @@ protected void subscribeActual( @Test public void delayAllErrors() { TestObserverEx to = Observable.range(1, 5) - .concatMapSingleDelayError(new Function>() { - @Override - public SingleSource apply(Integer v) - throws Exception { - return Single.error(new TestException()); - } - }) + .concatMapSingleDelayError(_ -> Single.error(new TestException())) .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class) ; @@ -235,13 +193,9 @@ public void mapperCrash() { final PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .concatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) - throws Exception { - throw new TestException(); - } - }) + .concatMapSingle(_ -> { + throw new TestException(); + }) .test(); to.assertEmpty(); @@ -258,13 +212,9 @@ public SingleSource apply(Integer v) @Test public void mapperCrashScalar() { TestObserver to = Observable.just(1) - .concatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) - throws Exception { - throw new TestException(); - } - }) + .concatMapSingle(_ -> { + throw new TestException(); + }) .test(); to.assertFailure(TestException.class); @@ -363,18 +313,8 @@ public void innerSuccessDisposeRace() { .concatMapSingle(Functions.justFunction(ss)) .test(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ss.onSuccess(1); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - to.dispose(); - } - }; + Runnable r1 = () -> ss.onSuccess(1); + Runnable r2 = to::dispose; TestHelper.race(r1, r2); @@ -384,47 +324,20 @@ public void run() { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapSingle(new Function>() { - @Override - public Single apply(Integer v) throws Throwable { - return Single.just(v).hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapSingle((Function>) v -> Single.just(v).hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapSingleDelayError(new Function>() { - @Override - public Single apply(Integer v) throws Throwable { - return Single.just(v).hide(); - } - }, false, 2); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapSingleDelayError((Function>) v -> Single.just(v).hide(), false, 2)); } @Test public void undeliverableUponCancelDelayErrorTillEnd() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapSingleDelayError(new Function>() { - @Override - public Single apply(Integer v) throws Throwable { - return Single.just(v).hide(); - } - }, true, 2); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapSingleDelayError((Function>) v -> Single.just(v).hide(), true, 2)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAllTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAllTest.java index 3d7f253d79..bce4cfc78a 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAllTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAllTest.java @@ -38,12 +38,7 @@ public void allObservable() { Observer observer = TestHelper.mockObserver(); - obs.all(new Predicate() { - @Override - public boolean test(String s) { - return s.length() == 3; - } - }).toObservable() + obs.all(s -> s.length() == 3).toObservable() .subscribe(observer); verify(observer).onSubscribe(any()); @@ -58,12 +53,7 @@ public void notAllObservable() { Observer observer = TestHelper.mockObserver(); - obs.all(new Predicate() { - @Override - public boolean test(String s) { - return s.length() == 3; - } - }).toObservable() + obs.all(s -> s.length() == 3).toObservable() .subscribe(observer); verify(observer).onSubscribe(any()); @@ -78,12 +68,7 @@ public void emptyObservable() { Observer observer = TestHelper.mockObserver(); - obs.all(new Predicate() { - @Override - public boolean test(String s) { - return s.length() == 3; - } - }).toObservable() + obs.all(s -> s.length() == 3).toObservable() .subscribe(observer); verify(observer).onSubscribe(any()); @@ -99,12 +84,7 @@ public void errorObservable() { Observer observer = TestHelper.mockObserver(); - obs.all(new Predicate() { - @Override - public boolean test(String s) { - return s.length() == 3; - } - }).toObservable() + obs.all(s -> s.length() == 3).toObservable() .subscribe(observer); verify(observer).onSubscribe(any()); @@ -115,12 +95,7 @@ public boolean test(String s) { @Test public void followingFirstObservable() { Observable o = Observable.fromArray(1, 3, 5, 6); - Observable allOdd = o.all(new Predicate() { - @Override - public boolean test(Integer i) { - return i % 2 == 1; - } - }).toObservable(); + Observable allOdd = o.all(i -> i % 2 == 1).toObservable(); assertFalse(allOdd.blockingFirst()); } @@ -128,18 +103,8 @@ public boolean test(Integer i) { @Test public void issue1935NoUnsubscribeDownstreamObservable() { Observable source = Observable.just(1) - .all(new Predicate() { - @Override - public boolean test(Integer t1) { - return false; - } - }).toObservable() - .flatMap(new Function>() { - @Override - public Observable apply(Boolean t1) { - return Observable.just(2).delay(500, TimeUnit.MILLISECONDS); - } - }); + .all(_ -> false).toObservable() + .flatMap((Function>) _ -> Observable.just(2).delay(500, TimeUnit.MILLISECONDS)); assertEquals((Object)2, source.blockingFirst()); } @@ -150,11 +115,8 @@ public void predicateThrowsExceptionAndValueInCauseMessageObservable() { final IllegalArgumentException ex = new IllegalArgumentException(); - Observable.just("Boo!").all(new Predicate() { - @Override - public boolean test(String v) { - throw ex; - } + Observable.just("Boo!").all(_ -> { + throw ex; }) .subscribe(to); @@ -172,12 +134,7 @@ public void all() { SingleObserver observer = TestHelper.mockSingleObserver(); - obs.all(new Predicate() { - @Override - public boolean test(String s) { - return s.length() == 3; - } - }) + obs.all(s -> s.length() == 3) .subscribe(observer); verify(observer).onSubscribe(any()); @@ -191,12 +148,7 @@ public void notAll() { SingleObserver observer = TestHelper.mockSingleObserver(); - obs.all(new Predicate() { - @Override - public boolean test(String s) { - return s.length() == 3; - } - }) + obs.all(s -> s.length() == 3) .subscribe(observer); verify(observer).onSubscribe(any()); @@ -210,12 +162,7 @@ public void empty() { SingleObserver observer = TestHelper.mockSingleObserver(); - obs.all(new Predicate() { - @Override - public boolean test(String s) { - return s.length() == 3; - } - }) + obs.all(s -> s.length() == 3) .subscribe(observer); verify(observer).onSubscribe(any()); @@ -230,12 +177,7 @@ public void error() { SingleObserver observer = TestHelper.mockSingleObserver(); - obs.all(new Predicate() { - @Override - public boolean test(String s) { - return s.length() == 3; - } - }) + obs.all(s -> s.length() == 3) .subscribe(observer); verify(observer).onSubscribe(any()); @@ -246,12 +188,7 @@ public boolean test(String s) { @Test public void followingFirst() { Observable o = Observable.fromArray(1, 3, 5, 6); - Single allOdd = o.all(new Predicate() { - @Override - public boolean test(Integer i) { - return i % 2 == 1; - } - }); + Single allOdd = o.all(i -> i % 2 == 1); assertFalse(allOdd.blockingGet()); } @@ -259,18 +196,8 @@ public boolean test(Integer i) { @Test public void issue1935NoUnsubscribeDownstream() { Observable source = Observable.just(1) - .all(new Predicate() { - @Override - public boolean test(Integer t1) { - return false; - } - }) - .flatMapObservable(new Function>() { - @Override - public Observable apply(Boolean t1) { - return Observable.just(2).delay(500, TimeUnit.MILLISECONDS); - } - }); + .all(_ -> false) + .flatMapObservable((Function>) _ -> Observable.just(2).delay(500, TimeUnit.MILLISECONDS)); assertEquals((Object)2, source.blockingFirst()); } @@ -281,11 +208,8 @@ public void predicateThrowsExceptionAndValueInCauseMessage() { final IllegalArgumentException ex = new IllegalArgumentException(); - Observable.just("Boo!").all(new Predicate() { - @Override - public boolean test(String v) { - throw ex; - } + Observable.just("Boo!").all(_ -> { + throw ex; }) .subscribe(to); @@ -319,11 +243,8 @@ protected void subscribeActual(Observer observer) { observer.onComplete(); } } - .all(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - throw new TestException(); - } + .all(_ -> { + throw new TestException(); }) .toObservable() .test() @@ -350,11 +271,8 @@ protected void subscribeActual(Observer observer) { observer.onComplete(); } } - .all(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - throw new TestException(); - } + .all(_ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAmbTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAmbTest.java index ff75c740c3..7c8006b83b 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAmbTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAmbTest.java @@ -50,36 +50,24 @@ public void setUp() { private Observable createObservable(final String[] values, final long interval, final Throwable e) { - return Observable.unsafeCreate(new ObservableSource() { + return Observable.unsafeCreate(observer -> { + CompositeDisposable parentSubscription = new CompositeDisposable(); - @Override - public void subscribe(final Observer observer) { - CompositeDisposable parentSubscription = new CompositeDisposable(); + observer.onSubscribe(parentSubscription); - observer.onSubscribe(parentSubscription); - - long delay = interval; - for (final String value : values) { - parentSubscription.add(innerScheduler.schedule(new Runnable() { - @Override - public void run() { - observer.onNext(value); - } - } - , delay, TimeUnit.MILLISECONDS)); - delay += interval; - } - parentSubscription.add(innerScheduler.schedule(new Runnable() { - @Override - public void run() { - if (e == null) { - observer.onComplete(); - } else { - observer.onError(e); - } - } - }, delay, TimeUnit.MILLISECONDS)); + long delay = interval; + for (final String value : values) { + parentSubscription.add(innerScheduler.schedule(() -> observer.onNext(value) + , delay, TimeUnit.MILLISECONDS)); + delay += interval; } + parentSubscription.add(innerScheduler.schedule(() -> { + if (e == null) { + observer.onComplete(); + } else { + observer.onError(e); + } + }, delay, TimeUnit.MILLISECONDS)); }); } @@ -161,12 +149,7 @@ public void amb3() { @Test public void subscriptionOnlyHappensOnce() throws InterruptedException { final AtomicLong count = new AtomicLong(); - Consumer incrementer = new Consumer() { - @Override - public void accept(Disposable d) { - count.incrementAndGet(); - } - }; + Consumer incrementer = _ -> count.incrementAndGet(); //this aync stream should emit first Observable o1 = Observable.just(1).doOnSubscribe(incrementer) @@ -188,15 +171,12 @@ public void synchronousSources() { // then second Observable does not get subscribed to before first // subscription completes hence first Observable emits result through // amb - int result = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - try { - Thread.sleep(100); - } catch (InterruptedException e) { - // - } - } + int result = Observable.just(1).doOnNext(_ -> { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + // + } }).ambWith(Observable.just(2)).blockingSingle(); assertEquals(1, result); } @@ -272,18 +252,8 @@ public void onNextRace() { TestObserverEx to = Observable.ambArray(ps1, ps2).to(TestHelper.testConsumer()); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps1.onNext(1); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - ps2.onNext(1); - } - }; + Runnable r1 = () -> ps1.onNext(1); + Runnable r2 = () -> ps2.onNext(1); TestHelper.race(r1, r2); @@ -302,18 +272,8 @@ public void onCompleteRace() { TestObserver to = Observable.ambArray(ps1, ps2).test(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps1.onComplete(); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - ps2.onComplete(); - } - }; + Runnable r1 = ps1::onComplete; + Runnable r2 = ps2::onComplete; TestHelper.race(r1, r2); @@ -331,18 +291,8 @@ public void onErrorRace() { final Throwable ex = new TestException(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps1.onError(ex); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - ps2.onError(ex); - } - }; + Runnable r1 = () -> ps1.onError(ex); + Runnable r2 = () -> ps2.onError(ex); List errors = TestHelper.trackPluginErrors(); try { @@ -388,12 +338,9 @@ public void noWinnerSuccessDispose() throws Exception { .observeOn(Schedulers.computation()), Observable.never() ) - .subscribe(new Consumer() { - @Override - public void accept(Object v) throws Exception { - interrupted.set(Thread.currentThread().isInterrupted()); - cdl.countDown(); - } + .subscribe((Consumer) _ -> { + interrupted.set(Thread.currentThread().isInterrupted()); + cdl.countDown(); }); assertTrue(cdl.await(500, TimeUnit.SECONDS)); @@ -414,12 +361,9 @@ public void noWinnerErrorDispose() throws Exception { .observeOn(Schedulers.computation()), Observable.never() ) - .subscribe(Functions.emptyConsumer(), new Consumer() { - @Override - public void accept(Throwable e) throws Exception { - interrupted.set(Thread.currentThread().isInterrupted()); - cdl.countDown(); - } + .subscribe(Functions.emptyConsumer(), _ -> { + interrupted.set(Thread.currentThread().isInterrupted()); + cdl.countDown(); }); assertTrue(cdl.await(500, TimeUnit.SECONDS)); @@ -439,12 +383,9 @@ public void noWinnerCompleteDispose() throws Exception { .observeOn(Schedulers.computation()), Observable.never() ) - .subscribe(Functions.emptyConsumer(), Functions.emptyConsumer(), new Action() { - @Override - public void run() throws Exception { - interrupted.set(Thread.currentThread().isInterrupted()); - cdl.countDown(); - } + .subscribe(Functions.emptyConsumer(), Functions.emptyConsumer(), () -> { + interrupted.set(Thread.currentThread().isInterrupted()); + cdl.countDown(); }); assertTrue(cdl.await(500, TimeUnit.SECONDS)); @@ -454,12 +395,7 @@ public void run() throws Exception { @Test public void observableSourcesInIterable() { - ObservableSource source = new ObservableSource() { - @Override - public void subscribe(Observer observer) { - Observable.just(1).subscribe(observer); - } - }; + ObservableSource source = observer -> Observable.just(1).subscribe(observer); Observable.amb(Arrays.asList(source, source)) .test() diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAnyTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAnyTest.java index 9a4881cc7e..6902003d9d 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAnyTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableAnyTest.java @@ -36,12 +36,7 @@ public class ObservableAnyTest extends RxJavaTest { @Test public void anyWithTwoItemsObservable() { Observable w = Observable.just(1, 2); - Observable observable = w.any(new Predicate() { - @Override - public boolean test(Integer v) { - return true; - } - }).toObservable(); + Observable observable = w.any(_ -> true).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -71,12 +66,7 @@ public void isEmptyWithTwoItemsObservable() { @Test public void anyWithOneItemObservable() { Observable w = Observable.just(1); - Observable observable = w.any(new Predicate() { - @Override - public boolean test(Integer v) { - return true; - } - }).toObservable(); + Observable observable = w.any(_ -> true).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -106,12 +96,7 @@ public void isEmptyWithOneItemObservable() { @Test public void anyWithEmptyObservable() { Observable w = Observable.empty(); - Observable observable = w.any(new Predicate() { - @Override - public boolean test(Integer v) { - return true; - } - }).toObservable(); + Observable observable = w.any(_ -> true).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -141,12 +126,7 @@ public void isEmptyWithEmptyObservable() { @Test public void anyWithPredicate1Observable() { Observable w = Observable.just(1, 2, 3); - Observable observable = w.any(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 < 2; - } - }).toObservable(); + Observable observable = w.any(t1 -> t1 < 2).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -161,12 +141,7 @@ public boolean test(Integer t1) { @Test public void exists1Observable() { Observable w = Observable.just(1, 2, 3); - Observable observable = w.any(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 < 2; - } - }).toObservable(); + Observable observable = w.any(t1 -> t1 < 2).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -181,12 +156,7 @@ public boolean test(Integer t1) { @Test public void anyWithPredicate2Observable() { Observable w = Observable.just(1, 2, 3); - Observable observable = w.any(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 < 1; - } - }).toObservable(); + Observable observable = w.any(t1 -> t1 < 1).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -202,12 +172,7 @@ public boolean test(Integer t1) { public void anyWithEmptyAndPredicateObservable() { // If the source is empty, always output false. Observable w = Observable.empty(); - Observable observable = w.any(new Predicate() { - @Override - public boolean test(Integer t) { - return true; - } - }).toObservable(); + Observable observable = w.any(_ -> true).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -222,12 +187,7 @@ public boolean test(Integer t) { @Test public void withFollowingFirstObservable() { Observable o = Observable.fromArray(1, 3, 5, 6); - Observable anyEven = o.any(new Predicate() { - @Override - public boolean test(Integer i) { - return i % 2 == 0; - } - }).toObservable(); + Observable anyEven = o.any(i -> i % 2 == 0).toObservable(); assertTrue(anyEven.blockingFirst()); } @@ -235,12 +195,7 @@ public boolean test(Integer i) { @Test public void issue1935NoUnsubscribeDownstreamObservable() { Observable source = Observable.just(1).isEmpty().toObservable() - .flatMap(new Function>() { - @Override - public Observable apply(Boolean t1) { - return Observable.just(2).delay(500, TimeUnit.MILLISECONDS); - } - }); + .flatMap((Function>) _ -> Observable.just(2).delay(500, TimeUnit.MILLISECONDS)); assertEquals((Object)2, source.blockingFirst()); } @@ -250,11 +205,8 @@ public void predicateThrowsExceptionAndValueInCauseMessageObservable() { TestObserverEx to = new TestObserverEx<>(); final IllegalArgumentException ex = new IllegalArgumentException(); - Observable.just("Boo!").any(new Predicate() { - @Override - public boolean test(String v) { - throw ex; - } + Observable.just("Boo!").any(_ -> { + throw ex; }).subscribe(to); to.assertTerminated(); @@ -268,12 +220,7 @@ public boolean test(String v) { @Test public void anyWithTwoItems() { Observable w = Observable.just(1, 2); - Single single = w.any(new Predicate() { - @Override - public boolean test(Integer v) { - return true; - } - }); + Single single = w.any(_ -> true); SingleObserver observer = TestHelper.mockSingleObserver(); @@ -301,12 +248,7 @@ public void isEmptyWithTwoItems() { @Test public void anyWithOneItem() { Observable w = Observable.just(1); - Single single = w.any(new Predicate() { - @Override - public boolean test(Integer v) { - return true; - } - }); + Single single = w.any(_ -> true); SingleObserver observer = TestHelper.mockSingleObserver(); @@ -334,12 +276,7 @@ public void isEmptyWithOneItem() { @Test public void anyWithEmpty() { Observable w = Observable.empty(); - Single single = w.any(new Predicate() { - @Override - public boolean test(Integer v) { - return true; - } - }); + Single single = w.any(_ -> true); SingleObserver observer = TestHelper.mockSingleObserver(); @@ -367,12 +304,7 @@ public void isEmptyWithEmpty() { @Test public void anyWithPredicate1() { Observable w = Observable.just(1, 2, 3); - Single single = w.any(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 < 2; - } - }); + Single single = w.any(t1 -> t1 < 2); SingleObserver observer = TestHelper.mockSingleObserver(); @@ -386,12 +318,7 @@ public boolean test(Integer t1) { @Test public void exists1() { Observable w = Observable.just(1, 2, 3); - Single single = w.any(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 < 2; - } - }); + Single single = w.any(t1 -> t1 < 2); SingleObserver observer = TestHelper.mockSingleObserver(); @@ -405,12 +332,7 @@ public boolean test(Integer t1) { @Test public void anyWithPredicate2() { Observable w = Observable.just(1, 2, 3); - Single single = w.any(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 < 1; - } - }); + Single single = w.any(t1 -> t1 < 1); SingleObserver observer = TestHelper.mockSingleObserver(); @@ -425,12 +347,7 @@ public boolean test(Integer t1) { public void anyWithEmptyAndPredicate() { // If the source is empty, always output false. Observable w = Observable.empty(); - Single single = w.any(new Predicate() { - @Override - public boolean test(Integer t) { - return true; - } - }); + Single single = w.any(_ -> true); SingleObserver observer = TestHelper.mockSingleObserver(); @@ -444,12 +361,7 @@ public boolean test(Integer t) { @Test public void withFollowingFirst() { Observable o = Observable.fromArray(1, 3, 5, 6); - Single anyEven = o.any(new Predicate() { - @Override - public boolean test(Integer i) { - return i % 2 == 0; - } - }); + Single anyEven = o.any(i -> i % 2 == 0); assertTrue(anyEven.blockingGet()); } @@ -457,12 +369,7 @@ public boolean test(Integer i) { @Test public void issue1935NoUnsubscribeDownstream() { Observable source = Observable.just(1).isEmpty() - .flatMapObservable(new Function>() { - @Override - public Observable apply(Boolean t1) { - return Observable.just(2).delay(500, TimeUnit.MILLISECONDS); - } - }); + .flatMapObservable((Function>) _ -> Observable.just(2).delay(500, TimeUnit.MILLISECONDS)); assertEquals((Object)2, source.blockingFirst()); } @@ -472,11 +379,8 @@ public void predicateThrowsExceptionAndValueInCauseMessage() { TestObserverEx to = new TestObserverEx<>(); final IllegalArgumentException ex = new IllegalArgumentException(); - Observable.just("Boo!").any(new Predicate() { - @Override - public boolean test(String v) { - throw ex; - } + Observable.just("Boo!").any(_ -> { + throw ex; }).subscribe(to); to.assertTerminated(); @@ -496,18 +400,8 @@ public void dispose() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable o) throws Exception { - return o.any(Functions.alwaysTrue()).toObservable(); - } - }); - TestHelper.checkDoubleOnSubscribeObservableToSingle(new Function, SingleSource>() { - @Override - public SingleSource apply(Observable o) throws Exception { - return o.any(Functions.alwaysTrue()); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(o -> o.any(Functions.alwaysTrue()).toObservable()); + TestHelper.checkDoubleOnSubscribeObservableToSingle(o -> o.any(Functions.alwaysTrue())); } @Test @@ -525,11 +419,8 @@ protected void subscribeActual(Observer observer) { observer.onComplete(); } } - .any(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - throw new TestException(); - } + .any(_ -> { + throw new TestException(); }) .toObservable() .test() diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBlockingTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBlockingTest.java index aa5431071d..a2d02299b6 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBlockingTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBlockingTest.java @@ -17,15 +17,16 @@ import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; import org.junit.Test; import io.reactivex.rxjava4.core.Observable; import io.reactivex.rxjava4.core.Observer; import io.reactivex.rxjava4.core.RxJavaTest; -import io.reactivex.rxjava4.disposables.*; +import io.reactivex.rxjava4.disposables.Disposable; import io.reactivex.rxjava4.exceptions.TestException; -import io.reactivex.rxjava4.functions.*; +import io.reactivex.rxjava4.functions.Consumer; import io.reactivex.rxjava4.internal.functions.Functions; import io.reactivex.rxjava4.internal.observers.BlockingFirstObserver; import io.reactivex.rxjava4.observers.TestObserver; @@ -52,12 +53,7 @@ public void blockingSubscribeConsumer() { Observable.range(1, 5) .subscribeOn(Schedulers.computation()) - .blockingSubscribe(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - list.add(v); - } - }); + .blockingSubscribe(list::add); assertEquals(Arrays.asList(1, 2, 3, 4, 5), list); } @@ -68,12 +64,7 @@ public void blockingSubscribeConsumerConsumer() { Observable.range(1, 5) .subscribeOn(Schedulers.computation()) - .blockingSubscribe(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - list.add(v); - } - }, Functions.emptyConsumer()); + .blockingSubscribe(list::add, Functions.emptyConsumer()); assertEquals(Arrays.asList(1, 2, 3, 4, 5), list); } @@ -84,12 +75,7 @@ public void blockingSubscribeConsumerConsumerError() { TestException ex = new TestException(); - Consumer cons = new Consumer() { - @Override - public void accept(Object v) throws Exception { - list.add(v); - } - }; + Consumer cons = list::add; Observable.range(1, 5).concatWith(Observable.error(ex)) .subscribeOn(Schedulers.computation()) @@ -102,21 +88,11 @@ public void accept(Object v) throws Exception { public void blockingSubscribeConsumerConsumerAction() { final List list = new ArrayList<>(); - Consumer cons = new Consumer() { - @Override - public void accept(Object v) throws Exception { - list.add(v); - } - }; + Consumer cons = list::add; Observable.range(1, 5) .subscribeOn(Schedulers.computation()) - .blockingSubscribe(cons, cons, new Action() { - @Override - public void run() throws Exception { - list.add(100); - } - }); + .blockingSubscribe(cons, cons, () -> list.add(100)); assertEquals(Arrays.asList(1, 2, 3, 4, 5, 100), list); } @@ -192,11 +168,8 @@ public void onComplete() { @Test(expected = TestException.class) public void blockingForEachThrows() { Observable.just(1) - .blockingForEach(new Consumer() { - @Override - public void accept(Integer e) throws Exception { - throw new TestException(); - } + .blockingForEach(_ -> { + throw new TestException(); }); } @@ -239,26 +212,21 @@ public void disposeUpFront() { to.assertEmpty(); } - @SuppressWarnings("rawtypes") @Test public void delayed() throws Exception { final TestObserver to = new TestObserver<>(); - final Observer[] s = { null }; + final AtomicReference> s = new AtomicReference<>(); - Schedulers.single().scheduleDirect(new Runnable() { - @SuppressWarnings("unchecked") - @Override - public void run() { - to.dispose(); - s[0].onNext(1); - } + Schedulers.single().scheduleDirect(() -> { + to.dispose(); + s.get().onNext(1); }, 200, TimeUnit.MILLISECONDS); new Observable() { @Override protected void subscribeActual(Observer observer) { observer.onSubscribe(Disposable.empty()); - s[0] = observer; + s.set(observer); } }.blockingSubscribe(to); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBufferTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBufferTest.java index 4af6dc8e15..11ee390358 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBufferTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBufferTest.java @@ -67,16 +67,13 @@ public void complete() { @Test public void skipAndCountOverlappingBuffers() { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onNext("one"); - observer.onNext("two"); - observer.onNext("three"); - observer.onNext("four"); - observer.onNext("five"); - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onNext("one"); + observer.onNext("two"); + observer.onNext("three"); + observer.onNext("four"); + observer.onNext("five"); }); Observable> buffered = source.buffer(3, 1); @@ -123,17 +120,14 @@ public void skipAndCountBuffersWithGaps() { @Test public void timedAndCount() { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - push(observer, "one", 10); - push(observer, "two", 90); - push(observer, "three", 110); - push(observer, "four", 190); - push(observer, "five", 210); - complete(observer, 250); - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + push(observer, "one", 10); + push(observer, "two", 90); + push(observer, "three", 110); + push(observer, "four", 190); + push(observer, "five", 210); + complete(observer, 250); }); Observable> buffered = source.buffer(100, TimeUnit.MILLISECONDS, scheduler, 2); @@ -155,22 +149,19 @@ public void subscribe(Observer observer) { @Test public void timed() { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - push(observer, "one", 97); - push(observer, "two", 98); - /** - * Changed from 100. Because scheduling the cut to 100ms happens before this - * Observable even runs due how lift works, pushing at 100ms would execute after the - * buffer cut. - */ - push(observer, "three", 99); - push(observer, "four", 101); - push(observer, "five", 102); - complete(observer, 150); - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + push(observer, "one", 97); + push(observer, "two", 98); + /** + * Changed from 100. Because scheduling the cut to 100ms happens before this + * Observable even runs due how lift works, pushing at 100ms would execute after the + * buffer cut. + */ + push(observer, "three", 99); + push(observer, "four", 101); + push(observer, "five", 102); + complete(observer, 150); }); Observable> buffered = source.buffer(100, TimeUnit.MILLISECONDS, scheduler); @@ -189,42 +180,28 @@ public void subscribe(Observer observer) { @Test public void observableBasedOpenerAndCloser() { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - push(observer, "one", 10); - push(observer, "two", 60); - push(observer, "three", 110); - push(observer, "four", 160); - push(observer, "five", 210); - complete(observer, 500); - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + push(observer, "one", 10); + push(observer, "two", 60); + push(observer, "three", 110); + push(observer, "four", 160); + push(observer, "five", 210); + complete(observer, 500); }); - Observable openings = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - push(observer, new Object(), 50); - push(observer, new Object(), 200); - complete(observer, 250); - } + Observable openings = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + push(observer, new Object(), 50); + push(observer, new Object(), 200); + complete(observer, 250); }); - Function> closer = new Function>() { - @Override - public Observable apply(Object opening) { - return Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - push(observer, new Object(), 100); - complete(observer, 101); - } - }); - } - }; + Function> closer = _ -> Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + push(observer, new Object(), 100); + complete(observer, 101); + }); Observable> buffered = source.buffer(openings, closer); buffered.subscribe(observer); @@ -281,21 +258,11 @@ private List list(String... args) { } private void push(final Observer observer, final T value, int delay) { - innerScheduler.schedule(new Runnable() { - @Override - public void run() { - observer.onNext(value); - } - }, delay, TimeUnit.MILLISECONDS); + innerScheduler.schedule(() -> observer.onNext(value), delay, TimeUnit.MILLISECONDS); } private void complete(final Observer observer, int delay) { - innerScheduler.schedule(new Runnable() { - @Override - public void run() { - observer.onComplete(); - } - }, delay, TimeUnit.MILLISECONDS); + innerScheduler.schedule(observer::onComplete, delay, TimeUnit.MILLISECONDS); } @Test @@ -306,12 +273,7 @@ public void bufferStopsWhenUnsubscribed1() { TestObserver> to = new TestObserver<>(o); source.buffer(100, 200, TimeUnit.MILLISECONDS, scheduler) - .doOnNext(new Consumer>() { - @Override - public void accept(List pv) { - System.out.println(pv); - } - }) + .doOnNext(System.out::println) .subscribe(to); InOrder inOrder = Mockito.inOrder(o); @@ -543,12 +505,7 @@ public void bufferWithBoundaryTake2() { @Test public void bufferWithStartEndBoundaryTake2() { Observable start = Observable.interval(61, 61, TimeUnit.MILLISECONDS, scheduler); - Function> end = new Function>() { - @Override - public Observable apply(Long t1) { - return Observable.interval(100, 100, TimeUnit.MILLISECONDS, scheduler); - } - }; + Function> end = _ -> Observable.interval(100, 100, TimeUnit.MILLISECONDS, scheduler); Observable source = Observable.interval(40, 40, TimeUnit.MILLISECONDS, scheduler); @@ -558,12 +515,7 @@ public Observable apply(Long t1) { InOrder inOrder = inOrder(o); result - .doOnNext(new Consumer>() { - @Override - public void accept(List pv) { - System.out.println(pv); - } - }) + .doOnNext(System.out::println) .subscribe(o); scheduler.advanceTimeBy(5, TimeUnit.SECONDS); @@ -648,12 +600,7 @@ public void bufferWithTimeAndSize() { public void bufferWithStartEndStartThrows() { PublishSubject start = PublishSubject.create(); - Function> end = new Function>() { - @Override - public Observable apply(Integer t1) { - return Observable.never(); - } - }; + Function> end = _ -> Observable.never(); PublishSubject source = PublishSubject.create(); @@ -677,11 +624,8 @@ public Observable apply(Integer t1) { public void bufferWithStartEndEndFunctionThrows() { PublishSubject start = PublishSubject.create(); - Function> end = new Function>() { - @Override - public Observable apply(Integer t1) { - throw new TestException(); - } + Function> end = _ -> { + throw new TestException(); }; PublishSubject source = PublishSubject.create(); @@ -705,12 +649,7 @@ public Observable apply(Integer t1) { public void bufferWithStartEndEndThrows() { PublishSubject start = PublishSubject.create(); - Function> end = new Function>() { - @Override - public Observable apply(Integer t1) { - return Observable.error(new TestException()); - } - }; + Function> end = _ -> Observable.error(new TestException()); PublishSubject source = PublishSubject.create(); @@ -785,12 +724,7 @@ static HashSet set(Integer... values) { @Test public void bufferIntoCustomCollection() { Observable.just(1, 1, 2, 2, 3, 3, 4, 4) - .buffer(3, new Supplier>() { - @Override - public Collection get() throws Exception { - return new HashSet<>(); - } - }) + .buffer(3, (Supplier>) HashSet::new) .test() .assertResult(set(1, 2), set(2, 3), set(4)); } @@ -798,12 +732,7 @@ public Collection get() throws Exception { @Test public void bufferSkipIntoCustomCollection() { Observable.just(1, 1, 2, 2, 3, 3, 4, 4) - .buffer(3, 3, new Supplier>() { - @Override - public Collection get() throws Exception { - return new HashSet<>(); - } - }) + .buffer(3, 3, (Supplier>) HashSet::new) .test() .assertResult(set(1, 2), set(2, 3), set(4)); } @@ -811,11 +740,8 @@ public Collection get() throws Exception { @Test public void supplierThrows() { Observable.just(1) - .buffer(1, TimeUnit.SECONDS, Schedulers.single(), Integer.MAX_VALUE, new Supplier>() { - @Override - public Collection get() throws Exception { - throw new TestException(); - } + .buffer(1, TimeUnit.SECONDS, Schedulers.single(), Integer.MAX_VALUE, (Supplier>) () -> { + throw new TestException(); }, false) .test() .assertFailure(TestException.class); @@ -824,11 +750,8 @@ public Collection get() throws Exception { @Test public void supplierThrows2() { Observable.just(1) - .buffer(1, TimeUnit.SECONDS, Schedulers.single(), 10, new Supplier>() { - @Override - public Collection get() throws Exception { - throw new TestException(); - } + .buffer(1, TimeUnit.SECONDS, Schedulers.single(), 10, (Supplier>) () -> { + throw new TestException(); }, false) .test() .assertFailure(TestException.class); @@ -837,11 +760,8 @@ public Collection get() throws Exception { @Test public void supplierThrows3() { Observable.just(1) - .buffer(2, 1, TimeUnit.SECONDS, Schedulers.single(), new Supplier>() { - @Override - public Collection get() throws Exception { - throw new TestException(); - } + .buffer(2, 1, TimeUnit.SECONDS, Schedulers.single(), (Supplier>) () -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); @@ -1154,19 +1074,9 @@ public void withTimeAndSizeCapacityRace() { ps.onNext(3); ps.onNext(4); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps.onNext(5); - } - }; + Runnable r1 = () -> ps.onNext(5); - Runnable r2 = new Runnable() { - @Override - public void run() { - scheduler.advanceTimeBy(1, TimeUnit.SECONDS); - } - }; + Runnable r2 = () -> scheduler.advanceTimeBy(1, TimeUnit.SECONDS); TestHelper.race(r1, r2); @@ -1186,12 +1096,7 @@ public void noCompletionCancelExact() { final AtomicInteger counter = new AtomicInteger(); Observable.empty() - .doOnDispose(new Action() { - @Override - public void run() throws Exception { - counter.getAndIncrement(); - } - }) + .doOnDispose(counter::getAndIncrement) .buffer(5, TimeUnit.SECONDS) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -1205,12 +1110,7 @@ public void noCompletionCancelSkip() { final AtomicInteger counter = new AtomicInteger(); Observable.empty() - .doOnDispose(new Action() { - @Override - public void run() throws Exception { - counter.getAndIncrement(); - } - }) + .doOnDispose(counter::getAndIncrement) .buffer(5, 10, TimeUnit.SECONDS) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -1224,12 +1124,7 @@ public void noCompletionCancelOverlap() { final AtomicInteger counter = new AtomicInteger(); Observable.empty() - .doOnDispose(new Action() { - @Override - public void run() throws Exception { - counter.getAndIncrement(); - } - }) + .doOnDispose(counter::getAndIncrement) .buffer(10, 5, TimeUnit.SECONDS) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -1271,19 +1166,9 @@ public void boundaryOpenCloseDisposedOnComplete() { public void bufferedCanCompleteIfOpenNeverCompletesDropping() { Observable.range(1, 50) .zipWith(Observable.interval(5, TimeUnit.MILLISECONDS), - new BiFunction() { - @Override - public Integer apply(Integer integer, Long aLong) { - return integer; - } - }) + (integer, _) -> integer) .buffer(Observable.interval(0, 200, TimeUnit.MILLISECONDS), - new Function>() { - @Override - public Observable apply(Long a) { - return Observable.just(a).delay(100, TimeUnit.MILLISECONDS); - } - }) + (Function>) a -> Observable.just(a).delay(100, TimeUnit.MILLISECONDS)) .to(TestHelper.>testConsumer()) .assertSubscribed() .awaitDone(3, TimeUnit.SECONDS) @@ -1294,19 +1179,9 @@ public Observable apply(Long a) { public void bufferedCanCompleteIfOpenNeverCompletesOverlapping() { Observable.range(1, 50) .zipWith(Observable.interval(5, TimeUnit.MILLISECONDS), - new BiFunction() { - @Override - public Integer apply(Integer integer, Long aLong) { - return integer; - } - }) + (integer, _) -> integer) .buffer(Observable.interval(0, 100, TimeUnit.MILLISECONDS), - new Function>() { - @Override - public Observable apply(Long a) { - return Observable.just(a).delay(200, TimeUnit.MILLISECONDS); - } - }) + (Function>) a -> Observable.just(a).delay(200, TimeUnit.MILLISECONDS)) .to(TestHelper.>testConsumer()) .assertSubscribed() .awaitDone(3, TimeUnit.SECONDS) @@ -1527,13 +1402,7 @@ protected void subscribeActual(Observer observer) { @Test public void bufferExactBoundaryDoubleOnSubscribe() { TestHelper.checkDoubleOnSubscribeObservable( - new Function, ObservableSource>>() { - @Override - public ObservableSource> apply(Observable f) - throws Exception { - return f.buffer(Observable.never()); - } - } + f -> f.buffer(Observable.never()) ); } @@ -1588,13 +1457,7 @@ protected void subscribeActual(Observer observer) { @Test public void timedDoubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, Observable>>() { - @Override - public Observable> apply(Observable f) - throws Exception { - return f.buffer(1, TimeUnit.SECONDS); - } - }); + TestHelper.checkDoubleOnSubscribeObservable((Function, Observable>>) f -> f.buffer(1, TimeUnit.SECONDS)); } @Test @@ -1641,24 +1504,12 @@ public void timedInternalState() { @Test public void timedSkipDoubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, Observable>>() { - @Override - public Observable> apply(Observable f) - throws Exception { - return f.buffer(2, 1, TimeUnit.SECONDS); - } - }); + TestHelper.checkDoubleOnSubscribeObservable((Function, Observable>>) f -> f.buffer(2, 1, TimeUnit.SECONDS)); } @Test public void timedSizedDoubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, Observable>>() { - @Override - public Observable> apply(Observable f) - throws Exception { - return f.buffer(2, TimeUnit.SECONDS, 10); - } - }); + TestHelper.checkDoubleOnSubscribeObservable((Function, Observable>>) f -> f.buffer(2, TimeUnit.SECONDS, 10)); } @Test @@ -1745,13 +1596,7 @@ public void timedSizeBufferAlreadyCleared() { @Test public void bufferExactDoubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>>() { - @Override - public ObservableSource> apply(Observable o) - throws Exception { - return o.buffer(1); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(o -> o.buffer(1)); } @Test @@ -1770,23 +1615,14 @@ public void bufferExactState() { @Test public void bufferSkipDoubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>>() { - @Override - public ObservableSource> apply(Observable o) - throws Exception { - return o.buffer(1, 2); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(o -> o.buffer(1, 2)); } @Test public void bufferExactFailingSupplier() { Observable.empty() - .buffer(1, TimeUnit.SECONDS, Schedulers.computation(), 10, new Supplier>() { - @Override - public List get() throws Exception { - throw new TestException(); - } + .buffer(1, TimeUnit.SECONDS, Schedulers.computation(), 10, (Supplier>) () -> { + throw new TestException(); }, false) .test() .awaitDone(1, TimeUnit.SECONDS) diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBufferUntilSubscriberTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBufferUntilSubscriberTest.java index f948255f11..feb2f85b97 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBufferUntilSubscriberTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBufferUntilSubscriberTest.java @@ -13,7 +13,6 @@ package io.reactivex.rxjava4.internal.operators.observable; -import java.util.List; import java.util.concurrent.*; import java.util.concurrent.atomic.*; @@ -42,32 +41,21 @@ public void issue1677() throws InterruptedException { Observable.fromArray(numbers) .takeUntil(s) .window(50) - .flatMap(new Function, Observable>() { - @Override - public Observable apply(Observable integerObservable) { - return integerObservable - .subscribeOn(Schedulers.computation()) - .map(new Function() { - @Override - public Object apply(Integer integer) { - if (integer >= 5 && completed.compareAndSet(false, true)) { - s.onComplete(); - } - // do some work - Math.pow(Math.random(), Math.random()); - return integer * 2; - } - }); - } - }) + .flatMap((Function, Observable>) integerObservable -> integerObservable + .subscribeOn(Schedulers.computation()) + .map((Function) integer -> { + if (integer >= 5 && completed.compareAndSet(false, true)) { + s.onComplete(); + } + // do some work + Math.pow(Math.random(), Math.random()); + return integer * 2; + })) .toList() - .doOnSuccess(new Consumer>() { - @Override - public void accept(List integers) { - counter.incrementAndGet(); - latch.countDown(); - innerLatch.countDown(); - } + .doOnSuccess(_ -> { + counter.incrementAndGet(); + latch.countDown(); + innerLatch.countDown(); }) .subscribe(); if (!innerLatch.await(30, TimeUnit.SECONDS)) { diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCacheTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCacheTest.java index ff8c546133..d92f9b6408 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCacheTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCacheTest.java @@ -25,11 +25,11 @@ import java.util.concurrent.atomic.AtomicLong; import io.reactivex.rxjava4.observables.ConnectableObservable; +import org.junit.Assert; import org.junit.Test; import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.core.Observable; -import io.reactivex.rxjava4.core.Observer; import io.reactivex.rxjava4.disposables.Disposable; import io.reactivex.rxjava4.exceptions.TestException; import io.reactivex.rxjava4.functions.*; @@ -65,45 +65,31 @@ public void coldReplayNoBackpressure() { @Test public void cache() throws InterruptedException { final AtomicInteger counter = new AtomicInteger(); - Observable o = Observable.unsafeCreate(new ObservableSource() { - - @Override - public void subscribe(final Observer observer) { - observer.onSubscribe(Disposable.empty()); - new Thread(new Runnable() { - - @Override - public void run() { - counter.incrementAndGet(); - System.out.println("published Observable being executed"); - observer.onNext("one"); - observer.onComplete(); - } - }).start(); - } + Observable o = Observable.unsafeCreate((ObservableSource) observer -> { + observer.onSubscribe(Disposable.empty()); + new Thread(() -> { + counter.incrementAndGet(); + System.out.println("published Observable being executed"); + observer.onNext("one"); + observer.onComplete(); + }).start(); }).cache(); // we then expect the following 2 subscriptions to get that same value final CountDownLatch latch = new CountDownLatch(2); // subscribe once - o.subscribe(new Consumer() { - @Override - public void accept(String v) { - assertEquals("one", v); - System.out.println("v: " + v); - latch.countDown(); - } + o.subscribe(v -> { + Assert.assertEquals("one", v); + System.out.println("v: " + v); + latch.countDown(); }); // subscribe again - o.subscribe(new Consumer() { - @Override - public void accept(String v) { - assertEquals("one", v); - System.out.println("v: " + v); - latch.countDown(); - } + o.subscribe(v -> { + Assert.assertEquals("one", v); + System.out.println("v: " + v); + latch.countDown(); }); if (!latch.await(1000, TimeUnit.MILLISECONDS)) { @@ -200,15 +186,12 @@ public void asyncComeAndGo() { @Test public void noMissingBackpressureException() { final int m = 4 * 1000 * 1000; - Observable firehose = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer t) { - t.onSubscribe(Disposable.empty()); - for (int i = 0; i < m; i++) { - t.onNext(i); - } - t.onComplete(); + Observable firehose = Observable.unsafeCreate(t -> { + t.onSubscribe(Disposable.empty()); + for (int i = 0; i < m; i++) { + t.onNext(i); } + t.onComplete(); }); TestObserver to = new TestObserver<>(); @@ -303,21 +286,13 @@ public void subscribeEmitRace() { final TestObserverEx to = new TestObserverEx<>(); - Runnable r1 = new Runnable() { - @Override - public void run() { - cache.subscribe(to); - } - }; + Runnable r1 = () -> cache.subscribe(to); - Runnable r2 = new Runnable() { - @Override - public void run() { - for (int j = 0; j < 500; j++) { - ps.onNext(j); - } - ps.onComplete(); + Runnable r2 = () -> { + for (int j = 0; j < 500; j++) { + ps.onNext(j); } + ps.onComplete(); }; TestHelper.race(r1, r2); @@ -331,12 +306,7 @@ public void run() { @Test public void cancelledUpFront() { final AtomicInteger call = new AtomicInteger(); - Observable f = Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - return call.incrementAndGet(); - } - }).concatWith(Observable.never()) + Observable f = Observable.fromCallable((Callable) call::incrementAndGet).concatWith(Observable.never()) .cache(); f.test().assertValuesOnly(1); @@ -384,19 +354,16 @@ public void valuesAreReclaimable() throws Exception { final AtomicLong after = new AtomicLong(); - source.cache().lastElement().subscribe(new Consumer() { - @Override - public void accept(byte[] v) throws Exception { - System.out.println("Bounded Replay Leak check: Wait before GC 2"); - Thread.sleep(1000); + source.cache().lastElement().subscribe(_ -> { + System.out.println("Bounded Replay Leak check: Wait before GC 2"); + Thread.sleep(1000); - System.out.println("Bounded Replay Leak check: GC 2"); - System.gc(); + System.out.println("Bounded Replay Leak check: GC 2"); + System.gc(); - Thread.sleep(500); + Thread.sleep(500); - after.set(memoryMXBean.getHeapMemoryUsage().getUsed()); - } + after.set(memoryMXBean.getHeapMemoryUsage().getUsed()); }); source.connect(); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCollectTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCollectTest.java index e084975cd1..03eb247f7f 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCollectTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCollectTest.java @@ -33,17 +33,7 @@ public final class ObservableCollectTest extends RxJavaTest { @Test public void collectToListObservable() { Observable> o = Observable.just(1, 2, 3) - .collect(new Supplier>() { - @Override - public List get() { - return new ArrayList<>(); - } - }, new BiConsumer, Integer>() { - @Override - public void accept(List list, Integer v) { - list.add(v); - } - }).toObservable(); + .collect((Supplier>) ArrayList::new, List::add).toObservable(); List list = o.blockingLast(); @@ -63,19 +53,11 @@ public void accept(List list, Integer v) { @Test public void collectToStringObservable() { - String value = Observable.just(1, 2, 3).collect(new Supplier() { - @Override - public StringBuilder get() { - return new StringBuilder(); - } - }, new BiConsumer() { - @Override - public void accept(StringBuilder sb, Integer v) { - if (sb.length() > 0) { - sb.append("-"); - } - sb.append(v); + String value = Observable.just(1, 2, 3).collect(StringBuilder::new, (sb, v) -> { + if (sb.length() > 0) { + sb.append("-"); } + sb.append(v); }).toObservable().blockingLast().toString(); assertEquals("1-2-3", value); @@ -144,12 +126,7 @@ public void accept(Object o, Integer t) { @Test public void collectIntoObservable() { Observable.just(1, 1, 1, 1, 2) - .collectInto(new HashSet<>(), new BiConsumer, Integer>() { - @Override - public void accept(HashSet s, Integer v) throws Exception { - s.add(v); - } - }).toObservable() + .collectInto(new HashSet<>(), (BiConsumer, Integer>) HashSet::add).toObservable() .test() .assertResult(new HashSet<>(Arrays.asList(1, 2))); } @@ -157,17 +134,7 @@ public void accept(HashSet s, Integer v) throws Exception { @Test public void collectToList() { Single> o = Observable.just(1, 2, 3) - .collect(new Supplier>() { - @Override - public List get() { - return new ArrayList<>(); - } - }, new BiConsumer, Integer>() { - @Override - public void accept(List list, Integer v) { - list.add(v); - } - }); + .collect(ArrayList::new, List::add); List list = o.blockingGet(); @@ -187,19 +154,11 @@ public void accept(List list, Integer v) { @Test public void collectToString() { - String value = Observable.just(1, 2, 3).collect(new Supplier() { - @Override - public StringBuilder get() { - return new StringBuilder(); - } - }, new BiConsumer() { - @Override - public void accept(StringBuilder sb, Integer v) { - if (sb.length() > 0) { - sb.append("-"); - } - sb.append(v); + String value = Observable.just(1, 2, 3).collect(StringBuilder::new, (sb, v) -> { + if (sb.length() > 0) { + sb.append("-"); } + sb.append(v); }).blockingGet().toString(); assertEquals("1-2-3", value); @@ -266,97 +225,29 @@ public void accept(Object o, Integer t) { @Test public void collectInto() { Observable.just(1, 1, 1, 1, 2) - .collectInto(new HashSet<>(), new BiConsumer, Integer>() { - @Override - public void accept(HashSet s, Integer v) throws Exception { - s.add(v); - } - }) + .collectInto(new HashSet<>(), (BiConsumer, Integer>) HashSet::add) .test() .assertResult(new HashSet<>(Arrays.asList(1, 2))); } @Test public void dispose() { - TestHelper.checkDisposed(Observable.range(1, 3).collect(new Supplier>() { - @Override - public List get() throws Exception { - return new ArrayList<>(); - } - }, new BiConsumer, Integer>() { - @Override - public void accept(List a, Integer b) throws Exception { - a.add(b); - } - })); + TestHelper.checkDisposed(Observable.range(1, 3).collect((Supplier>) ArrayList::new, List::add)); - TestHelper.checkDisposed(Observable.range(1, 3).collect(new Supplier>() { - @Override - public List get() throws Exception { - return new ArrayList<>(); - } - }, new BiConsumer, Integer>() { - @Override - public void accept(List a, Integer b) throws Exception { - a.add(b); - } - }).toObservable()); + TestHelper.checkDisposed(Observable.range(1, 3).collect((Supplier>) ArrayList::new, List::add).toObservable()); } @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservableToSingle(new Function, SingleSource>>() { - @Override - public SingleSource> apply(Observable o) throws Exception { - return o.collect(new Supplier>() { - @Override - public List get() throws Exception { - return new ArrayList<>(); - } - }, new BiConsumer, Integer>() { - @Override - public void accept(List a, Integer b) throws Exception { - a.add(b); - } - }); - } - }); + TestHelper.checkDoubleOnSubscribeObservableToSingle((Function, SingleSource>>) o -> + o.collect((Supplier>) ArrayList::new, List::add)); - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>>() { - @Override - public ObservableSource> apply(Observable o) throws Exception { - return o.collect(new Supplier>() { - @Override - public List get() throws Exception { - return new ArrayList<>(); - } - }, new BiConsumer, Integer>() { - @Override - public void accept(List a, Integer b) throws Exception { - a.add(b); - } - }).toObservable(); - } - }); + TestHelper.checkDoubleOnSubscribeObservable((Function, ObservableSource>>) o -> + o.collect((Supplier>) ArrayList::new, List::add).toObservable()); } @Test public void badSource() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable o) throws Exception { - return o.collect(new Supplier>() { - @Override - public List get() throws Exception { - return new ArrayList<>(); - } - }, new BiConsumer, Integer>() { - @Override - public void accept(List a, Integer b) throws Exception { - a.add(b); - } - }).toObservable(); - } - }, false, 1, 2, List.of(1)); + TestHelper.checkBadSourceObservable(o -> o.collect((Supplier>) ArrayList::new, List::add).toObservable(), false, 1, 2, List.of(1)); } } diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCombineLatestTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCombineLatestTest.java index 8701261a54..841cb61ce3 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCombineLatestTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCombineLatestTest.java @@ -46,11 +46,8 @@ public void combineLatestWithFunctionThatThrowsAnException() { PublishSubject w1 = PublishSubject.create(); PublishSubject w2 = PublishSubject.create(); - Observable combined = Observable.combineLatest(w1, w2, new BiFunction() { - @Override - public String apply(String v1, String v2) { - throw new RuntimeException("I don't work."); - } + Observable combined = Observable.combineLatest(w1, w2, (_, _) -> { + throw new RuntimeException("I don't work."); }); combined.subscribe(w); @@ -223,41 +220,28 @@ public void combineLatest3TypesB() { } private Function3 getConcat3StringsCombineLatestFunction() { - Function3 combineLatestFunction = new Function3() { - @Override - public String apply(String a1, String a2, String a3) { - if (a1 == null) { - a1 = ""; - } - if (a2 == null) { - a2 = ""; - } - if (a3 == null) { - a3 = ""; - } - return a1 + a2 + a3; + Function3 combineLatestFunction = (a1, a2, a3) -> { + if (a1 == null) { + a1 = ""; + } + if (a2 == null) { + a2 = ""; } + if (a3 == null) { + a3 = ""; + } + return a1 + a2 + a3; }; return combineLatestFunction; } private BiFunction getConcatStringIntegerCombineLatestFunction() { - BiFunction combineLatestFunction = new BiFunction() { - @Override - public String apply(String s, Integer i) { - return getStringValue(s) + getStringValue(i); - } - }; + BiFunction combineLatestFunction = (s, i) -> getStringValue(s) + getStringValue(i); return combineLatestFunction; } private Function3 getConcatStringIntegerIntArrayCombineLatestFunction() { - return new Function3() { - @Override - public String apply(String s, Integer i, int[] iArray) { - return getStringValue(s) + getStringValue(i) + getStringValue(iArray); - } - }; + return (s, i, iArray) -> getStringValue(s) + getStringValue(i) + getStringValue(iArray); } private static String getStringValue(Object o) { @@ -272,12 +256,7 @@ private static String getStringValue(Object o) { } } - BiFunction or = new BiFunction() { - @Override - public Integer apply(Integer t1, Integer t2) { - return t1 | t2; - } - }; + BiFunction or = (t1, t2) -> t1 | t2; @Test public void combineSimple() { @@ -428,13 +407,7 @@ public void secondNeverProduces() { @Test public void oneToNSources() { int n = 30; - Function> func = new Function>() { - - @Override - public List apply(Object[] args) { - return Arrays.asList(args); - } - }; + Function> func = Arrays::asList; for (int i = 1; i <= n; i++) { System.out.println("test1ToNSources: " + i + " sources"); List> sources = new ArrayList<>(); @@ -459,13 +432,7 @@ public List apply(Object[] args) { @Test public void oneToNSourcesScheduled() throws InterruptedException { int n = 10; - Function> func = new Function>() { - - @Override - public List apply(Object[] args) { - return Arrays.asList(args); - } - }; + Function> func = Arrays::asList; for (int i = 1; i <= n; i++) { System.out.println("test1ToNSourcesScheduled: " + i + " sources"); List> sources = new ArrayList<>(); @@ -517,12 +484,7 @@ public void twoSourcesOverload() { Observable s2 = Observable.just(2); Observable> result = Observable.combineLatest(s1, s2, - new BiFunction>() { - @Override - public List apply(Integer t1, Integer t2) { - return Arrays.asList(t1, t2); - } - }); + Arrays::asList); Observer o = TestHelper.mockObserver(); @@ -540,12 +502,7 @@ public void threeSourcesOverload() { Observable s3 = Observable.just(3); Observable> result = Observable.combineLatest(s1, s2, s3, - new Function3>() { - @Override - public List apply(Integer t1, Integer t2, Integer t3) { - return Arrays.asList(t1, t2, t3); - } - }); + Arrays::asList); Observer o = TestHelper.mockObserver(); @@ -564,12 +521,7 @@ public void fourSourcesOverload() { Observable s4 = Observable.just(4); Observable> result = Observable.combineLatest(s1, s2, s3, s4, - new Function4>() { - @Override - public List apply(Integer t1, Integer t2, Integer t3, Integer t4) { - return Arrays.asList(t1, t2, t3, t4); - } - }); + Arrays::asList); Observer o = TestHelper.mockObserver(); @@ -589,12 +541,7 @@ public void fiveSourcesOverload() { Observable s5 = Observable.just(5); Observable> result = Observable.combineLatest(s1, s2, s3, s4, s5, - new Function5>() { - @Override - public List apply(Integer t1, Integer t2, Integer t3, Integer t4, Integer t5) { - return Arrays.asList(t1, t2, t3, t4, t5); - } - }); + Arrays::asList); Observer o = TestHelper.mockObserver(); @@ -615,12 +562,7 @@ public void sixSourcesOverload() { Observable s6 = Observable.just(6); Observable> result = Observable.combineLatest(s1, s2, s3, s4, s5, s6, - new Function6>() { - @Override - public List apply(Integer t1, Integer t2, Integer t3, Integer t4, Integer t5, Integer t6) { - return Arrays.asList(t1, t2, t3, t4, t5, t6); - } - }); + Arrays::asList); Observer o = TestHelper.mockObserver(); @@ -642,12 +584,7 @@ public void sevenSourcesOverload() { Observable s7 = Observable.just(7); Observable> result = Observable.combineLatest(s1, s2, s3, s4, s5, s6, s7, - new Function7>() { - @Override - public List apply(Integer t1, Integer t2, Integer t3, Integer t4, Integer t5, Integer t6, Integer t7) { - return Arrays.asList(t1, t2, t3, t4, t5, t6, t7); - } - }); + Arrays::asList); Observer o = TestHelper.mockObserver(); @@ -670,12 +607,7 @@ public void eightSourcesOverload() { Observable s8 = Observable.just(8); Observable> result = Observable.combineLatest(s1, s2, s3, s4, s5, s6, s7, s8, - new Function8>() { - @Override - public List apply(Integer t1, Integer t2, Integer t3, Integer t4, Integer t5, Integer t6, Integer t7, Integer t8) { - return Arrays.asList(t1, t2, t3, t4, t5, t6, t7, t8); - } - }); + Arrays::asList); Observer o = TestHelper.mockObserver(); @@ -699,12 +631,7 @@ public void nineSourcesOverload() { Observable s9 = Observable.just(9); Observable> result = Observable.combineLatest(s1, s2, s3, s4, s5, s6, s7, s8, s9, - new Function9>() { - @Override - public List apply(Integer t1, Integer t2, Integer t3, Integer t4, Integer t5, Integer t6, Integer t7, Integer t8, Integer t9) { - return Arrays.asList(t1, t2, t3, t4, t5, t6, t7, t8, t9); - } - }); + Arrays::asList); Observer o = TestHelper.mockObserver(); @@ -718,14 +645,7 @@ public List apply(Integer t1, Integer t2, Integer t3, Integer t4, Integ @Test public void zeroSources() { Observable result = Observable.combineLatest( - Collections.> emptyList(), new Function() { - - @Override - public Object apply(Object[] args) { - return args; - } - - }); + Collections.> emptyList(), args -> args); Observer o = TestHelper.mockObserver(); @@ -744,24 +664,16 @@ public void withCombineLatestIssue1717() throws InterruptedException { final int SIZE = 2000; Observable timer = Observable.interval(0, 1, TimeUnit.MILLISECONDS) .observeOn(Schedulers.newThread()) - .doOnEach(new Consumer>() { - @Override - public void accept(Notification n) { - // System.out.println(n); - if (count.incrementAndGet() >= SIZE) { - latch.countDown(); - } - } + .doOnEach(_ -> { + // System.out.println(n); + if (count.incrementAndGet() >= SIZE) { + latch.countDown(); + } }).take(SIZE); TestObserver to = new TestObserver<>(); - Observable.combineLatest(timer, Observable. never(), new BiFunction() { - @Override - public Long apply(Long t1, Integer t2) { - return t1; - } - }).subscribe(to); + Observable.combineLatest(timer, Observable. never(), (t1, _) -> t1).subscribe(to); if (!latch.await(SIZE + 1000, TimeUnit.MILLISECONDS)) { fail("timed out"); @@ -776,12 +688,7 @@ public void combineLatestArrayOfSources() { Observable.combineLatestArray(new ObservableSource[] { Observable.just(1), Observable.just(2) - }, new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return Arrays.toString(a); - } - }) + }, (Function) Arrays::toString) .test() .assertResult("[1, 2]"); } @@ -792,12 +699,7 @@ public void combineLatestDelayErrorArrayOfSources() { Observable.combineLatestArrayDelayError(new ObservableSource[] { Observable.just(1), Observable.just(2) - }, new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return Arrays.toString(a); - } - }) + }, (Function) Arrays::toString) .test() .assertResult("[1, 2]"); } @@ -808,12 +710,7 @@ public void combineLatestDelayErrorArrayOfSourcesWithError() { Observable.combineLatestArrayDelayError(new ObservableSource[] { Observable.just(1), Observable.just(2).concatWith(Observable.error(new TestException())) - }, new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return Arrays.toString(a); - } - }) + }, (Function) Arrays::toString) .test() .assertFailure(TestException.class, "[1, 2]"); } @@ -823,12 +720,7 @@ public void combineLatestDelayErrorIterableOfSources() { Observable.combineLatestDelayError(Arrays.asList( Observable.just(1), Observable.just(2) - ), new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return Arrays.toString(a); - } - }) + ), (Function) Arrays::toString) .test() .assertResult("[1, 2]"); } @@ -838,12 +730,7 @@ public void combineLatestDelayErrorIterableOfSourcesWithError() { Observable.combineLatestDelayError(Arrays.asList( Observable.just(1), Observable.just(2).concatWith(Observable.error(new TestException())) - ), new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return Arrays.toString(a); - } - }) + ), (Function) Arrays::toString) .test() .assertFailure(TestException.class, "[1, 2]"); } @@ -862,12 +749,7 @@ public void combineLatestDelayErrorEmpty() { @Test public void disposed() { - TestHelper.checkDisposed(Observable.combineLatest(Observable.never(), Observable.never(), new BiFunction() { - @Override - public Object apply(Object a, Object b) throws Exception { - return a; - } - })); + TestHelper.checkDisposed(Observable.combineLatest(Observable.never(), Observable.never(), (a, _) -> a)); } @Test @@ -876,19 +758,9 @@ public void cancelWhileSubscribing() { Observable.combineLatest( Observable.just(1) - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - to.dispose(); - } - }), + .doOnNext(_ -> to.dispose()), Observable.never(), - new BiFunction() { - @Override - public Object apply(Object a, Object b) throws Exception { - return a; - } - }) + (BiFunction) (a, _) -> a) .subscribe(to); } @@ -896,12 +768,7 @@ public Object apply(Object a, Object b) throws Exception { public void combineAsync() { Observable source = Observable.range(1, 1000).subscribeOn(Schedulers.computation()); - Observable.combineLatest(source, source, new BiFunction() { - @Override - public Object apply(Object a, Object b) throws Exception { - return a; - } - }) + Observable.combineLatest(source, source, (BiFunction) (a, _) -> a) .take(500) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -911,12 +778,7 @@ public Object apply(Object a, Object b) throws Exception { @Test public void error() { - Observable.combineLatest(Observable.never(), Observable.error(new TestException()), new BiFunction() { - @Override - public Object apply(Object a, Object b) throws Exception { - return a; - } - }) + Observable.combineLatest(Observable.never(), Observable.error(new TestException()), (a, _) -> a) .test() .assertFailure(TestException.class); } @@ -926,12 +788,7 @@ public Object apply(Object a, Object b) throws Exception { public void errorDelayed() { Observable.combineLatestArrayDelayError( new ObservableSource[] { Observable.error(new TestException()), Observable.just(1) }, - new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return a; - } - }, + (Function) a -> a, 128 ) .test() @@ -943,12 +800,7 @@ public Object apply(Object[] a) throws Exception { public void errorDelayed2() { Observable.combineLatestArrayDelayError( new ObservableSource[] { Observable.error(new TestException()).startWithItem(1), Observable.empty() }, - new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return a; - } - }, + (Function) a -> a, 128 ) .test() @@ -963,28 +815,13 @@ public void onErrorRace() { final PublishSubject ps1 = PublishSubject.create(); final PublishSubject ps2 = PublishSubject.create(); - TestObserverEx to = Observable.combineLatest(ps1, ps2, new BiFunction() { - @Override - public Integer apply(Integer a, Integer b) throws Exception { - return a; - } - }).to(TestHelper.testConsumer()); + TestObserverEx to = Observable.combineLatest(ps1, ps2, (a, _) -> a).to(TestHelper.testConsumer()); final TestException ex1 = new TestException(); final TestException ex2 = new TestException(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps1.onError(ex1); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - ps2.onError(ex2); - } - }; + Runnable r1 = () -> ps1.onError(ex1); + Runnable r2 = () -> ps2.onError(ex2); TestHelper.race(r1, r2); @@ -1020,18 +857,8 @@ public void dontSubscribeIfDone() { Observable.combineLatest(Observable.empty(), Observable.error(new TestException()) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) throws Exception { - count[0]++; - } - }), - new BiFunction() { - @Override - public Object apply(Object a, Object b) throws Exception { - return 0; - } - }) + .doOnSubscribe(_ -> count[0]++), + (BiFunction) (_, _) -> 0) .test() .assertResult(); @@ -1052,19 +879,9 @@ public void dontSubscribeIfDone2() { Observable.combineLatestDelayError( Arrays.asList(Observable.empty(), Observable.error(new TestException()) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) throws Exception { - count[0]++; - } - }) + .doOnSubscribe(_ -> count[0]++) ), - new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return 0; - } - }) + (Function) _ -> 0) .test() .assertResult(); @@ -1085,66 +902,23 @@ public void combine2Observable2Errors() throws Exception { TestScheduler testScheduler = new TestScheduler(); Observable emptyObservable = Observable.timer(10, TimeUnit.MILLISECONDS, testScheduler) - .flatMap(new Function>() { - @Override - public ObservableSource apply(Long aLong) throws Exception { - return Observable.error(new Exception()); - } - }); - Observable errorObservable = Observable.timer(100, TimeUnit.MILLISECONDS, testScheduler).map(new Function() { - @Override - public Object apply(Long aLong) throws Exception { - throw new Exception(); - } + .flatMap((Function>) _ -> Observable.error(new Exception())); + Observable errorObservable = Observable.timer(100, TimeUnit.MILLISECONDS, testScheduler).map(_ -> { + throw new Exception(); }); Observable.combineLatestDelayError( Arrays.asList( emptyObservable - .doOnEach(new Consumer>() { - @Override - public void accept(Notification integerNotification) throws Exception { - System.out.println("emptyObservable: " + integerNotification); - } - }) - .doFinally(new Action() { - @Override - public void run() throws Exception { - System.out.println("emptyObservable: doFinally"); - } - }), + .doOnEach(integerNotification -> System.out.println("emptyObservable: " + integerNotification)) + .doFinally(() -> System.out.println("emptyObservable: doFinally")), errorObservable - .doOnEach(new Consumer>() { - @Override - public void accept(Notification integerNotification) throws Exception { - System.out.println("errorObservable: " + integerNotification); - } - }) - .doFinally(new Action() { - @Override - public void run() throws Exception { - System.out.println("errorObservable: doFinally"); - } - })), - new Function() { - @Override - public Object apply(Object[] objects) throws Exception { - return 0; - } - } - ) - .doOnEach(new Consumer>() { - @Override - public void accept(Notification integerNotification) throws Exception { - System.out.println("combineLatestDelayError: " + integerNotification); - } - }) - .doFinally(new Action() { - @Override - public void run() throws Exception { - System.out.println("combineLatestDelayError: doFinally"); - } - }) + .doOnEach(integerNotification -> System.out.println("errorObservable: " + integerNotification)) + .doFinally(() -> System.out.println("errorObservable: doFinally"))), + (Function) _ -> 0 + ) + .doOnEach(integerNotification -> System.out.println("combineLatestDelayError: " + integerNotification)) + .doFinally(() -> System.out.println("combineLatestDelayError: doFinally")) .subscribe(testObserver); testScheduler.advanceTimeBy(100, TimeUnit.MILLISECONDS); @@ -1178,12 +952,7 @@ public void onNext(Integer t) { } }; - Observable.combineLatest(ps1, ps2, new BiFunction() { - @Override - public Integer apply(Integer t1, Integer t2) throws Exception { - return t1 + t2; - } - }) + Observable.combineLatest(ps1, ps2, Integer::sum) .subscribe(to); ps1.onNext(1); @@ -1197,12 +966,7 @@ public void syncFirstErrorsAfterItemDelayError() { Observable.just(21).concatWith(Observable.error(new TestException())), Observable.just(21).delay(100, TimeUnit.MILLISECONDS) ), - new Function() { - @Override - public Object apply(Object[] a) throws Exception { - return (Integer)a[0] + (Integer)a[1]; - } - } + (Function) a -> (Integer)a[0] + (Integer)a[1] ) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -1211,19 +975,9 @@ public Object apply(Object[] a) throws Exception { @Test public void observableSourcesInIterable() { - ObservableSource source = new ObservableSource() { - @Override - public void subscribe(Observer observer) { - Observable.just(1).subscribe(observer); - } - }; + ObservableSource source = observer -> Observable.just(1).subscribe(observer); - Observable.combineLatest(Arrays.asList(source, source), new Function() { - @Override - public Integer apply(Object[] t) throws Throwable { - return 2; - } - }) + Observable.combineLatest(Arrays.asList(source, source), _ -> 2) .test() .assertResult(2); } diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapCompletableTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapCompletableTest.java index 8983cdbc60..1183a12e3e 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapCompletableTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapCompletableTest.java @@ -113,28 +113,13 @@ public void onErrorRace() { final PublishSubject ps1 = PublishSubject.create(); final PublishSubject ps2 = PublishSubject.create(); - TestObserver to = ps1.concatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.fromObservable(ps2); - } - }).test(); + TestObserver to = ps1.concatMapCompletable(_ -> Completable.fromObservable(ps2)).test(); final TestException ex1 = new TestException(); final TestException ex2 = new TestException(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps1.onError(ex1); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - ps2.onError(ex2); - } - }; + Runnable r1 = () -> ps1.onError(ex1); + Runnable r2 = () -> ps2.onError(ex2); TestHelper.race(r1, r2); @@ -160,11 +145,8 @@ public void mapperThrows() { @Test public void fusedPollThrows() { Observable.just(1) - .map(new Function() { - @Override - public Integer apply(Integer v) throws Exception { - throw new TestException(); - } + .map((Function) _ -> { + throw new TestException(); }) .concatMapCompletable(completableComplete()) .test() @@ -224,29 +206,16 @@ public void onComplete() { } private Function completableComplete() { - return new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }; + return _ -> Completable.complete(); } private Function completableError() { - return new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.error(new TestException()); - } - }; + return _ -> Completable.error(new TestException()); } private Function completableThrows() { - return new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - throw new TestException(); - } + return _ -> { + throw new TestException(); }; } } diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapEagerTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapEagerTest.java index 28199f86cd..1925d4c5a8 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapEagerTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapEagerTest.java @@ -38,12 +38,7 @@ public class ObservableConcatMapEagerTest extends RxJavaTest { @Test public void normal() { Observable.range(1, 5) - .concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer t) { - return Observable.range(t, 2); - } - }) + .concatMapEager((Function>) t -> Observable.range(t, 2)) .test() .assertResult(1, 2, 2, 3, 3, 4, 4, 5, 5, 6); } @@ -51,12 +46,7 @@ public ObservableSource apply(Integer t) { @Test public void normalDelayBoundary() { Observable.range(1, 5) - .concatMapEagerDelayError(new Function>() { - @Override - public ObservableSource apply(Integer t) { - return Observable.range(t, 2); - } - }, false) + .concatMapEagerDelayError((Function>) t -> Observable.range(t, 2), false) .test() .assertResult(1, 2, 2, 3, 3, 4, 4, 5, 5, 6); } @@ -64,12 +54,7 @@ public ObservableSource apply(Integer t) { @Test public void normalDelayEnd() { Observable.range(1, 5) - .concatMapEagerDelayError(new Function>() { - @Override - public ObservableSource apply(Integer t) { - return Observable.range(t, 2); - } - }, true) + .concatMapEagerDelayError((Function>) t -> Observable.range(t, 2), true) .test() .assertResult(1, 2, 2, 3, 3, 4, 4, 5, 5, 6); } @@ -80,12 +65,7 @@ public void mainErrorsDelayBoundary() { final PublishSubject inner = PublishSubject.create(); TestObserverEx to = main.concatMapEagerDelayError( - new Function>() { - @Override - public ObservableSource apply(Integer t) { - return inner; - } - }, false).to(TestHelper.testConsumer()); + (Function>) _ -> inner, false).to(TestHelper.testConsumer()); main.onNext(1); @@ -109,12 +89,7 @@ public void mainErrorsDelayEnd() { final PublishSubject inner = PublishSubject.create(); TestObserverEx to = main.concatMapEagerDelayError( - new Function>() { - @Override - public ObservableSource apply(Integer t) { - return inner; - } - }, true).to(TestHelper.testConsumer()); + (Function>) _ -> inner, true).to(TestHelper.testConsumer()); main.onNext(1); main.onNext(2); @@ -139,12 +114,7 @@ public void mainErrorsImmediate() { final PublishSubject inner = PublishSubject.create(); TestObserverEx to = main.concatMapEager( - new Function>() { - @Override - public ObservableSource apply(Integer t) { - return inner; - } - }).to(TestHelper.testConsumer()); + (Function>) _ -> inner).to(TestHelper.testConsumer()); main.onNext(1); main.onNext(2); @@ -167,12 +137,7 @@ public ObservableSource apply(Integer t) { public void longEager() { Observable.range(1, 2 * Observable.bufferSize()) - .concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) { - return Observable.just(1); - } - }) + .concatMapEager((Function>) _ -> Observable.just(1)) .test() .assertValueCount(2 * Observable.bufferSize()) .assertNoErrors() @@ -181,19 +146,9 @@ public ObservableSource apply(Integer v) { TestObserver to; - Function> toJust = new Function>() { - @Override - public Observable apply(Integer t) { - return Observable.just(t); - } - }; + Function> toJust = Observable::just; - Function> toRange = new Function>() { - @Override - public Observable apply(Integer t) { - return Observable.range(t, 2); - } - }; + Function> toRange = t -> Observable.range(t, 2); @Before public void before() { @@ -221,12 +176,7 @@ public void simple2() { @Test public void eagerness2() { final AtomicInteger count = new AtomicInteger(); - Observable source = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - count.getAndIncrement(); - } - }).hide(); + Observable source = Observable.just(1).doOnNext(_ -> count.getAndIncrement()).hide(); Observable.concatArrayEager(source, source).subscribe(to); @@ -240,12 +190,7 @@ public void accept(Integer t) { @Test public void eagerness3() { final AtomicInteger count = new AtomicInteger(); - Observable source = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - count.getAndIncrement(); - } - }).hide(); + Observable source = Observable.just(1).doOnNext(_ -> count.getAndIncrement()).hide(); Observable.concatArrayEager(source, source, source).subscribe(to); @@ -259,12 +204,7 @@ public void accept(Integer t) { @Test public void eagerness4() { final AtomicInteger count = new AtomicInteger(); - Observable source = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - count.getAndIncrement(); - } - }).hide(); + Observable source = Observable.just(1).doOnNext(_ -> count.getAndIncrement()).hide(); Observable.concatArrayEager(source, source, source, source).subscribe(to); @@ -278,12 +218,7 @@ public void accept(Integer t) { @Test public void eagerness5() { final AtomicInteger count = new AtomicInteger(); - Observable source = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - count.getAndIncrement(); - } - }).hide(); + Observable source = Observable.just(1).doOnNext(_ -> count.getAndIncrement()).hide(); Observable.concatArrayEager(source, source, source, source, source).subscribe(to); @@ -297,12 +232,7 @@ public void accept(Integer t) { @Test public void eagerness6() { final AtomicInteger count = new AtomicInteger(); - Observable source = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - count.getAndIncrement(); - } - }).hide(); + Observable source = Observable.just(1).doOnNext(_ -> count.getAndIncrement()).hide(); Observable.concatArrayEager(source, source, source, source, source, source).subscribe(to); @@ -316,12 +246,7 @@ public void accept(Integer t) { @Test public void eagerness7() { final AtomicInteger count = new AtomicInteger(); - Observable source = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - count.getAndIncrement(); - } - }).hide(); + Observable source = Observable.just(1).doOnNext(_ -> count.getAndIncrement()).hide(); Observable.concatArrayEager(source, source, source, source, source, source, source).subscribe(to); @@ -335,12 +260,7 @@ public void accept(Integer t) { @Test public void eagerness8() { final AtomicInteger count = new AtomicInteger(); - Observable source = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - count.getAndIncrement(); - } - }).hide(); + Observable source = Observable.just(1).doOnNext(_ -> count.getAndIncrement()).hide(); Observable.concatArrayEager(source, source, source, source, source, source, source, source).subscribe(to); @@ -354,12 +274,7 @@ public void accept(Integer t) { @Test public void eagerness9() { final AtomicInteger count = new AtomicInteger(); - Observable source = Observable.just(1).doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - count.getAndIncrement(); - } - }).hide(); + Observable source = Observable.just(1).doOnNext(_ -> count.getAndIncrement()).hide(); Observable.concatArrayEager(source, source, source, source, source, source, source, source, source).subscribe(to); @@ -406,11 +321,8 @@ public void innerEmpty() { @Test public void mapperThrows() { - Observable.just(1).concatMapEager(new Function>() { - @Override - public Observable apply(Integer t) { - throw new TestException(); - } + Observable.just(1).concatMapEager((Function>) _ -> { + throw new TestException(); }).subscribe(to); to.assertNoValues(); @@ -430,12 +342,8 @@ public void invalidCapacityHint() { @Test public void asynchronousRun() { - Observable.range(1, 2).concatMapEager(new Function>() { - @Override - public Observable apply(Integer t) { - return Observable.range(1, 1000).subscribeOn(Schedulers.computation()); - } - }).observeOn(Schedulers.newThread()).subscribe(to); + Observable.range(1, 2).concatMapEager((Function>) _ -> Observable.range(1, 1000) + .subscribeOn(Schedulers.computation())).observeOn(Schedulers.newThread()).subscribe(to); to.awaitDone(5, TimeUnit.SECONDS); to.assertNoErrors(); @@ -448,18 +356,10 @@ public void reentrantWork() { final AtomicBoolean once = new AtomicBoolean(); - subject.concatMapEager(new Function>() { - @Override - public Observable apply(Integer t) { - return Observable.just(t); - } - }) - .doOnNext(new Consumer() { - @Override - public void accept(Integer t) { - if (once.compareAndSet(false, true)) { - subject.onNext(2); - } + subject.concatMapEager((Function>) Observable::just) + .doOnNext(_ -> { + if (once.compareAndSet(false, true)) { + subject.onNext(2); } }) .subscribe(to); @@ -561,63 +461,35 @@ public void concatEagerIterable() { @Test public void dispose() { - TestHelper.checkDisposed(Observable.just(1).hide().concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(1, 2); - } - })); + TestHelper.checkDisposed(Observable.just(1).hide().concatMapEager((Function>) _ -> Observable.range(1, 2))); } @Test public void empty() { - Observable.empty().hide().concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(1, 2); - } - }) + Observable.empty().hide().concatMapEager((Function>) _ -> Observable.range(1, 2)) .test() .assertResult(); } @Test public void innerError2() { - Observable.just(1).hide().concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.error(new TestException()); - } - }) + Observable.just(1).hide().concatMapEager((Function>) _ -> Observable.error(new TestException())) .test() .assertFailure(TestException.class); } @Test public void innerErrorMaxConcurrency() { - Observable.just(1).hide().concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.error(new TestException()); - } - }, 1, 128) + Observable.just(1).hide().concatMapEager((Function>) _ -> Observable.error(new TestException()), 1, 128) .test() .assertFailure(TestException.class); } @Test public void innerCallableThrows() { - Observable.just(1).hide().concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.fromCallable(new Callable() { - @Override - public Integer call() throws Exception { - throw new TestException(); - } - }); - } - }) + Observable.just(1).hide().concatMapEager((Function>) _ -> Observable.fromCallable((Callable) () -> { + throw new TestException(); + })) .test() .assertFailure(TestException.class); } @@ -630,30 +502,15 @@ public void innerOuterRace() { final PublishSubject ps1 = PublishSubject.create(); final PublishSubject ps2 = PublishSubject.create(); - TestObserverEx to = ps1.concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return ps2; - } - }).to(TestHelper.testConsumer()); + TestObserverEx to = ps1.concatMapEager((Function>) _ -> ps2).to(TestHelper.testConsumer()); final TestException ex1 = new TestException(); final TestException ex2 = new TestException(); ps1.onNext(1); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps1.onError(ex1); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - ps2.onError(ex2); - } - }; + Runnable r1 = () -> ps1.onError(ex1); + Runnable r2 = () -> ps2.onError(ex2); TestHelper.race(r1, r2); @@ -682,25 +539,10 @@ public void nextCancelRace() { for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { final PublishSubject ps1 = PublishSubject.create(); - final TestObserver to = ps1.concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.never(); - } - }).test(); + final TestObserver to = ps1.concatMapEager((Function>) _ -> Observable.never()).test(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps1.onNext(1); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - to.dispose(); - } - }; + Runnable r1 = () -> ps1.onNext(1); + Runnable r2 = to::dispose; TestHelper.race(r1, r2); @@ -713,12 +555,9 @@ public void mapperCancels() { final TestObserver to = new TestObserver<>(); Observable.just(1).hide() - .concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - to.dispose(); - return Observable.never(); - } + .concatMapEager((Function>) _ -> { + to.dispose(); + return Observable.never(); }, 1, 128) .subscribe(to); @@ -727,17 +566,9 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void innerErrorFused() { - Observable.just(1).hide().concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(1, 2).map(new Function() { - @Override - public Integer apply(Integer v) throws Exception { - throw new TestException(); - } - }); - } - }) + Observable.just(1).hide().concatMapEager((Function>) _ -> Observable.range(1, 2).map((Function) _ -> { + throw new TestException(); + })) .test() .assertFailure(TestException.class); } @@ -756,12 +587,7 @@ public void onNext(Integer t) { }; Observable.just(1).hide() - .concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return us; - } - }, 1, 128) + .concatMapEager((Function>) _ -> us, 1, 128) .subscribe(to); to @@ -775,12 +601,7 @@ public void fuseAndTake() { us.onNext(1); us.onComplete(); - us.concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.just(1); - } - }) + us.concatMapEager((Function>) _ -> Observable.just(1)) .take(1) .test() .assertResult(1); @@ -788,30 +609,15 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable o) throws Exception { - return o.concatMapEager(new Function>() { - @Override - public ObservableSource apply(Object v) throws Exception { - return Observable.just(v); - } - }); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(o -> o.concatMapEager((Function>) Observable::just)); } @Test public void oneDelayed() { Observable.just(1, 2, 3, 4, 5) - .concatMapEager(new Function>() { - @Override - public ObservableSource apply(Integer i) throws Exception { - return i == 3 ? Observable.just(i) : Observable - .just(i) - .delay(1, TimeUnit.MILLISECONDS, Schedulers.cached()); - } - }) + .concatMapEager((Function>) i -> i == 3 ? Observable.just(i) : Observable + .just(i) + .delay(1, TimeUnit.MILLISECONDS, Schedulers.cached())) .observeOn(Schedulers.cached()) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -833,21 +639,9 @@ public void maxConcurrencyOf2() { Observable.range(1, 1000) .buffer(10) - .concatMapEager(new Function, ObservableSource>>() { - @Override - public ObservableSource> apply(List v) - throws Exception { - return Observable.just(v) - .subscribeOn(Schedulers.cached()) - .doOnNext(new Consumer>() { - @Override - public void accept(List v) - throws Exception { - Thread.sleep(new Random().nextInt(20)); - } - }); - } - } + .concatMapEager((Function, ObservableSource>>) v -> Observable.just(v) + .subscribeOn(Schedulers.cached()) + .doOnNext(_ -> Thread.sleep(new Random().nextInt(20))) , 2, 3) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -992,47 +786,20 @@ public void cancelNoInnerYet() { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapEager(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapEager((Function>) v -> Observable.just(v).hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapEagerDelayError(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }, false); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapEagerDelayError((Function>) v -> Observable.just(v).hide(), false)); } @Test public void undeliverableUponCancelDelayErrorTillEnd() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapEagerDelayError(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }, true); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapEagerDelayError((Function>) v -> Observable.just(v).hide(), true)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapSchedulerTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapSchedulerTest.java index 4d876e5e2f..e10d713f0c 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapSchedulerTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapSchedulerTest.java @@ -44,23 +44,14 @@ public class ObservableConcatMapSchedulerTest { public void boundaryFusion() { Observable.range(1, 10000) .observeOn(Schedulers.single()) - .map(new Function() { - @Override - public String apply(Integer t) throws Exception { - String name = Thread.currentThread().getName(); - if (name.contains("RxSingleScheduler")) { - return "RxSingleScheduler"; - } - return name; + .map(_ -> { + String name = Thread.currentThread().getName(); + if (name.contains("RxSingleScheduler")) { + return "RxSingleScheduler"; } + return name; }) - .concatMap(new Function>() { - @Override - public ObservableSource apply(String v) - throws Exception { - return Observable.just(v); - } - }, 2, ImmediateThinScheduler.INSTANCE) + .concatMap((Function>) Observable::just, 2, ImmediateThinScheduler.INSTANCE) .observeOn(Schedulers.computation()) .distinct() .test() @@ -72,23 +63,14 @@ public ObservableSource apply(String v) public void boundaryFusionDelayError() { Observable.range(1, 10000) .observeOn(Schedulers.single()) - .map(new Function() { - @Override - public String apply(Integer t) throws Exception { - String name = Thread.currentThread().getName(); - if (name.contains("RxSingleScheduler")) { - return "RxSingleScheduler"; - } - return name; + .map(_ -> { + String name = Thread.currentThread().getName(); + if (name.contains("RxSingleScheduler")) { + return "RxSingleScheduler"; } + return name; }) - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(String v) - throws Exception { - return Observable.just(v); - } - }, true, 2, ImmediateThinScheduler.INSTANCE) + .concatMapDelayError((Function>) Observable::just, true, 2, ImmediateThinScheduler.INSTANCE) .observeOn(Schedulers.computation()) .distinct() .test() @@ -99,20 +81,11 @@ public ObservableSource apply(String v) @Test public void pollThrows() { Observable.just(1) - .map(new Function() { - @Override - public Integer apply(Integer v) throws Exception { - throw new TestException(); - } + .map((Function) _ -> { + throw new TestException(); }) .compose(TestHelper.observableStripBoundary()) - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.just(v); - } - }, 2, ImmediateThinScheduler.INSTANCE) + .concatMap((Function>) Observable::just, 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(TestException.class); } @@ -120,20 +93,11 @@ public ObservableSource apply(Integer v) @Test public void pollThrowsDelayError() { Observable.just(1) - .map(new Function() { - @Override - public Integer apply(Integer v) throws Exception { - throw new TestException(); - } + .map((Function) _ -> { + throw new TestException(); }) .compose(TestHelper.observableStripBoundary()) - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.just(v); - } - }, true, 2, ImmediateThinScheduler.INSTANCE) + .concatMapDelayError((Function>) Observable::just, true, 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(TestException.class); } @@ -143,17 +107,7 @@ public void noCancelPrevious() { final AtomicInteger counter = new AtomicInteger(); Observable.range(1, 5) - .concatMap(new Function>() { - @Override - public Observable apply(Integer v) throws Exception { - return Observable.just(v).doOnDispose(new Action() { - @Override - public void run() throws Exception { - counter.getAndIncrement(); - } - }); - } - }, 2, ImmediateThinScheduler.INSTANCE) + .concatMap((Function>) v -> Observable.just(v).doOnDispose(counter::getAndIncrement), 2, ImmediateThinScheduler.INSTANCE) .test() .assertResult(1, 2, 3, 4, 5); @@ -163,18 +117,12 @@ public void run() throws Exception { @Test public void delayErrorCallableTillTheEnd() { Observable.just(1, 2, 3, 101, 102, 23, 890, 120, 32) - .concatMapDelayError(new Function>() { - @Override public Observable apply(final Integer integer) throws Exception { - return Observable.fromCallable(new Callable() { - @Override public Integer call() throws Exception { - if (integer >= 100) { - throw new NullPointerException("test null exp"); - } - return integer; - } - }); + .concatMapDelayError((Function>) integer -> Observable.fromCallable(() -> { + if (integer >= 100) { + throw new NullPointerException("test null exp"); } - }, true, 2, ImmediateThinScheduler.INSTANCE) + return integer; + }), true, 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(CompositeException.class, 1, 2, 3, 23, 32); } @@ -182,18 +130,12 @@ public void delayErrorCallableTillTheEnd() { @Test public void delayErrorCallableEager() { Observable.just(1, 2, 3, 101, 102, 23, 890, 120, 32) - .concatMapDelayError(new Function>() { - @Override public Observable apply(final Integer integer) throws Exception { - return Observable.fromCallable(new Callable() { - @Override public Integer call() throws Exception { - if (integer >= 100) { - throw new NullPointerException("test null exp"); - } - return integer; - } - }); + .concatMapDelayError((Function>) integer -> Observable.fromCallable(() -> { + if (integer >= 100) { + throw new NullPointerException("test null exp"); } - }, false, 2, ImmediateThinScheduler.INSTANCE) + return integer; + }), false, 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(NullPointerException.class, 1, 2, 3); } @@ -201,12 +143,7 @@ public void delayErrorCallableEager() { @Test public void mapperScheduled() { TestObserver to = Observable.just(1) - .concatMap(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()); - } - }, 2, Schedulers.single()) + .concatMap((Function>) _ -> Observable.just(Thread.currentThread().getName()), 2, Schedulers.single()) .test() .awaitDone(5, TimeUnit.SECONDS) .assertValueCount(1) @@ -219,12 +156,7 @@ public Observable apply(Integer t) throws Throwable { @Test public void mapperScheduledHidden() { TestObserver to = Observable.just(1) - .concatMap(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()).hide(); - } - }, 2, Schedulers.single()) + .concatMap((Function>) _ -> Observable.just(Thread.currentThread().getName()).hide(), 2, Schedulers.single()) .test() .awaitDone(5, TimeUnit.SECONDS) .assertValueCount(1) @@ -237,12 +169,7 @@ public Observable apply(Integer t) throws Throwable { @Test public void mapperDelayErrorScheduled() { TestObserver to = Observable.just(1) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()); - } - }, false, 2, Schedulers.single()) + .concatMapDelayError((Function>) _ -> Observable.just(Thread.currentThread().getName()), false, 2, Schedulers.single()) .test() .awaitDone(5, TimeUnit.SECONDS) .assertValueCount(1) @@ -255,12 +182,7 @@ public Observable apply(Integer t) throws Throwable { @Test public void mapperDelayErrorScheduledHidden() { TestObserver to = Observable.just(1) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()).hide(); - } - }, false, 2, Schedulers.single()) + .concatMapDelayError((Function>) _ -> Observable.just(Thread.currentThread().getName()).hide(), false, 2, Schedulers.single()) .test() .awaitDone(5, TimeUnit.SECONDS) .assertValueCount(1) @@ -273,12 +195,7 @@ public Observable apply(Integer t) throws Throwable { @Test public void mapperDelayError2Scheduled() { TestObserver to = Observable.just(1) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()); - } - }, true, 2, Schedulers.single()) + .concatMapDelayError((Function>) _ -> Observable.just(Thread.currentThread().getName()), true, 2, Schedulers.single()) .test() .awaitDone(5, TimeUnit.SECONDS) .assertValueCount(1) @@ -291,12 +208,7 @@ public Observable apply(Integer t) throws Throwable { @Test public void mapperDelayError2ScheduledHidden() { TestObserver to = Observable.just(1) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()).hide(); - } - }, true, 2, Schedulers.single()) + .concatMapDelayError((Function>) _ -> Observable.just(Thread.currentThread().getName()).hide(), true, 2, Schedulers.single()) .test() .awaitDone(5, TimeUnit.SECONDS) .assertValueCount(1) @@ -311,16 +223,13 @@ public void issue2890NoStackoverflow() throws InterruptedException, TimeoutExcep final ExecutorService executor = Executors.newFixedThreadPool(2); final Scheduler sch = Schedulers.from(executor); - Function> func = new Function>() { - @Override - public Observable apply(Integer t) { - Observable flowable = Observable.just(t) - .subscribeOn(sch) - ; - Subject processor = UnicastSubject.create(); - flowable.subscribe(processor); - return processor; - } + Function> func = t -> { + Observable flowable = Observable.just(t) + .subscribeOn(sch) + ; + Subject processor = UnicastSubject.create(); + flowable.subscribe(processor); + return processor; }; int n = 5000; @@ -375,12 +284,7 @@ public void concatMapRangeAsyncLoopIssue2876() { } TestObserverEx to = new TestObserverEx<>(); Observable.range(0, 1000) - .concatMap(new Function>() { - @Override - public Observable apply(Integer t) { - return Observable.fromIterable(Collections.singletonList(t)); - } - }, 2, ImmediateThinScheduler.INSTANCE) + .concatMap((Function>) t -> Observable.fromIterable(Collections.singletonList(t)), 2, ImmediateThinScheduler.INSTANCE) .observeOn(Schedulers.computation()).subscribe(to); to.awaitDone(2500, TimeUnit.MILLISECONDS); @@ -518,12 +422,7 @@ public void concatMapDelayError() { @Test public void concatMapDelayErrorJustSource() { Observable.just(0) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Object v) throws Exception { - return Observable.just(1); - } - }, true, 16, ImmediateThinScheduler.INSTANCE) + .concatMapDelayError((Function>) _ -> Observable.just(1), true, 16, ImmediateThinScheduler.INSTANCE) .test() .assertResult(1); @@ -532,12 +431,7 @@ public Observable apply(Object v) throws Exception { @Test public void concatMapJustSource() { Observable.just(0).hide() - .concatMap(new Function>() { - @Override - public Observable apply(Object v) throws Exception { - return Observable.just(1); - } - }, 16, ImmediateThinScheduler.INSTANCE) + .concatMap((Function>) _ -> Observable.just(1), 16, ImmediateThinScheduler.INSTANCE) .test() .assertResult(1); } @@ -545,12 +439,7 @@ public Observable apply(Object v) throws Exception { @Test public void concatMapJustSourceDelayError() { Observable.just(0).hide() - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Object v) throws Exception { - return Observable.just(1); - } - }, false, 16, ImmediateThinScheduler.INSTANCE) + .concatMapDelayError((Function>) _ -> Observable.just(1), false, 16, ImmediateThinScheduler.INSTANCE) .test() .assertResult(1); } @@ -573,18 +462,8 @@ public void concatMapEmptyDelayError() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable f) throws Exception { - return f.concatMap(Functions.justFunction(Observable.just(2)), 2, ImmediateThinScheduler.INSTANCE); - } - }); - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable f) throws Exception { - return f.concatMapDelayError(Functions.justFunction(Observable.just(2)), true, 2, ImmediateThinScheduler.INSTANCE); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(f -> f.concatMap(Functions.justFunction(Observable.just(2)), 2, ImmediateThinScheduler.INSTANCE)); + TestHelper.checkDoubleOnSubscribeObservable(f -> f.concatMapDelayError(Functions.justFunction(Observable.just(2)), true, 2, ImmediateThinScheduler.INSTANCE)); } @Test @@ -653,12 +532,7 @@ public void concatMapInnerErrorDelayError() { @Test public void badSource() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable f) throws Exception { - return f.concatMap(Functions.justFunction(Observable.just(1).hide()), 2, ImmediateThinScheduler.INSTANCE); - } - }, true, 1, 1, 1); + TestHelper.checkBadSourceObservable(f -> f.concatMap(Functions.justFunction(Observable.just(1).hide()), 2, ImmediateThinScheduler.INSTANCE), true, 1, 1, 1); } @Test @@ -715,21 +589,14 @@ protected void subscribeActual(Observer o) { @Test public void badSourceDelayError() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable f) throws Exception { - return f.concatMapDelayError(Functions.justFunction(Observable.just(1).hide()), true, 2, ImmediateThinScheduler.INSTANCE); - } - }, true, 1, 1, 1); + TestHelper.checkBadSourceObservable(f -> f.concatMapDelayError(Functions.justFunction(Observable.just(1).hide()), + true, 2, ImmediateThinScheduler.INSTANCE), true, 1, 1, 1); } @Test public void fusedCrash() { Observable.range(1, 2) - .map(new Function() { - @Override - public Object apply(Integer v) throws Exception { throw new TestException(); } - }) + .map(_ -> { throw new TestException(); }) .concatMap(Functions.justFunction(Observable.just(1)), 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(TestException.class); @@ -738,10 +605,7 @@ public void fusedCrash() { @Test public void fusedCrashDelayError() { Observable.range(1, 2) - .map(new Function() { - @Override - public Object apply(Integer v) throws Exception { throw new TestException(); } - }) + .map(_ -> { throw new TestException(); }) .concatMapDelayError(Functions.justFunction(Observable.just(1)), true, 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(TestException.class); @@ -750,11 +614,8 @@ public void fusedCrashDelayError() { @Test public void callableCrash() { Observable.just(1).hide() - .concatMap(Functions.justFunction(Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - throw new TestException(); - } + .concatMap(Functions.justFunction(Observable.fromCallable(() -> { + throw new TestException(); })), 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(TestException.class); @@ -763,11 +624,8 @@ public Object call() throws Exception { @Test public void callableCrashDelayError() { Observable.just(1).hide() - .concatMapDelayError(Functions.justFunction(Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - throw new TestException(); - } + .concatMapDelayError(Functions.justFunction(Observable.fromCallable(() -> { + throw new TestException(); })), true, 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(TestException.class); @@ -801,11 +659,8 @@ public void error() { @Test public void mapperThrows() { Observable.range(1, 2) - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - throw new TestException(); - } + .concatMap((Function>) _ -> { + throw new TestException(); }, 2, ImmediateThinScheduler.INSTANCE) .test() .assertFailure(TestException.class); @@ -817,12 +672,7 @@ public void mainErrors() { TestObserver to = TestObserver.create(); - source.concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.range(v, 2); - } - }, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); + source.concatMapDelayError((Function>) v -> Observable.range(v, 2), true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); source.onNext(1); source.onNext(2); @@ -840,12 +690,7 @@ public void innerErrors() { TestObserver to = TestObserver.create(); - Observable.range(1, 3).concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) { - return inner; - } - }, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); + Observable.range(1, 3).concatMapDelayError((Function>) _ -> inner, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); to.assertValues(1, 2, 1, 2, 1, 2); to.assertError(CompositeException.class); @@ -860,12 +705,7 @@ public void singleInnerErrors() { Observable.just(1) .hide() // prevent scalar optimization - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) { - return inner; - } - }, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); + .concatMapDelayError((Function>) _ -> inner, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); to.assertValues(1, 2); to.assertError(TestException.class); @@ -878,12 +718,7 @@ public void innerNull() { Observable.just(1) .hide() // prevent scalar optimization - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) { - return null; - } - }, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); + .concatMapDelayError((Function>) _ -> null, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); to.assertNoValues(); to.assertError(NullPointerException.class); @@ -896,11 +731,8 @@ public void innerThrows() { Observable.just(1) .hide() // prevent scalar optimization - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) { - throw new TestException(); - } + .concatMapDelayError((Function>) _ -> { + throw new TestException(); }, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); to.assertNoValues(); @@ -913,12 +745,7 @@ public void innerWithEmpty() { TestObserver to = TestObserver.create(); Observable.range(1, 3) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) { - return v == 2 ? Observable.empty() : Observable.range(1, 2); - } - }, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); + .concatMapDelayError(v -> v == 2 ? Observable.empty() : Observable.range(1, 2), true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); to.assertValues(1, 2, 1, 2); to.assertNoErrors(); @@ -930,12 +757,8 @@ public void innerWithScalar() { TestObserver to = TestObserver.create(); Observable.range(1, 3) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) { - return v == 2 ? Observable.just(3) : Observable.range(1, 2); - } - }, true, 2, ImmediateThinScheduler.INSTANCE).subscribe(to); + .concatMapDelayError(v -> v == 2 ? Observable.just(3) : Observable.range(1, 2), true, 2, ImmediateThinScheduler.INSTANCE) + .subscribe(to); to.assertValues(1, 2, 3, 1, 2); to.assertNoErrors(); @@ -947,14 +770,9 @@ public void mapperScheduledLong() { TestObserver to = Observable.range(1, 1000) .hide() .observeOn(Schedulers.computation()) - .concatMap(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()) - .repeat(1000) - .observeOn(Schedulers.cached()); - } - }, 2, Schedulers.single()) + .concatMap((Function>) _ -> Observable.just(Thread.currentThread().getName()) + .repeat(1000) + .observeOn(Schedulers.cached()), 2, Schedulers.single()) .distinct() .test() .awaitDone(5, TimeUnit.SECONDS) @@ -970,14 +788,9 @@ public void mapperDelayErrorScheduledLong() { TestObserver to = Observable.range(1, 1000) .hide() .observeOn(Schedulers.computation()) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()) - .repeat(1000) - .observeOn(Schedulers.cached()); - } - }, false, 2, Schedulers.single()) + .concatMapDelayError((Function>) _ -> Observable.just(Thread.currentThread().getName()) + .repeat(1000) + .observeOn(Schedulers.cached()), false, 2, Schedulers.single()) .distinct() .test() .awaitDone(5, TimeUnit.SECONDS) @@ -993,14 +806,9 @@ public void mapperDelayError2ScheduledLong() { TestObserver to = Observable.range(1, 1000) .hide() .observeOn(Schedulers.computation()) - .concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer t) throws Throwable { - return Observable.just(Thread.currentThread().getName()) - .repeat(1000) - .observeOn(Schedulers.cached()); - } - }, true, 2, Schedulers.single()) + .concatMapDelayError((Function>) _ -> Observable.just(Thread.currentThread().getName()) + .repeat(1000) + .observeOn(Schedulers.cached()), true, 2, Schedulers.single()) .distinct() .test() .awaitDone(5, TimeUnit.SECONDS) @@ -1013,47 +821,20 @@ public Observable apply(Integer t) throws Throwable { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMap(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }, 2, ImmediateThinScheduler.INSTANCE); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMap((Function>) v -> Observable.just(v).hide(), 2, ImmediateThinScheduler.INSTANCE)); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }, false, 2, ImmediateThinScheduler.INSTANCE); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapDelayError((Function>) v -> Observable.just(v).hide(), false, 2, ImmediateThinScheduler.INSTANCE)); } @Test public void undeliverableUponCancelDelayErrorTillEnd() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }, true, 2, ImmediateThinScheduler.INSTANCE); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapDelayError((Function>) v -> Observable.just(v).hide(), true, 2, ImmediateThinScheduler.INSTANCE)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapTest.java index 451f8b06da..affa5ae58d 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatMapTest.java @@ -38,12 +38,7 @@ public class ObservableConcatMapTest extends RxJavaTest { public void asyncFused() { UnicastSubject us = UnicastSubject.create(); - TestObserver to = us.concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } - }) + TestObserver to = us.concatMap((Function>) v -> Observable.range(v, 2)) .test(); us.onNext(1); @@ -55,34 +50,19 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void dispose() { TestHelper.checkDisposed(Observable.just(1).hide() - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.error(new TestException()); - } - })); + .concatMap((Function>) _ -> Observable.error(new TestException()))); } @Test public void dispose2() { TestHelper.checkDisposed(Observable.just(1).hide() - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.error(new TestException()); - } - })); + .concatMapDelayError((Function>) _ -> Observable.error(new TestException()))); } @Test public void mainError() { Observable.error(new TestException()) - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } - }) + .concatMap((Function>) v -> Observable.range(v, 2)) .test() .assertFailure(TestException.class); } @@ -90,12 +70,7 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void innerError() { Observable.just(1).hide() - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.error(new TestException()); - } - }) + .concatMap((Function>) _ -> Observable.error(new TestException())) .test() .assertFailure(TestException.class); } @@ -103,12 +78,7 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void mainErrorDelayed() { Observable.error(new TestException()) - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } - }) + .concatMapDelayError((Function>) v -> Observable.range(v, 2)) .test() .assertFailure(TestException.class); } @@ -116,12 +86,7 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void innerErrorDelayError() { Observable.just(1).hide() - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.error(new TestException()); - } - }) + .concatMapDelayError((Function>) _ -> Observable.error(new TestException())) .test() .assertFailure(TestException.class); } @@ -129,17 +94,9 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void innerErrorDelayError2() { Observable.just(1).hide() - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.fromCallable(new Callable() { - @Override - public Integer call() throws Exception { - throw new TestException(); - } - }); - } - }) + .concatMapDelayError((Function>) _ -> Observable.fromCallable((Callable) () -> { + throw new TestException(); + })) .test() .assertFailure(TestException.class); } @@ -160,12 +117,7 @@ protected void subscribeActual(Observer observer) { observer.onComplete(); } } - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } - }) + .concatMap((Function>) v -> Observable.range(v, 2)) .test() .assertResult(1, 2); @@ -191,12 +143,7 @@ protected void subscribeActual(Observer observer) { observer.onComplete(); } } - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } - }) + .concatMapDelayError((Function>) v -> Observable.range(v, 2)) .test() .assertResult(1, 2); @@ -209,12 +156,7 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void normalDelayErrors() { Observable.just(1).hide() - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } - }) + .concatMapDelayError((Function>) v -> Observable.range(v, 2)) .test() .assertResult(1, 2); } @@ -222,12 +164,7 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void normalDelayErrorsTillTheEnd() { Observable.just(1).hide() - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } - }, true, 16) + .concatMapDelayError((Function>) v -> Observable.range(v, 2), true, 16) .test() .assertResult(1, 2); } @@ -240,28 +177,13 @@ public void onErrorRace() { final PublishSubject ps1 = PublishSubject.create(); final PublishSubject ps2 = PublishSubject.create(); - TestObserver to = ps1.concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return ps2; - } - }).test(); + TestObserver to = ps1.concatMap((Function>) _ -> ps2).test(); final TestException ex1 = new TestException(); final TestException ex2 = new TestException(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps1.onError(ex1); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - ps2.onError(ex2); - } - }; + Runnable r1 = () -> ps1.onError(ex1); + Runnable r2 = () -> ps2.onError(ex2); TestHelper.race(r1, r2); @@ -279,11 +201,8 @@ public void run() { @Test public void mapperThrows() { Observable.just(1).hide() - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - throw new TestException(); - } + .concatMap((Function>) _ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); @@ -292,18 +211,10 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void fusedPollThrows() { Observable.just(1) - .map(new Function() { - @Override - public Integer apply(Integer v) throws Exception { - throw new TestException(); - } - }) - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } + .map((Function) _ -> { + throw new TestException(); }) + .concatMap((Function>) v -> Observable.range(v, 2)) .test() .assertFailure(TestException.class); } @@ -311,18 +222,10 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void fusedPollThrowsDelayError() { Observable.just(1) - .map(new Function() { - @Override - public Integer apply(Integer v) throws Exception { - throw new TestException(); - } - }) - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(v, 2); - } + .map((Function) _ -> { + throw new TestException(); }) + .concatMapDelayError((Function>) v -> Observable.range(v, 2)) .test() .assertFailure(TestException.class); } @@ -330,11 +233,8 @@ public ObservableSource apply(Integer v) throws Exception { @Test public void mapperThrowsDelayError() { Observable.just(1).hide() - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - throw new TestException(); - } + .concatMapDelayError((Function>) _ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); @@ -349,17 +249,12 @@ public void badInnerDelayError() { try { Observable.just(1).hide() - .concatMapDelayError(new Function>() { + .concatMapDelayError((Function>) _ -> new Observable() { @Override - public ObservableSource apply(Integer v) throws Exception { - return new Observable() { - @Override - protected void subscribeActual(Observer observer) { - o[0] = observer; - observer.onSubscribe(Disposable.empty()); - observer.onComplete(); - } - }; + protected void subscribeActual(Observer observer) { + o[0] = observer; + observer.onSubscribe(Disposable.empty()); + observer.onComplete(); } }) .test() @@ -439,13 +334,7 @@ public void reentrantNoOverflow() { try { final PublishSubject ps = PublishSubject.create(); - TestObserver to = ps.concatMap(new Function>() { - @Override - public Observable apply(Integer v) - throws Exception { - return Observable.just(v + 1); - } - }, 1) + TestObserver to = ps.concatMap((Function>) v -> Observable.just(v + 1), 1) .subscribeWith(new TestObserver() { @Override public void onNext(Integer t) { @@ -475,13 +364,7 @@ public void onNext(Integer t) { public void reentrantNoOverflowHidden() { final PublishSubject ps = PublishSubject.create(); - TestObserver to = ps.concatMap(new Function>() { - @Override - public Observable apply(Integer v) - throws Exception { - return Observable.just(v + 1).hide(); - } - }, 1) + TestObserver to = ps.concatMap((Function>) v -> Observable.just(v + 1).hide(), 1) .subscribeWith(new TestObserver() { @Override public void onNext(Integer t) { @@ -505,17 +388,7 @@ public void noCancelPrevious() { final AtomicInteger counter = new AtomicInteger(); Observable.range(1, 5) - .concatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.just(v).doOnDispose(new Action() { - @Override - public void run() throws Exception { - counter.getAndIncrement(); - } - }); - } - }) + .concatMap((Function>) v -> Observable.just(v).doOnDispose(counter::getAndIncrement)) .test() .assertResult(1, 2, 3, 4, 5); @@ -524,47 +397,20 @@ public void run() throws Exception { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMap(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMap((Function>) v -> Observable.just(v).hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }, false, 2); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapDelayError((Function>) v -> Observable.just(v).hide(), false, 2)); } @Test public void undeliverableUponCancelDelayErrorTillEnd() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.concatMapDelayError(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }, true, 2); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.concatMapDelayError((Function>) v -> Observable.just(v).hide(), true, 2)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatTest.java index 772a0a40ee..66cea784e3 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatTest.java @@ -82,17 +82,12 @@ public void concatObservableOfObservables() { final Observable odds = Observable.fromArray(o); final Observable even = Observable.fromArray(e); - Observable> observableOfObservables = Observable.unsafeCreate(new ObservableSource>() { - - @Override - public void subscribe(Observer> observer) { - observer.onSubscribe(Disposable.empty()); - // simulate what would happen in an Observable - observer.onNext(odds); - observer.onNext(even); - observer.onComplete(); - } - + Observable> observableOfObservables = Observable.unsafeCreate(observer1 -> { + observer1.onSubscribe(Disposable.empty()); + // simulate what would happen in an Observable + observer1.onNext(odds); + observer1.onNext(even); + observer1.onComplete(); }); Observable concat = Observable.concat(observableOfObservables); @@ -157,51 +152,43 @@ public void nestedAsyncConcat() throws InterruptedException { final CountDownLatch parentHasStarted = new CountDownLatch(1); final CountDownLatch parentHasFinished = new CountDownLatch(1); - Observable> observableOfObservables = Observable.unsafeCreate(new ObservableSource>() { + Observable> observableOfObservables = Observable.unsafeCreate(observer1 -> { + final Disposable d = Disposable.empty(); + observer1.onSubscribe(d); + parent.set(new Thread(() -> { + try { + // emit first + if (!d.isDisposed()) { + System.out.println("Emit o1"); + observer1.onNext(Observable.unsafeCreate(o1)); + } + // emit second + if (!d.isDisposed()) { + System.out.println("Emit o2"); + observer1.onNext(Observable.unsafeCreate(o2)); + } - @Override - public void subscribe(final Observer> observer) { - final Disposable d = Disposable.empty(); - observer.onSubscribe(d); - parent.set(new Thread(new Runnable() { - - @Override - public void run() { - try { - // emit first - if (!d.isDisposed()) { - System.out.println("Emit o1"); - observer.onNext(Observable.unsafeCreate(o1)); - } - // emit second - if (!d.isDisposed()) { - System.out.println("Emit o2"); - observer.onNext(Observable.unsafeCreate(o2)); - } - - // wait until sometime later and emit third - try { - allowThird.await(); - } catch (InterruptedException e) { - observer.onError(e); - } - if (!d.isDisposed()) { - System.out.println("Emit o3"); - observer.onNext(Observable.unsafeCreate(o3)); - } - - } catch (Throwable e) { - observer.onError(e); - } finally { - System.out.println("Done parent Observable"); - observer.onComplete(); - parentHasFinished.countDown(); - } + // wait until sometime later and emit third + try { + allowThird.await(); + } catch (InterruptedException e) { + observer1.onError(e); } - })); - parent.get().start(); - parentHasStarted.countDown(); - } + if (!d.isDisposed()) { + System.out.println("Emit o3"); + observer1.onNext(Observable.unsafeCreate(o3)); + } + + } catch (Throwable e) { + observer1.onError(e); + } finally { + System.out.println("Done parent Observable"); + observer1.onComplete(); + parentHasFinished.countDown(); + } + })); + parent.get().start(); + parentHasStarted.countDown(); }); Observable.concat(observableOfObservables).subscribe(observer); @@ -343,17 +330,12 @@ public void concatNonBlockingObservables() { Observer observer = TestHelper.mockObserver(); - Observable> observableOfObservables = Observable.unsafeCreate(new ObservableSource>() { - - @Override - public void subscribe(Observer> observer) { - observer.onSubscribe(Disposable.empty()); - // simulate what would happen in an Observable - observer.onNext(Observable.unsafeCreate(w1)); - observer.onNext(Observable.unsafeCreate(w2)); - observer.onComplete(); - } - + Observable> observableOfObservables = Observable.unsafeCreate(observer1 -> { + observer1.onSubscribe(Disposable.empty()); + // simulate what would happen in an Observable + observer1.onNext(Observable.unsafeCreate(w1)); + observer1.onNext(Observable.unsafeCreate(w2)); + observer1.onComplete(); }); Observable concat = Observable.concat(observableOfObservables); concat.subscribe(observer); @@ -516,36 +498,31 @@ public boolean isDisposed() { @Override public void subscribe(final Observer observer) { observer.onSubscribe(upstream); - t = new Thread(new Runnable() { - - @Override - public void run() { - try { - while (count < size && subscribed) { - if (null != values) { - observer.onNext(values.get(count)); - } else { - observer.onNext(seed); - } - count++; - //Unblock the main thread to call unsubscribe. - if (null != once) { - once.countDown(); - } - //Block until the main thread has called unsubscribe. - if (null != okToContinue) { - okToContinue.await(5, TimeUnit.SECONDS); - } + t = new Thread(() -> { + try { + while (count < size && subscribed) { + if (null != values) { + observer.onNext(values.get(count)); + } else { + observer.onNext(seed); } - if (subscribed) { - observer.onComplete(); + count++; + //Unblock the main thread to call unsubscribe. + if (null != once) { + once.countDown(); + } + //Block until the main thread has called unsubscribe. + if (null != okToContinue) { + okToContinue.await(5, TimeUnit.SECONDS); } - } catch (InterruptedException e) { - e.printStackTrace(); - fail(e.getMessage()); } + if (subscribed) { + observer.onComplete(); + } + } catch (InterruptedException e) { + e.printStackTrace(); + fail(e.getMessage()); } - }); t.start(); threadHasStarted.countDown(); @@ -603,12 +580,7 @@ public void multipleObservers() { @Test public void concatVeryLongObservableOfObservables() { final int n = 10000; - Observable> source = Observable.range(0, n).map(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.just(v); - } - }); + Observable> source = Observable.range(0, n).map(Observable::just); Single> result = Observable.concat(source).toList(); @@ -628,12 +600,7 @@ public Observable apply(Integer v) { @Test public void concatVeryLongObservableOfObservablesTakeHalf() { final int n = 10000; - Observable> source = Observable.range(0, n).map(new Function>() { - @Override - public Observable apply(Integer v) { - return Observable.just(v); - } - }); + Observable> source = Observable.range(0, n).map(Observable::just); Single> result = Observable.concat(source).take(n / 2).toList(); @@ -662,16 +629,11 @@ public void concatOuterBackpressure() { // https://github.com/ReactiveX/RxJava/issues/1818 @Test public void concatWithNonCompliantSourceDoubleOnComplete() { - Observable o = Observable.unsafeCreate(new ObservableSource() { - - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onNext("hello"); - observer.onComplete(); - observer.onComplete(); - } - + Observable o = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onNext("hello"); + observer.onComplete(); + observer.onComplete(); }); TestObserverEx to = new TestObserverEx<>(); @@ -687,16 +649,13 @@ public void issue2890NoStackoverflow() throws InterruptedException, TimeoutExcep final ExecutorService executor = Executors.newFixedThreadPool(2); final Scheduler sch = Schedulers.from(executor); - Function> func = new Function>() { - @Override - public Observable apply(Integer t) { - Observable o = Observable.just(t) - .subscribeOn(sch) - ; - Subject subject = UnicastSubject.create(); - o.subscribe(subject); - return subject; - } + Function> func = t -> { + Observable o = Observable.just(t) + .subscribeOn(sch) + ; + Subject subject = UnicastSubject.create(); + o.subscribe(subject); + return subject; }; int n = 5000; @@ -752,12 +711,7 @@ public void concatMapRangeAsyncLoopIssue2876() { TestObserverEx to = new TestObserverEx<>(); Observable.range(0, 1000) - .concatMap(new Function>() { - @Override - public Observable apply(Integer t) { - return Observable.fromIterable(Collections.singletonList(t)); - } - }) + .concatMap((Function>) t -> Observable.fromIterable(Collections.singletonList(t))) .observeOn(Schedulers.computation()) .subscribe(to); @@ -878,12 +832,7 @@ public void concatMapDelayErrorWithError() { @Test public void concatMapIterableBufferSize() { - Observable.just(1, 2).concatMapIterable(new Function>() { - @Override - public Iterable apply(Integer v) throws Exception { - return Arrays.asList(1, 2, 3, 4, 5); - } - }) + Observable.just(1, 2).concatMapIterable((Function>) _ -> Arrays.asList(1, 2, 3, 4, 5)) .test() .assertResult(1, 2, 3, 4, 5, 1, 2, 3, 4, 5); } @@ -901,23 +850,13 @@ public void singleElementArray() { @Test public void concatMapDelayErrorEmptySource() { assertSame(Observable.empty(), Observable.empty() - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Object v) throws Exception { - return Observable.just(1); - } - }, true, 16)); + .concatMapDelayError((Function>) _ -> Observable.just(1), true, 16)); } @Test public void concatMapDelayErrorJustSource() { Observable.just(0) - .concatMapDelayError(new Function>() { - @Override - public ObservableSource apply(Object v) throws Exception { - return Observable.just(1); - } - }, true, 16) + .concatMapDelayError((Function>) _ -> Observable.just(1), true, 16) .test() .assertResult(1); @@ -936,23 +875,13 @@ public void concatArraySingleElement() { @Test public void concatMapErrorEmptySource() { assertSame(Observable.empty(), Observable.empty() - .concatMap(new Function>() { - @Override - public ObservableSource apply(Object v) throws Exception { - return Observable.just(1); - } - }, 16)); + .concatMap((Function>) _ -> Observable.just(1), 16)); } @Test public void concatMapJustSource() { Observable.just(0) - .concatMap(new Function>() { - @Override - public ObservableSource apply(Object v) throws Exception { - return Observable.just(1); - } - }, 16) + .concatMap((Function>) _ -> Observable.just(1), 16) .test() .assertResult(1); @@ -962,13 +891,10 @@ public ObservableSource apply(Object v) throws Exception { public void noSubsequentSubscription() { final int[] calls = { 0 }; - Observable source = Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter s) throws Exception { - calls[0]++; - s.onNext(1); - s.onComplete(); - } + Observable source = Observable.create(s -> { + calls[0]++; + s.onNext(1); + s.onComplete(); }); Observable.concatArray(source, source).firstElement() @@ -982,13 +908,10 @@ public void subscribe(ObservableEmitter s) throws Exception { public void noSubsequentSubscriptionDelayError() { final int[] calls = { 0 }; - Observable source = Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter s) throws Exception { - calls[0]++; - s.onNext(1); - s.onComplete(); - } + Observable source = Observable.create(s -> { + calls[0]++; + s.onNext(1); + s.onComplete(); }); Observable.concatArrayDelayError(source, source).firstElement() @@ -1002,13 +925,10 @@ public void subscribe(ObservableEmitter s) throws Exception { public void noSubsequentSubscriptionIterable() { final int[] calls = { 0 }; - Observable source = Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter s) throws Exception { - calls[0]++; - s.onNext(1); - s.onComplete(); - } + Observable source = Observable.create(s -> { + calls[0]++; + s.onNext(1); + s.onComplete(); }); Observable.concat(Arrays.asList(source, source)).firstElement() @@ -1022,13 +942,10 @@ public void subscribe(ObservableEmitter s) throws Exception { public void noSubsequentSubscriptionDelayErrorIterable() { final int[] calls = { 0 }; - Observable source = Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter s) throws Exception { - calls[0]++; - s.onNext(1); - s.onComplete(); - } + Observable source = Observable.create(s -> { + calls[0]++; + s.onNext(1); + s.onComplete(); }); Observable.concatDelayError(Arrays.asList(source, source)).firstElement() @@ -1154,12 +1071,7 @@ public void onComplete() { public void noCancelPreviousArray() { final AtomicInteger counter = new AtomicInteger(); - Observable source = Observable.just(1).doOnDispose(new Action() { - @Override - public void run() throws Exception { - counter.getAndIncrement(); - } - }); + Observable source = Observable.just(1).doOnDispose(counter::getAndIncrement); Observable.concatArray(source, source, source, source, source) .test() @@ -1172,12 +1084,7 @@ public void run() throws Exception { public void noCancelPreviousIterable() { final AtomicInteger counter = new AtomicInteger(); - Observable source = Observable.just(1).doOnDispose(new Action() { - @Override - public void run() throws Exception { - counter.getAndIncrement(); - } - }); + Observable source = Observable.just(1).doOnDispose(counter::getAndIncrement); Observable.concat(Arrays.asList(source, source, source, source, source)) .test() diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatWithMaybeTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatWithMaybeTest.java index 0987acf4cd..450a807f76 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatWithMaybeTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableConcatWithMaybeTest.java @@ -20,7 +20,6 @@ import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.disposables.*; import io.reactivex.rxjava4.exceptions.TestException; -import io.reactivex.rxjava4.functions.Action; import io.reactivex.rxjava4.observers.TestObserver; import io.reactivex.rxjava4.subjects.MaybeSubject; @@ -31,12 +30,7 @@ public void normalEmpty() { final TestObserver to = new TestObserver<>(); Observable.range(1, 5) - .concatWith(Maybe.fromAction(new Action() { - @Override - public void run() throws Exception { - to.onNext(100); - } - })) + .concatWith(Maybe.fromAction(() -> to.onNext(100))) .subscribe(to); to.assertResult(1, 2, 3, 4, 5, 100); @@ -58,12 +52,7 @@ public void mainError() { final TestObserver to = new TestObserver<>(); Observable.error(new TestException()) - .concatWith(Maybe.fromAction(new Action() { - @Override - public void run() throws Exception { - to.onNext(100); - } - })) + .concatWith(Maybe.fromAction(() -> to.onNext(100))) .subscribe(to); to.assertFailure(TestException.class); @@ -85,12 +74,7 @@ public void takeMain() { final TestObserver to = new TestObserver<>(); Observable.range(1, 5) - .concatWith(Maybe.fromAction(new Action() { - @Override - public void run() throws Exception { - to.onNext(100); - } - })) + .concatWith(Maybe.fromAction(() -> to.onNext(100))) .take(3) .subscribe(to); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCreateTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCreateTest.java index 1dccdf8cab..8ba48f41e7 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCreateTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableCreateTest.java @@ -25,7 +25,6 @@ import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.disposables.Disposable; import io.reactivex.rxjava4.exceptions.TestException; -import io.reactivex.rxjava4.functions.Cancellable; import io.reactivex.rxjava4.observers.TestObserver; import io.reactivex.rxjava4.plugins.RxJavaPlugins; import io.reactivex.rxjava4.testsupport.*; @@ -37,20 +36,17 @@ public class ObservableCreateTest extends RxJavaTest { public void basic() { final Disposable d = Disposable.empty(); - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e.setDisposable(d); - - e.onNext(1); - e.onNext(2); - e.onNext(3); - e.onComplete(); - e.onError(new TestException()); - e.onNext(4); - e.onError(new TestException()); - e.onComplete(); - } + Observable.create(e -> { + e.setDisposable(d); + + e.onNext(1); + e.onNext(2); + e.onNext(3); + e.onComplete(); + e.onError(new TestException()); + e.onNext(4); + e.onError(new TestException()); + e.onComplete(); }) .test() .assertResult(1, 2, 3); @@ -64,26 +60,18 @@ public void basicWithCancellable() { final Disposable d1 = Disposable.empty(); final Disposable d2 = Disposable.empty(); - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e.setDisposable(d1); - e.setCancellable(new Cancellable() { - @Override - public void cancel() throws Exception { - d2.dispose(); - } - }); - - e.onNext(1); - e.onNext(2); - e.onNext(3); - e.onComplete(); - e.onError(new TestException()); - e.onNext(4); - e.onError(new TestException()); - e.onComplete(); - } + Observable.create(e -> { + e.setDisposable(d1); + e.setCancellable(d2::dispose); + + e.onNext(1); + e.onNext(2); + e.onNext(3); + e.onComplete(); + e.onError(new TestException()); + e.onNext(4); + e.onError(new TestException()); + e.onComplete(); }) .test() .assertResult(1, 2, 3); @@ -97,19 +85,16 @@ public void cancel() throws Exception { public void basicWithError() { final Disposable d = Disposable.empty(); - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e.setDisposable(d); + Observable.create(e -> { + e.setDisposable(d); - e.onNext(1); - e.onNext(2); - e.onNext(3); - e.onError(new TestException()); - e.onComplete(); - e.onNext(4); - e.onError(new TestException()); - } + e.onNext(1); + e.onNext(2); + e.onNext(3); + e.onError(new TestException()); + e.onComplete(); + e.onNext(4); + e.onError(new TestException()); }) .test() .assertFailure(TestException.class, 1, 2, 3); @@ -122,22 +107,19 @@ public void subscribe(ObservableEmitter e) throws Exception { public void basicSerialized() { final Disposable d = Disposable.empty(); - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e = e.serialize(); + Observable.create(e -> { + e = e.serialize(); - e.setDisposable(d); + e.setDisposable(d); - e.onNext(1); - e.onNext(2); - e.onNext(3); - e.onComplete(); - e.onError(new TestException()); - e.onNext(4); - e.onError(new TestException()); - e.onComplete(); - } + e.onNext(1); + e.onNext(2); + e.onNext(3); + e.onComplete(); + e.onError(new TestException()); + e.onNext(4); + e.onError(new TestException()); + e.onComplete(); }) .test() .assertResult(1, 2, 3); @@ -150,21 +132,18 @@ public void subscribe(ObservableEmitter e) throws Exception { public void basicWithErrorSerialized() { final Disposable d = Disposable.empty(); - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e = e.serialize(); + Observable.create(e -> { + e = e.serialize(); - e.setDisposable(d); + e.setDisposable(d); - e.onNext(1); - e.onNext(2); - e.onNext(3); - e.onError(new TestException()); - e.onComplete(); - e.onNext(4); - e.onError(new TestException()); - } + e.onNext(1); + e.onNext(2); + e.onNext(3); + e.onError(new TestException()); + e.onComplete(); + e.onNext(4); + e.onError(new TestException()); }) .test() .assertFailure(TestException.class, 1, 2, 3); @@ -174,17 +153,14 @@ public void subscribe(ObservableEmitter e) throws Exception { @Test public void wrap() { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onNext(1); - observer.onNext(2); - observer.onNext(3); - observer.onNext(4); - observer.onNext(5); - observer.onComplete(); - } + Observable.wrap((ObservableSource) observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onNext(1); + observer.onNext(2); + observer.onNext(3); + observer.onNext(4); + observer.onNext(5); + observer.onComplete(); }) .test() .assertResult(1, 2, 3, 4, 5); @@ -192,17 +168,14 @@ public void subscribe(Observer observer) { @Test public void unsafe() { - Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onNext(1); - observer.onNext(2); - observer.onNext(3); - observer.onNext(4); - observer.onNext(5); - observer.onComplete(); - } + Observable.unsafeCreate((ObservableSource) observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onNext(1); + observer.onNext(2); + observer.onNext(3); + observer.onNext(4); + observer.onNext(5); + observer.onComplete(); }) .test() .assertResult(1, 2, 3, 4, 5); @@ -218,17 +191,14 @@ public void unsafeWithObservable() { public void createNullValue() { final Throwable[] error = { null }; - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - try { - e.onNext(null); - e.onNext(1); - e.onError(new TestException()); - e.onComplete(); - } catch (Throwable ex) { - error[0] = ex; - } + Observable.create((ObservableOnSubscribe) e -> { + try { + e.onNext(null); + e.onNext(1); + e.onError(new TestException()); + e.onComplete(); + } catch (Throwable ex) { + error[0] = ex; } }) .test() @@ -242,18 +212,15 @@ public void subscribe(ObservableEmitter e) throws Exception { public void createNullValueSerialized() { final Throwable[] error = { null }; - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e = e.serialize(); - try { - e.onNext(null); - e.onNext(1); - e.onError(new TestException()); - e.onComplete(); - } catch (Throwable ex) { - error[0] = ex; - } + Observable.create((ObservableOnSubscribe) e -> { + e = e.serialize(); + try { + e.onNext(null); + e.onNext(1); + e.onError(new TestException()); + e.onComplete(); + } catch (Throwable ex) { + error[0] = ex; } }) .test() @@ -264,11 +231,8 @@ public void subscribe(ObservableEmitter e) throws Exception { @Test public void callbackThrows() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - throw new TestException(); - } + Observable.create(_ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); @@ -276,67 +240,44 @@ public void subscribe(ObservableEmitter e) throws Exception { @Test public void nullValue() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e.onNext(null); - } - }) + Observable.create(e -> e.onNext(null)) .test() .assertFailure(NullPointerException.class); } @Test public void nullThrowable() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e.onError(null); - } - }) + Observable.create(e -> e.onError(null)) .test() .assertFailure(NullPointerException.class); } @Test public void nullValueSync() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e.serialize().onNext(null); - } - }) + Observable.create(e -> e.serialize().onNext(null)) .test() .assertFailure(NullPointerException.class); } @Test public void nullThrowableSync() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e.serialize().onError(null); - } - }) + Observable.create(e -> e.serialize().onError(null)) .test() .assertFailure(NullPointerException.class); } @Test public void onErrorCrash() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - Disposable d = Disposable.empty(); - e.setDisposable(d); - try { - e.onError(new IOException()); - fail("Should have thrown"); - } catch (TestException ex) { - // expected - } - assertTrue(d.isDisposed()); + Observable.create(e -> { + Disposable d = Disposable.empty(); + e.setDisposable(d); + try { + e.onError(new IOException()); + fail("Should have thrown"); + } catch (TestException ex) { + // expected } + assertTrue(d.isDisposed()); }) .subscribe(new Observer() { @Override @@ -360,19 +301,16 @@ public void onComplete() { @Test public void onCompleteCrash() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - Disposable d = Disposable.empty(); - e.setDisposable(d); - try { - e.onComplete(); - fail("Should have thrown"); - } catch (TestException ex) { - // expected - } - assertTrue(d.isDisposed()); + Observable.create(e -> { + Disposable d = Disposable.empty(); + e.setDisposable(d); + try { + e.onComplete(); + fail("Should have thrown"); + } catch (TestException ex) { + // expected } + assertTrue(d.isDisposed()); }) .subscribe(new Observer() { @Override @@ -398,30 +336,22 @@ public void onComplete() { public void serialized() { List errors = TestHelper.trackPluginErrors(); try { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - ObservableEmitter f = e.serialize(); + Observable.create(e -> { + ObservableEmitter f = e.serialize(); - assertSame(f, f.serialize()); + assertSame(f, f.serialize()); - assertFalse(f.isDisposed()); + assertFalse(f.isDisposed()); - final int[] calls = { 0 }; + final int[] calls = { 0 }; - f.setCancellable(new Cancellable() { - @Override - public void cancel() throws Exception { - calls[0]++; - } - }); + f.setCancellable(() -> calls[0]++); - e.onComplete(); + e.onComplete(); - assertTrue(f.isDisposed()); + assertTrue(f.isDisposed()); - assertEquals(1, calls[0]); - } + assertEquals(1, calls[0]); }) .test() .assertResult(); @@ -434,22 +364,16 @@ public void cancel() throws Exception { @Test public void serializedConcurrentOnNext() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - final ObservableEmitter f = e.serialize(); - - Runnable r1 = new Runnable() { - @Override - public void run() { - for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { - f.onNext(1); - } - } - }; - - TestHelper.race(r1, r1); - } + Observable.create(e -> { + final ObservableEmitter f = e.serialize(); + + Runnable r1 = () -> { + for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { + f.onNext(1); + } + }; + + TestHelper.race(r1, r1); }) .take(TestHelper.RACE_DEFAULT_LOOPS) .to(TestHelper.testConsumer()) @@ -461,32 +385,23 @@ public void run() { @Test public void serializedConcurrentOnNextOnError() { - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - final ObservableEmitter f = e.serialize(); - - Runnable r1 = new Runnable() { - @Override - public void run() { - for (int i = 0; i < 1000; i++) { - f.onNext(1); - } - } - }; - - Runnable r2 = new Runnable() { - @Override - public void run() { - for (int i = 0; i < 100; i++) { - f.onNext(1); - } - f.onError(new TestException()); - } - }; - - TestHelper.race(r1, r2); - } + Observable.create(e -> { + final ObservableEmitter f = e.serialize(); + + Runnable r1 = () -> { + for (int i = 0; i < 1000; i++) { + f.onNext(1); + } + }; + + Runnable r2 = () -> { + for (int i = 0; i < 100; i++) { + f.onNext(1); + } + f.onError(new TestException()); + }; + + TestHelper.race(r1, r2); }) .to(TestHelper.testConsumer()) .assertSubscribed() @@ -496,32 +411,23 @@ public void run() { @Test public void serializedConcurrentOnNextOnComplete() { - TestObserverEx to = Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - final ObservableEmitter f = e.serialize(); - - Runnable r1 = new Runnable() { - @Override - public void run() { - for (int i = 0; i < 1000; i++) { - f.onNext(1); - } - } - }; - - Runnable r2 = new Runnable() { - @Override - public void run() { - for (int i = 0; i < 100; i++) { - f.onNext(1); - } - f.onComplete(); - } - }; - - TestHelper.race(r1, r2); - } + TestObserverEx to = Observable.create(e -> { + final ObservableEmitter f = e.serialize(); + + Runnable r1 = () -> { + for (int i = 0; i < 1000; i++) { + f.onNext(1); + } + }; + + Runnable r2 = () -> { + for (int i = 0; i < 100; i++) { + f.onNext(1); + } + f.onComplete(); + }; + + TestHelper.race(r1, r2); }) .to(TestHelper.testConsumer()) .assertSubscribed() @@ -534,29 +440,16 @@ public void run() { @Test public void onErrorRace() { - Observable source = Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - final ObservableEmitter f = e.serialize(); - - final TestException ex = new TestException(); - - Runnable r1 = new Runnable() { - @Override - public void run() { - f.onError(null); - } - }; - - Runnable r2 = new Runnable() { - @Override - public void run() { - f.onError(ex); - } - }; - - TestHelper.race(r1, r2); - } + Observable source = Observable.create(e -> { + final ObservableEmitter f = e.serialize(); + + final TestException ex = new TestException(); + + Runnable r1 = () -> f.onError(null); + + Runnable r2 = () -> f.onError(ex); + + TestHelper.race(r1, r2); }); List errors = TestHelper.trackPluginErrors(); @@ -575,27 +468,14 @@ public void run() { @Test public void onCompleteRace() { - Observable source = Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - final ObservableEmitter f = e.serialize(); - - Runnable r1 = new Runnable() { - @Override - public void run() { - f.onComplete(); - } - }; - - Runnable r2 = new Runnable() { - @Override - public void run() { - f.onComplete(); - } - }; - - TestHelper.race(r1, r2); - } + Observable source = Observable.create(e -> { + final ObservableEmitter f = e.serialize(); + + Runnable r1 = f::onComplete; + + Runnable r2 = f::onComplete; + + TestHelper.race(r1, r2); }); for (int i = 0; i < TestHelper.RACE_DEFAULT_LOOPS; i++) { @@ -610,12 +490,9 @@ public void tryOnError() { List errors = TestHelper.trackPluginErrors(); try { final Boolean[] response = { null }; - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e.onNext(1); - response[0] = e.tryOnError(new TestException()); - } + Observable.create(e -> { + e.onNext(1); + response[0] = e.tryOnError(new TestException()); }) .take(1) .test() @@ -634,13 +511,10 @@ public void tryOnErrorSerialized() { List errors = TestHelper.trackPluginErrors(); try { final Boolean[] response = { null }; - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter e) throws Exception { - e = e.serialize(); - e.onNext(1); - response[0] = e.tryOnError(new TestException()); - } + Observable.create(e -> { + e = e.serialize(); + e.onNext(1); + response[0] = e.tryOnError(new TestException()); }) .take(1) .test() @@ -656,12 +530,9 @@ public void subscribe(ObservableEmitter e) throws Exception { @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())); - } + Observable.create(emitter -> { + 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/rxjava4/internal/operators/observable/ObservableDebounceTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDebounceTest.java index 3bbe7ac58b..3cbb11f25c 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDebounceTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDebounceTest.java @@ -24,8 +24,6 @@ import io.reactivex.rxjava4.functions.Action; import org.junit.*; import org.mockito.InOrder; -import static java.util.concurrent.Flow.*; - import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.disposables.*; import io.reactivex.rxjava4.exceptions.TestException; @@ -53,16 +51,13 @@ public void before() { @Test public void debounceWithOnDroppedCallbackWithEx() throws Throwable { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - publishNext(observer, 100, "one"); // Should be skipped since "two" will arrive before the timeout expires. - publishNext(observer, 400, "two"); // Should be published since "three" will arrive after the timeout expires. - publishNext(observer, 900, "three"); // Should be skipped since onComplete will arrive before the timeout expires. - publishNext(observer, 999, "four"); // Should be skipped since onComplete will arrive before the timeout expires. - publishCompleted(observer, 1000); // Should be published as soon as the timeout expires. - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + publishNext(observer, 100, "one"); // Should be skipped since "two" will arrive before the timeout expires. + publishNext(observer, 400, "two"); // Should be published since "three" will arrive after the timeout expires. + publishNext(observer, 900, "three"); // Should be skipped since onComplete will arrive before the timeout expires. + publishNext(observer, 999, "four"); // Should be skipped since onComplete will arrive before the timeout expires. + publishCompleted(observer, 1000); // Should be published as soon as the timeout expires. }); Action whenDisposed = mock(Action.class); @@ -91,16 +86,13 @@ public void subscribe(Observer observer) { @Test public void debounceWithOnDroppedCallback() { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - publishNext(observer, 100, "one"); // Should be skipped since "two" will arrive before the timeout expires. - publishNext(observer, 400, "two"); // Should be published since "three" will arrive after the timeout expires. - publishNext(observer, 900, "three"); // Should be skipped since onComplete will arrive before the timeout expires. - publishNext(observer, 999, "four"); // Should be skipped since onComplete will arrive before the timeout expires. - publishCompleted(observer, 1000); // Should be published as soon as the timeout expires. - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + publishNext(observer, 100, "one"); // Should be skipped since "two" will arrive before the timeout expires. + publishNext(observer, 400, "two"); // Should be published since "three" will arrive after the timeout expires. + publishNext(observer, 900, "three"); // Should be skipped since onComplete will arrive before the timeout expires. + publishNext(observer, 999, "four"); // Should be skipped since onComplete will arrive before the timeout expires. + publishCompleted(observer, 1000); // Should be published as soon as the timeout expires. }); Observer drops = TestHelper.mockObserver(); @@ -123,15 +115,12 @@ public void subscribe(Observer observer) { @Test public void debounceWithCompleted() { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - publishNext(observer, 100, "one"); // Should be skipped since "two" will arrive before the timeout expires. - publishNext(observer, 400, "two"); // Should be published since "three" will arrive after the timeout expires. - publishNext(observer, 900, "three"); // Should be skipped since onComplete will arrive before the timeout expires. - publishCompleted(observer, 1000); // Should be published as soon as the timeout expires. - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + publishNext(observer, 100, "one"); // Should be skipped since "two" will arrive before the timeout expires. + publishNext(observer, 400, "two"); // Should be published since "three" will arrive after the timeout expires. + publishNext(observer, 900, "three"); // Should be skipped since onComplete will arrive before the timeout expires. + publishCompleted(observer, 1000); // Should be published as soon as the timeout expires. }); Observable sampled = source.debounce(400, TimeUnit.MILLISECONDS, scheduler); @@ -149,21 +138,18 @@ public void subscribe(Observer observer) { @Test public void debounceNeverEmits() { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - // all should be skipped since they are happening faster than the 200ms timeout - publishNext(observer, 100, "a"); // Should be skipped - publishNext(observer, 200, "b"); // Should be skipped - publishNext(observer, 300, "c"); // Should be skipped - publishNext(observer, 400, "d"); // Should be skipped - publishNext(observer, 500, "e"); // Should be skipped - publishNext(observer, 600, "f"); // Should be skipped - publishNext(observer, 700, "g"); // Should be skipped - publishNext(observer, 800, "h"); // Should be skipped - publishCompleted(observer, 900); // Should be published as soon as the timeout expires. - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + // all should be skipped since they are happening faster than the 200ms timeout + publishNext(observer, 100, "a"); // Should be skipped + publishNext(observer, 200, "b"); // Should be skipped + publishNext(observer, 300, "c"); // Should be skipped + publishNext(observer, 400, "d"); // Should be skipped + publishNext(observer, 500, "e"); // Should be skipped + publishNext(observer, 600, "f"); // Should be skipped + publishNext(observer, 700, "g"); // Should be skipped + publishNext(observer, 800, "h"); // Should be skipped + publishCompleted(observer, 900); // Should be published as soon as the timeout expires. }); Observable sampled = source.debounce(200, TimeUnit.MILLISECONDS, scheduler); @@ -179,15 +165,12 @@ public void subscribe(Observer observer) { @Test public void debounceWithError() { - Observable source = Observable.unsafeCreate(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - Exception error = new TestException(); - publishNext(observer, 100, "one"); // Should be published since "two" will arrive after the timeout expires. - publishNext(observer, 600, "two"); // Should be skipped since onError will arrive before the timeout expires. - publishError(observer, 700, error); // Should be published as soon as the timeout expires. - } + Observable source = Observable.unsafeCreate(observer -> { + observer.onSubscribe(Disposable.empty()); + Exception error = new TestException(); + publishNext(observer, 100, "one"); // Should be published since "two" will arrive after the timeout expires. + publishNext(observer, 600, "two"); // Should be skipped since onError will arrive before the timeout expires. + publishError(observer, 700, error); // Should be published as soon as the timeout expires. }); Observable sampled = source.debounce(400, TimeUnit.MILLISECONDS, scheduler); @@ -204,43 +187,22 @@ public void subscribe(Observer observer) { } private void publishCompleted(final Observer observer, long delay) { - innerScheduler.schedule(new Runnable() { - @Override - public void run() { - observer.onComplete(); - } - }, delay, TimeUnit.MILLISECONDS); + innerScheduler.schedule(observer::onComplete, delay, TimeUnit.MILLISECONDS); } private void publishError(final Observer observer, long delay, final Exception error) { - innerScheduler.schedule(new Runnable() { - @Override - public void run() { - observer.onError(error); - } - }, delay, TimeUnit.MILLISECONDS); + innerScheduler.schedule(() -> observer.onError(error), delay, TimeUnit.MILLISECONDS); } private void publishNext(final Observer observer, final long delay, final T value) { - innerScheduler.schedule(new Runnable() { - @Override - public void run() { - observer.onNext(value); - } - }, delay, TimeUnit.MILLISECONDS); + innerScheduler.schedule(() -> observer.onNext(value), delay, TimeUnit.MILLISECONDS); } @Test public void debounceSelectorNormal1() { PublishSubject source = PublishSubject.create(); final PublishSubject debouncer = PublishSubject.create(); - Function> debounceSel = new Function>() { - - @Override - public Observable apply(Integer t1) { - return debouncer; - } - }; + Function> debounceSel = _ -> debouncer; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -270,12 +232,8 @@ public Observable apply(Integer t1) { @Test public void debounceSelectorFuncThrows() { PublishSubject source = PublishSubject.create(); - Function> debounceSel = new Function>() { - - @Override - public Observable apply(Integer t1) { - throw new TestException(); - } + Function> debounceSel = _ -> { + throw new TestException(); }; Observer o = TestHelper.mockObserver(); @@ -292,13 +250,7 @@ public Observable apply(Integer t1) { @Test public void debounceSelectorObservableThrows() { PublishSubject source = PublishSubject.create(); - Function> debounceSel = new Function>() { - - @Override - public Observable apply(Integer t1) { - return Observable.error(new TestException()); - } - }; + Function> debounceSel = _ -> Observable.error(new TestException()); Observer o = TestHelper.mockObserver(); @@ -334,13 +286,7 @@ public void debounceSelectorLastIsNotLost() { PublishSubject source = PublishSubject.create(); final PublishSubject debouncer = PublishSubject.create(); - Function> debounceSel = new Function>() { - - @Override - public Observable apply(Integer t1) { - return debouncer; - } - }; + Function> debounceSel = _ -> debouncer; Observer o = TestHelper.mockObserver(); @@ -423,29 +369,9 @@ protected void subscribeActual(Observer observer) { @Test public void badSourceSelector() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable o) throws Exception { - return o.debounce(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.timer(1, TimeUnit.SECONDS); - } - }); - } - }, false, 1, 1, 1); + TestHelper.checkBadSourceObservable(o -> o.debounce(_ -> Observable.timer(1, TimeUnit.SECONDS)), false, 1, 1, 1); - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(final Observable o) throws Exception { - return Observable.just(1).debounce(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return o; - } - }); - } - }, false, 1, 1, 1); + TestHelper.checkBadSourceObservable(o -> Observable.just(1).debounce(_ -> o), false, 1, 1, 1); } @Test @@ -457,12 +383,7 @@ public void debounceWithEmpty() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, Observable>() { - @Override - public Observable apply(Observable o) throws Exception { - return o.debounce(Functions.justFunction(Observable.never())); - } - }); + TestHelper.checkDoubleOnSubscribeObservable((Function, Observable>) o -> o.debounce(Functions.justFunction(Observable.never()))); } @Test @@ -470,12 +391,9 @@ public void disposeInOnNext() { final TestObserver to = new TestObserver<>(); BehaviorSubject.createDefault(1) - .debounce(new Function>() { - @Override - public ObservableSource apply(Integer o) throws Exception { - to.dispose(); - return Observable.never(); - } + .debounce(_ -> { + to.dispose(); + return Observable.never(); }) .subscribeWith(to) .assertEmpty(); @@ -505,20 +423,17 @@ public void emitLate() { final AtomicReference> ref = new AtomicReference<>(); TestObserver to = Observable.range(1, 2) - .debounce(new Function>() { - @Override - public ObservableSource apply(Integer o) throws Exception { - if (o != 1) { - return Observable.never(); - } - return new Observable() { - @Override - protected void subscribeActual(Observer observer) { - observer.onSubscribe(Disposable.empty()); - ref.set(observer); - } - }; + .debounce(o -> { + if (o != 1) { + return Observable.never(); } + return new Observable() { + @Override + protected void subscribeActual(Observer observer) { + observer.onSubscribe(Disposable.empty()); + ref.set(observer); + } + }; }) .test(); @@ -530,13 +445,7 @@ protected void subscribeActual(Observer observer) { @Test public void timedDoubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeFlowable(new Function, Publisher>() { - @Override - public Publisher apply(Flowable f) - throws Exception { - return f.debounce(1, TimeUnit.SECONDS); - } - }); + TestHelper.checkDoubleOnSubscribeFlowable(f -> f.debounce(1, TimeUnit.SECONDS)); } @Test @@ -583,12 +492,7 @@ public void timedError() { @Test public void debounceOnEmpty() { - Observable.empty().debounce(new Function>() { - @Override - public ObservableSource apply(Object o) { - return Observable.just(new Object()); - } - }).subscribe(); + Observable.empty().debounce(_ -> Observable.just(new Object())).subscribe(); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDelaySubscriptionOtherTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDelaySubscriptionOtherTest.java index fcbfadb387..776c68bda8 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDelaySubscriptionOtherTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDelaySubscriptionOtherTest.java @@ -19,9 +19,7 @@ import org.junit.*; import io.reactivex.rxjava4.core.*; -import io.reactivex.rxjava4.disposables.Disposable; import io.reactivex.rxjava4.exceptions.TestException; -import io.reactivex.rxjava4.functions.*; import io.reactivex.rxjava4.observers.TestObserver; import io.reactivex.rxjava4.schedulers.Schedulers; import io.reactivex.rxjava4.subjects.PublishSubject; @@ -37,12 +35,7 @@ public void noPrematureSubscription() { final AtomicInteger subscribed = new AtomicInteger(); Observable.just(1) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - subscribed.getAndIncrement(); - } - }) + .doOnSubscribe(_ -> subscribed.getAndIncrement()) .delaySubscription(other) .subscribe(to); @@ -70,12 +63,7 @@ public void noMultipleSubscriptions() { final AtomicInteger subscribed = new AtomicInteger(); Observable.just(1) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - subscribed.getAndIncrement(); - } - }) + .doOnSubscribe(_ -> subscribed.getAndIncrement()) .delaySubscription(other) .subscribe(to); @@ -104,12 +92,7 @@ public void completeTriggersSubscription() { final AtomicInteger subscribed = new AtomicInteger(); Observable.just(1) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - subscribed.getAndIncrement(); - } - }) + .doOnSubscribe(_ -> subscribed.getAndIncrement()) .delaySubscription(other) .subscribe(to); @@ -137,12 +120,7 @@ public void noPrematureSubscriptionToError() { final AtomicInteger subscribed = new AtomicInteger(); Observable.error(new TestException()) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - subscribed.getAndIncrement(); - } - }) + .doOnSubscribe(_ -> subscribed.getAndIncrement()) .delaySubscription(other) .subscribe(to); @@ -170,12 +148,7 @@ public void noSubscriptionIfOtherErrors() { final AtomicInteger subscribed = new AtomicInteger(); Observable.error(new TestException()) - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - subscribed.getAndIncrement(); - } - }) + .doOnSubscribe(_ -> subscribed.getAndIncrement()) .delaySubscription(other) .subscribe(to); @@ -196,12 +169,7 @@ public void accept(Disposable d) { @Test public void badSourceOther() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable o) throws Exception { - return Observable.just(1).delaySubscription(o); - } - }, false, 1, 1, 1); + TestHelper.checkBadSourceObservable(o -> Observable.just(1).delaySubscription(o), false, 1, 1, 1); } @Test @@ -212,12 +180,9 @@ public void afterDelayNoInterrupt() { final TestObserver observer = TestObserver.create(); observer.withTag(s.getClass().getSimpleName()); - Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter emitter) throws Exception { - emitter.onNext(Thread.interrupted()); - emitter.onComplete(); - } + Observable.create(emitter -> { + emitter.onNext(Thread.interrupted()); + emitter.onComplete(); }) .delaySubscription(100, TimeUnit.MILLISECONDS, s) .subscribe(observer); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDelayTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDelayTest.java index a18d80580a..8759af3c8c 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDelayTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDelayTest.java @@ -123,14 +123,11 @@ public void longDelay() { @Test public void delayWithError() { Observable source = Observable.interval(1L, TimeUnit.SECONDS, scheduler) - .map(new Function() { - @Override - public Long apply(Long value) { - if (value == 1L) { - throw new RuntimeException("error!"); - } - return value; + .map(value -> { + if (value == 1L) { + throw new RuntimeException("error!"); } + return value; }); Observable delayed = source.delay(1L, TimeUnit.SECONDS, scheduler); delayed.subscribe(observer); @@ -242,12 +239,7 @@ public void delayWithObservableNormal1() { delays.add(delay); } - Function> delayFunc = new Function>() { - @Override - public Observable apply(Integer t1) { - return delays.get(t1); - } - }; + Function> delayFunc = delays::get; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -272,13 +264,7 @@ public void delayWithObservableSingleSend1() { PublishSubject source = PublishSubject.create(); final PublishSubject delay = PublishSubject.create(); - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - return delay; - } - }; + Function> delayFunc = _ -> delay; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -298,13 +284,7 @@ public void delayWithObservableSourceThrows() { PublishSubject source = PublishSubject.create(); final PublishSubject delay = PublishSubject.create(); - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - return delay; - } - }; + Function> delayFunc = _ -> delay; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -323,12 +303,8 @@ public Observable apply(Integer t1) { public void delayWithObservableDelayFunctionThrows() { PublishSubject source = PublishSubject.create(); - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - throw new TestException(); - } + Function> delayFunc = _ -> { + throw new TestException(); }; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -347,13 +323,7 @@ public void delayWithObservableDelayThrows() { PublishSubject source = PublishSubject.create(); final PublishSubject delay = PublishSubject.create(); - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - return delay; - } - }; + Function> delayFunc = _ -> delay; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -371,19 +341,8 @@ public Observable apply(Integer t1) { public void delayWithObservableSubscriptionNormal() { PublishSubject source = PublishSubject.create(); final PublishSubject delay = PublishSubject.create(); - Supplier> subFunc = new Supplier>() { - @Override - public Observable get() { - return delay; - } - }; - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - return delay; - } - }; + Supplier> subFunc = () -> delay; + Function> delayFunc = _ -> delay; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -406,19 +365,10 @@ public Observable apply(Integer t1) { public void delayWithObservableSubscriptionFunctionThrows() { PublishSubject source = PublishSubject.create(); final PublishSubject delay = PublishSubject.create(); - Supplier> subFunc = new Supplier>() { - @Override - public Observable get() { - throw new TestException(); - } - }; - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - return delay; - } + Supplier> subFunc = () -> { + throw new TestException(); }; + Function> delayFunc = _ -> delay; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -440,19 +390,8 @@ public Observable apply(Integer t1) { public void delayWithObservableSubscriptionThrows() { PublishSubject source = PublishSubject.create(); final PublishSubject delay = PublishSubject.create(); - Supplier> subFunc = new Supplier>() { - @Override - public Observable get() { - return delay; - } - }; - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - return delay; - } - }; + Supplier> subFunc = () -> delay; + Function> delayFunc = _ -> delay; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -474,13 +413,7 @@ public Observable apply(Integer t1) { public void delayWithObservableEmptyDelayer() { PublishSubject source = PublishSubject.create(); - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - return Observable.empty(); - } - }; + Function> delayFunc = _ -> Observable.empty(); Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -500,19 +433,8 @@ public void delayWithObservableSubscriptionRunCompletion() { PublishSubject source = PublishSubject.create(); final PublishSubject sdelay = PublishSubject.create(); final PublishSubject delay = PublishSubject.create(); - Supplier> subFunc = new Supplier>() { - @Override - public Observable get() { - return sdelay; - } - }; - Function> delayFunc = new Function>() { - - @Override - public Observable apply(Integer t1) { - return delay; - } - }; + Supplier> subFunc = () -> sdelay; + Function> delayFunc = _ -> delay; Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -537,12 +459,7 @@ public void delayWithObservableAsTimed() { final Observable delayer = Observable.timer(500L, TimeUnit.MILLISECONDS, scheduler); - Function> delayFunc = new Function>() { - @Override - public Observable apply(Long t1) { - return delayer; - } - }; + Function> delayFunc = _ -> delayer; Observable delayed = source.delay(delayFunc); delayed.subscribe(observer); @@ -591,13 +508,7 @@ public void delayWithObservableReorder() { subjects.add(PublishSubject. create()); } - Observable result = source.delay(new Function>() { - - @Override - public Observable apply(Integer t1) { - return subjects.get(t1); - } - }); + Observable result = source.delay((Function>) subjects::get); Observer o = TestHelper.mockObserver(); InOrder inOrder = inOrder(o); @@ -626,14 +537,7 @@ public Observable apply(Integer t1) { public void delayEmitsEverything() { Observable source = Observable.range(1, 5); Observable delayed = source.delay(500L, TimeUnit.MILLISECONDS, scheduler); - delayed = delayed.doOnEach(new Consumer>() { - - @Override - public void accept(Notification t1) { - System.out.println(t1); - } - - }); + delayed = delayed.doOnEach(System.out::println); TestObserver observer = new TestObserver<>(); delayed.subscribe(observer); // all will be delivered after 500ms since range does not delay between them @@ -702,14 +606,7 @@ public Integer apply(Integer t) { public void backpressureWithSelectorDelay() { TestObserver to = new TestObserver<>(); Observable.range(1, Flowable.bufferSize() * 2) - .delay(new Function>() { - - @Override - public Observable apply(Integer i) { - return Observable.timer(100, TimeUnit.MILLISECONDS); - } - - }) + .delay((Function>) _ -> Observable.timer(100, TimeUnit.MILLISECONDS)) .observeOn(Schedulers.computation()) .map(new Function() { @@ -738,14 +635,7 @@ public void backpressureWithSelectorDelayAndSubscriptionDelay() { TestObserver to = new TestObserver<>(); Observable.range(1, Flowable.bufferSize() * 2) .delay(Observable.timer(500, TimeUnit.MILLISECONDS) - , new Function>() { - - @Override - public Observable apply(Integer i) { - return Observable.timer(100, TimeUnit.MILLISECONDS); - } - - }) + , (Function>) _ -> Observable.timer(100, TimeUnit.MILLISECONDS)) .observeOn(Schedulers.computation()) .map(new Function() { @@ -872,12 +762,9 @@ public void onErrorCalledOnScheduler() throws Exception { Observable.error(new Exception()) .delay(0, TimeUnit.MILLISECONDS, Schedulers.newThread()) - .doOnError(new Consumer() { - @Override - public void accept(Throwable throwable) throws Exception { - thread.set(Thread.currentThread()); - latch.countDown(); - } + .doOnError(_ -> { + thread.set(Thread.currentThread()); + latch.countDown(); }) .onErrorResumeWith(Observable.empty()) .subscribe(); @@ -896,19 +783,9 @@ public void dispose() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable o) throws Exception { - return o.delay(1, TimeUnit.SECONDS); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(o -> o.delay(1, TimeUnit.SECONDS)); - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable o) throws Exception { - return o.delay(Functions.justFunction(Observable.never())); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(o -> o.delay(Functions.justFunction(Observable.never()))); } @Test @@ -971,12 +848,7 @@ public void onComplete() { @Test public void itemDelayReturnsNull() { - Observable.just(1).delay(new Function>() { - @Override - public Observable apply(Integer t) throws Exception { - return null; - } - }) + Observable.just(1).delay((Function>) _ -> null) .to(TestHelper.testConsumer()) .assertFailureAndMessage(NullPointerException.class, "The itemDelay returned a null ObservableSource"); } diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDistinctTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDistinctTest.java index cac117e320..ca7aafd46e 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDistinctTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDistinctTest.java @@ -41,14 +41,11 @@ public class ObservableDistinctTest extends RxJavaTest { Observer w; // nulls lead to exceptions - final Function TO_UPPER_WITH_EXCEPTION = new Function() { - @Override - public String apply(String s) { - if (s.equals("x")) { - return "XX"; - } - return s.toUpperCase(); + final Function TO_UPPER_WITH_EXCEPTION = s -> { + if (s.equals("x")) { + return "XX"; } + return s.toUpperCase(); }; @Before @@ -175,11 +172,8 @@ public void onComplete() { @Test public void collectionSupplierThrows() { Observable.just(1) - .distinct(Functions.identity(), new Supplier>() { - @Override - public Collection get() throws Exception { - throw new TestException(); - } + .distinct(Functions.identity(), (Supplier>) () -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); @@ -188,12 +182,7 @@ public Collection get() throws Exception { @Test public void collectionSupplierIsNull() { Observable.just(1) - .distinct(Functions.identity(), new Supplier>() { - @Override - public Collection get() throws Exception { - return null; - } - }) + .distinct(Functions.identity(), (Supplier>) () -> null) .to(TestHelper.testConsumer()) .assertFailure(NullPointerException.class) .assertErrorMessage(ExceptionHelper.nullWarning("The collectionSupplier returned a null Collection.")); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDistinctUntilChangedTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDistinctUntilChangedTest.java index fa20b3d686..98acb5d05f 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDistinctUntilChangedTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDistinctUntilChangedTest.java @@ -38,14 +38,11 @@ public class ObservableDistinctUntilChangedTest extends RxJavaTest { Observer w2; // nulls lead to exceptions - final Function TO_UPPER_WITH_EXCEPTION = new Function() { - @Override - public String apply(String s) { - if (s.equals("x")) { - return "xx"; - } - return s.toUpperCase(); + final Function TO_UPPER_WITH_EXCEPTION = s -> { + if (s.equals("x")) { + return "xx"; } + return s.toUpperCase(); }; @Before @@ -114,12 +111,7 @@ public void customComparator() { TestObserver to = TestObserver.create(); - source.distinctUntilChanged(new BiPredicate() { - @Override - public boolean test(String a, String b) { - return a.compareToIgnoreCase(b) == 0; - } - }) + source.distinctUntilChanged((a, b) -> a.compareToIgnoreCase(b) == 0) .subscribe(to); to.assertValues("a", "b", "A", "C"); @@ -133,11 +125,8 @@ public void customComparatorThrows() { TestObserver to = TestObserver.create(); - source.distinctUntilChanged(new BiPredicate() { - @Override - public boolean test(String a, String b) { - throw new TestException(); - } + source.distinctUntilChanged((_, _) -> { + throw new TestException(); }) .subscribe(to); @@ -151,12 +140,7 @@ public void fused() { TestObserverEx to = new TestObserverEx<>(QueueFuseable.ANY); Observable.just(1, 2, 2, 3, 3, 4, 5) - .distinctUntilChanged(new BiPredicate() { - @Override - public boolean test(Integer a, Integer b) throws Exception { - return a.equals(b); - } - }) + .distinctUntilChanged(Integer::equals) .subscribe(to); to.assertFuseable() @@ -172,12 +156,7 @@ public void fusedAsync() { UnicastSubject us = UnicastSubject.create(); us - .distinctUntilChanged(new BiPredicate() { - @Override - public boolean test(Integer a, Integer b) throws Exception { - return a.equals(b); - } - }) + .distinctUntilChanged(Integer::equals) .subscribe(to); TestHelper.emit(us, 1, 2, 2, 3, 3, 4, 5); @@ -193,22 +172,16 @@ public void ignoreCancel() { List errors = TestHelper.trackPluginErrors(); try { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onNext(1); - observer.onNext(2); - observer.onNext(3); - observer.onError(new IOException()); - observer.onComplete(); - } + Observable.wrap((ObservableSource) observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onNext(1); + observer.onNext(2); + observer.onNext(3); + observer.onError(new IOException()); + observer.onComplete(); }) - .distinctUntilChanged(new BiPredicate() { - @Override - public boolean test(Integer a, Integer b) throws Exception { - throw new TestException(); - } + .distinctUntilChanged((_, _) -> { + throw new TestException(); }) .test() .assertFailure(TestException.class, 1); @@ -229,12 +202,7 @@ public void mutableWithSelector() { PublishSubject ps = PublishSubject.create(); - TestObserver to = ps.distinctUntilChanged(new Function() { - @Override - public Object apply(Mutable m) throws Exception { - return m.value; - } - }) + TestObserver to = ps.distinctUntilChanged((Function) m1 -> m1.value) .test(); ps.onNext(m); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoAfterNextTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoAfterNextTest.java index 3972d83fc1..097f882012 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoAfterNextTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoAfterNextTest.java @@ -33,12 +33,7 @@ public class ObservableDoAfterNextTest extends RxJavaTest { final List values = new ArrayList<>(); - final Consumer afterNext = new Consumer() { - @Override - public void accept(Integer e) throws Exception { - values.add(-e); - } - }; + final Consumer afterNext = e -> values.add(-e); final TestObserver to = new TestObserver() { @Override @@ -241,11 +236,8 @@ public void asyncFusedConditional() { @Test public void consumerThrows() { Observable.just(1, 2) - .doAfterNext(new Consumer() { - @Override - public void accept(Integer e) throws Exception { - throw new TestException(); - } + .doAfterNext(_ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class, 1); @@ -254,11 +246,8 @@ public void accept(Integer e) throws Exception { @Test public void consumerThrowsConditional() { Observable.just(1, 2) - .doAfterNext(new Consumer() { - @Override - public void accept(Integer e) throws Exception { - throw new TestException(); - } + .doAfterNext(_ -> { + throw new TestException(); }) .filter(Functions.alwaysTrue()) .test() @@ -268,11 +257,8 @@ public void accept(Integer e) throws Exception { @Test public void consumerThrowsConditional2() { Observable.just(1, 2).hide() - .doAfterNext(new Consumer() { - @Override - public void accept(Integer e) throws Exception { - throw new TestException(); - } + .doAfterNext(_ -> { + throw new TestException(); }) .filter(Functions.alwaysTrue()) .test() diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoFinallyTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoFinallyTest.java index a2855c529a..b0c0ce72cb 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoFinallyTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoFinallyTest.java @@ -84,18 +84,10 @@ public void normalTake() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, Observable>() { - @Override - public Observable apply(Observable f) throws Exception { - return f.doFinally(ObservableDoFinallyTest.this); - } - }); - TestHelper.checkDoubleOnSubscribeObservable(new Function, Observable>() { - @Override - public Observable apply(Observable f) throws Exception { - return f.doFinally(ObservableDoFinallyTest.this).filter(Functions.alwaysTrue()); - } - }); + TestHelper.checkDoubleOnSubscribeObservable((Function, Observable>) f -> + f.doFinally(ObservableDoFinallyTest.this)); + TestHelper.checkDoubleOnSubscribeObservable((Function, Observable>) f -> + f.doFinally(ObservableDoFinallyTest.this).filter(Functions.alwaysTrue())); } @Test @@ -305,11 +297,8 @@ public void actionThrows() { List errors = TestHelper.trackPluginErrors(); try { Observable.just(1) - .doFinally(new Action() { - @Override - public void run() throws Exception { - throw new TestException(); - } + .doFinally(() -> { + throw new TestException(); }) .test() .assertResult(1) @@ -326,11 +315,8 @@ public void actionThrowsConditional() { List errors = TestHelper.trackPluginErrors(); try { Observable.just(1) - .doFinally(new Action() { - @Override - public void run() throws Exception { - throw new TestException(); - } + .doFinally(() -> { + throw new TestException(); }) .filter(Functions.alwaysTrue()) .test() @@ -445,37 +431,12 @@ public void eventOrdering() { final List list = new ArrayList<>(); Observable.error(new TestException()) - .doOnDispose(new Action() { - @Override - public void run() throws Exception { - list.add("dispose"); - } - }) - .doFinally(new Action() { - @Override - public void run() throws Exception { - list.add("finally"); - } - }) + .doOnDispose(() -> list.add("dispose")) + .doFinally(() -> list.add("finally")) .subscribe( - new Consumer() { - @Override - public void accept(Object v) throws Exception { - list.add("onNext"); - } - }, - new Consumer() { - @Override - public void accept(Throwable e) throws Exception { - list.add("onError"); - } - }, - new Action() { - @Override - public void run() throws Exception { - list.add("onComplete"); - } - }); + _ -> list.add("onNext"), + _ -> list.add("onError"), + () -> list.add("onComplete")); assertEquals(Arrays.asList("onError", "finally"), list); } @@ -485,37 +446,12 @@ public void eventOrdering2() { final List list = new ArrayList<>(); Observable.just(1) - .doOnDispose(new Action() { - @Override - public void run() throws Exception { - list.add("dispose"); - } - }) - .doFinally(new Action() { - @Override - public void run() throws Exception { - list.add("finally"); - } - }) + .doOnDispose(() -> list.add("dispose")) + .doFinally(() -> list.add("finally")) .subscribe( - new Consumer() { - @Override - public void accept(Object v) throws Exception { - list.add("onNext"); - } - }, - new Consumer() { - @Override - public void accept(Throwable e) throws Exception { - list.add("onError"); - } - }, - new Action() { - @Override - public void run() throws Exception { - list.add("onComplete"); - } - }); + (Consumer) _ -> list.add("onNext"), + _ -> list.add("onError"), + () -> list.add("onComplete")); assertEquals(Arrays.asList("onNext", "onComplete", "finally"), list); } diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnEachTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnEachTest.java index 95ea7b2be8..9552abc96f 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnEachTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnEachTest.java @@ -26,7 +26,6 @@ import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.exceptions.*; -import io.reactivex.rxjava4.functions.*; import io.reactivex.rxjava4.internal.functions.Functions; import io.reactivex.rxjava4.observers.TestObserver; import io.reactivex.rxjava4.operators.QueueFuseable; @@ -70,14 +69,11 @@ public void doOnEach() { @Test public void doOnEachWithError() { Observable base = Observable.just("one", "fail", "two", "three", "fail"); - Observable errs = base.map(new Function() { - @Override - public String apply(String s) { - if ("fail".equals(s)) { - throw new RuntimeException("Forced Failure"); - } - return s; + Observable errs = base.map(s -> { + if ("fail".equals(s)) { + throw new RuntimeException("Forced Failure"); } + return s; }); Observable doOnEach = errs.doOnEach(sideEffectObserver); @@ -99,12 +95,9 @@ public String apply(String s) { @Test public void doOnEachWithErrorInCallback() { Observable base = Observable.just("one", "two", "fail", "three"); - Observable doOnEach = base.doOnNext(new Consumer() { - @Override - public void accept(String s) { - if ("fail".equals(s)) { - throw new RuntimeException("Forced Failure"); - } + Observable doOnEach = base.doOnNext(s -> { + if ("fail".equals(s)) { + throw new RuntimeException("Forced Failure"); } }); @@ -125,19 +118,9 @@ public void issue1451Case1() { for (int i = 0; i < expectedCount; i++) { Observable .just(Boolean.TRUE, Boolean.FALSE) - .takeWhile(new Predicate() { - @Override - public boolean test(Boolean value) { - return value; - } - }) + .takeWhile(value -> value) .toList() - .doOnSuccess(new Consumer>() { - @Override - public void accept(List booleans) { - count.incrementAndGet(); - } - }) + .doOnSuccess(_ -> count.incrementAndGet()) .subscribe(); } assertEquals(expectedCount, count.get()); @@ -151,19 +134,9 @@ public void issue1451Case2() { for (int i = 0; i < expectedCount; i++) { Observable .just(Boolean.TRUE, Boolean.FALSE, Boolean.FALSE) - .takeWhile(new Predicate() { - @Override - public boolean test(Boolean value) { - return value; - } - }) + .takeWhile(value -> value) .toList() - .doOnSuccess(new Consumer>() { - @Override - public void accept(List booleans) { - count.incrementAndGet(); - } - }) + .doOnSuccess(_ -> count.incrementAndGet()) .subscribe(); } assertEquals(expectedCount, count.get()); @@ -205,11 +178,8 @@ public void onErrorThrows() { TestObserverEx to = new TestObserverEx<>(); Observable.error(new TestException()) - .doOnError(new Consumer() { - @Override - public void accept(Throwable e) { - throw new TestException(); - } + .doOnError(_ -> { + throw new TestException(); }).subscribe(to); to.assertNoValues(); @@ -229,21 +199,15 @@ public void ignoreCancel() { List errors = TestHelper.trackPluginErrors(); try { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onNext(1); - observer.onNext(2); - observer.onError(new IOException()); - observer.onComplete(); - } + Observable.wrap(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onNext(1); + observer.onNext(2); + observer.onError(new IOException()); + observer.onComplete(); }) - .doOnNext(new Consumer() { - @Override - public void accept(Object e) throws Exception { - throw new TestException(); - } + .doOnNext(_ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); @@ -259,18 +223,12 @@ public void onErrorAfterCrash() { List errors = TestHelper.trackPluginErrors(); try { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onError(new TestException()); - } + Observable.wrap(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onError(new TestException()); }) - .doAfterTerminate(new Action() { - @Override - public void run() throws Exception { - throw new IOException(); - } + .doAfterTerminate(() -> { + throw new IOException(); }) .test() .assertFailure(TestException.class); @@ -286,18 +244,12 @@ public void onCompleteAfterCrash() { List errors = TestHelper.trackPluginErrors(); try { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onComplete(); - } + Observable.wrap(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onComplete(); }) - .doAfterTerminate(new Action() { - @Override - public void run() throws Exception { - throw new IOException(); - } + .doAfterTerminate(() -> { + throw new IOException(); }) .test() .assertResult(); @@ -310,18 +262,12 @@ public void run() throws Exception { @Test public void onCompleteCrash() { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onComplete(); - } + Observable.wrap(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onComplete(); }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - throw new IOException(); - } + .doOnComplete(() -> { + throw new IOException(); }) .test() .assertFailure(IOException.class); @@ -332,21 +278,15 @@ public void ignoreCancelConditional() { List errors = TestHelper.trackPluginErrors(); try { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onNext(1); - observer.onNext(2); - observer.onError(new IOException()); - observer.onComplete(); - } + Observable.wrap(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onNext(1); + observer.onNext(2); + observer.onError(new IOException()); + observer.onComplete(); }) - .doOnNext(new Consumer() { - @Override - public void accept(Object e) throws Exception { - throw new TestException(); - } + .doOnNext(_ -> { + throw new TestException(); }) .filter(Functions.alwaysTrue()) .test() @@ -363,18 +303,12 @@ public void onErrorAfterCrashConditional() { List errors = TestHelper.trackPluginErrors(); try { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onError(new TestException()); - } + Observable.wrap(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onError(new TestException()); }) - .doAfterTerminate(new Action() { - @Override - public void run() throws Exception { - throw new IOException(); - } + .doAfterTerminate(() -> { + throw new IOException(); }) .filter(Functions.alwaysTrue()) .test() @@ -390,12 +324,7 @@ public void run() throws Exception { public void onCompleteAfter() { final int[] call = { 0 }; Observable.just(1) - .doAfterTerminate(new Action() { - @Override - public void run() throws Exception { - call[0]++; - } - }) + .doAfterTerminate(() -> call[0]++) .test() .assertResult(1); @@ -407,18 +336,12 @@ public void onCompleteAfterCrashConditional() { List errors = TestHelper.trackPluginErrors(); try { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onComplete(); - } + Observable.wrap(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onComplete(); }) - .doAfterTerminate(new Action() { - @Override - public void run() throws Exception { - throw new IOException(); - } + .doAfterTerminate(() -> { + throw new IOException(); }) .filter(Functions.alwaysTrue()) .test() @@ -432,18 +355,12 @@ public void run() throws Exception { @Test public void onCompleteCrashConditional() { - Observable.wrap(new ObservableSource() { - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - observer.onComplete(); - } + Observable.wrap(observer -> { + observer.onSubscribe(Disposable.empty()); + observer.onComplete(); }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - throw new IOException(); - } + .doOnComplete(() -> { + throw new IOException(); }) .filter(Functions.alwaysTrue()) .test() @@ -453,11 +370,8 @@ public void run() throws Exception { @Test public void onErrorOnErrorCrashConditional() { TestObserverEx to = Observable.error(new TestException("Outer")) - .doOnError(new Consumer() { - @Override - public void accept(Throwable e) throws Exception { - throw new TestException("Inner"); - } + .doOnError(_ -> { + throw new TestException("Inner"); }) .filter(Functions.alwaysTrue()) .to(TestHelper.testConsumer()) @@ -477,18 +391,8 @@ public void fused() { final int[] call = { 0, 0 }; Observable.range(1, 5) - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - call[0]++; - } - }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - call[1]++; - } - }) + .doOnNext(_ -> call[0]++) + .doOnComplete(() -> call[1]++) .subscribe(to); to.assertFuseable() @@ -507,18 +411,10 @@ public void fusedOnErrorCrash() { final int[] call = { 0 }; Observable.range(1, 5) - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - throw new TestException(); - } - }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - call[0]++; - } + .doOnNext(_ -> { + throw new TestException(); }) + .doOnComplete(() -> call[0]++) .subscribe(to); to.assertFuseable() @@ -536,18 +432,8 @@ public void fusedConditional() { final int[] call = { 0, 0 }; Observable.range(1, 5) - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - call[0]++; - } - }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - call[1]++; - } - }) + .doOnNext(_ -> call[0]++) + .doOnComplete(() -> call[1]++) .filter(Functions.alwaysTrue()) .subscribe(to); @@ -567,18 +453,10 @@ public void fusedOnErrorCrashConditional() { final int[] call = { 0 }; Observable.range(1, 5) - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - throw new TestException(); - } - }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - call[0]++; - } + .doOnNext(_ -> { + throw new TestException(); }) + .doOnComplete(() -> call[0]++) .filter(Functions.alwaysTrue()) .subscribe(to); @@ -599,18 +477,8 @@ public void fusedAsync() { UnicastSubject us = UnicastSubject.create(); us - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - call[0]++; - } - }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - call[1]++; - } - }) + .doOnNext(_ -> call[0]++) + .doOnComplete(() -> call[1]++) .subscribe(to); TestHelper.emit(us, 1, 2, 3, 4, 5); @@ -633,18 +501,8 @@ public void fusedAsyncConditional() { UnicastSubject us = UnicastSubject.create(); us - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - call[0]++; - } - }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - call[1]++; - } - }) + .doOnNext(_ -> call[0]++) + .doOnComplete(() -> call[1]++) .filter(Functions.alwaysTrue()) .subscribe(to); @@ -668,18 +526,8 @@ public void fusedAsyncConditional2() { UnicastSubject us = UnicastSubject.create(); us.hide() - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - call[0]++; - } - }) - .doOnComplete(new Action() { - @Override - public void run() throws Exception { - call[1]++; - } - }) + .doOnNext(_ -> call[0]++) + .doOnComplete(() -> call[1]++) .filter(Functions.alwaysTrue()) .subscribe(to); @@ -700,11 +548,6 @@ public void dispose() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable o) throws Exception { - return o.doOnEach(new TestObserver<>()); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(o -> o.doOnEach(new TestObserver<>())); } } diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnSubscribeTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnSubscribeTest.java index f52ad147cb..1115617dcb 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnSubscribeTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnSubscribeTest.java @@ -23,7 +23,6 @@ import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.disposables.*; import io.reactivex.rxjava4.exceptions.TestException; -import io.reactivex.rxjava4.functions.Consumer; import io.reactivex.rxjava4.plugins.RxJavaPlugins; import io.reactivex.rxjava4.testsupport.TestHelper; @@ -32,12 +31,7 @@ public class ObservableDoOnSubscribeTest extends RxJavaTest { @Test public void doOnSubscribe() throws Exception { final AtomicInteger count = new AtomicInteger(); - Observable o = Observable.just(1).doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - count.incrementAndGet(); - } - }); + Observable o = Observable.just(1).doOnSubscribe(_ -> count.incrementAndGet()); o.subscribe(); o.subscribe(); @@ -48,17 +42,7 @@ public void accept(Disposable d) { @Test public void doOnSubscribe2() throws Exception { final AtomicInteger count = new AtomicInteger(); - Observable o = Observable.just(1).doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - count.incrementAndGet(); - } - }).take(1).doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - count.incrementAndGet(); - } - }); + Observable o = Observable.just(1).doOnSubscribe(_ -> count.incrementAndGet()).take(1).doOnSubscribe(_ -> count.incrementAndGet()); o.subscribe(); assertEquals(2, count.get()); @@ -70,27 +54,12 @@ public void doOnUnSubscribeWorksWithRefCount() throws Exception { final AtomicInteger countBefore = new AtomicInteger(); final AtomicInteger countAfter = new AtomicInteger(); final AtomicReference> sref = new AtomicReference<>(); - Observable o = Observable.unsafeCreate(new ObservableSource() { - - @Override - public void subscribe(Observer observer) { - observer.onSubscribe(Disposable.empty()); - onSubscribed.incrementAndGet(); - sref.set(observer); - } - - }).doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - countBefore.incrementAndGet(); - } - }).publish().refCount() - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - countAfter.incrementAndGet(); - } - }); + Observable o = Observable.unsafeCreate((ObservableSource) observer -> { + observer.onSubscribe(Disposable.empty()); + onSubscribed.incrementAndGet(); + sref.set(observer); + }).doOnSubscribe(_ -> countBefore.incrementAndGet()).publish().refCount() + .doOnSubscribe(_ -> countAfter.incrementAndGet()); o.subscribe(); o.subscribe(); @@ -121,11 +90,8 @@ protected void subscribeActual(Observer observer) { observer.onComplete(); } } - .doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) throws Exception { - throw new TestException("First"); - } + .doOnSubscribe(_ -> { + throw new TestException("First"); }) .to(TestHelper.testConsumer()) .assertFailureAndMessage(TestException.class, "First"); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnUnsubscribeTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnUnsubscribeTest.java index 7fc2394b2a..152f491d1d 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnUnsubscribeTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableDoOnUnsubscribeTest.java @@ -24,7 +24,6 @@ import io.reactivex.rxjava4.core.Observable; import io.reactivex.rxjava4.core.RxJavaTest; import io.reactivex.rxjava4.disposables.Disposable; -import io.reactivex.rxjava4.functions.*; import io.reactivex.rxjava4.observers.TestObserver; import io.reactivex.rxjava4.subjects.BehaviorSubject; @@ -43,29 +42,20 @@ public void doOnUnsubscribe() throws Exception { // The stream needs to be infinite to ensure the stream does not terminate // before it is unsubscribed .interval(50, TimeUnit.MILLISECONDS) - .doOnDispose(new Action() { - @Override - public void run() { - // Test that upper stream will be notified for un-subscription - // from a child Observer - upperLatch.countDown(); - upperCount.incrementAndGet(); - } + .doOnDispose(() -> { + // Test that upper stream will be notified for un-subscription + // from a child Observer + upperLatch.countDown(); + upperCount.incrementAndGet(); }) - .doOnNext(new Consumer() { - @Override - public void accept(Long aLong) { - // Ensure there is at least some onNext events before un-subscription happens - onNextLatch.countDown(); - } + .doOnNext(_ -> { + // Ensure there is at least some onNext events before un-subscription happens + onNextLatch.countDown(); }) - .doOnDispose(new Action() { - @Override - public void run() { - // Test that lower stream will be notified for a direct un-subscription - lowerLatch.countDown(); - lowerCount.incrementAndGet(); - } + .doOnDispose(() -> { + // Test that lower stream will be notified for a direct un-subscription + lowerLatch.countDown(); + lowerCount.incrementAndGet(); }); List subscriptions = new ArrayList<>(); @@ -105,28 +95,19 @@ public void doOnUnSubscribeWorksWithRefCount() throws Exception { // The stream needs to be infinite to ensure the stream does not terminate // before it is unsubscribed .interval(50, TimeUnit.MILLISECONDS) - .doOnDispose(new Action() { - @Override - public void run() { - // Test that upper stream will be notified for un-subscription - upperLatch.countDown(); - upperCount.incrementAndGet(); - } + .doOnDispose(() -> { + // Test that upper stream will be notified for un-subscription + upperLatch.countDown(); + upperCount.incrementAndGet(); }) - .doOnNext(new Consumer() { - @Override - public void accept(Long aLong) { - // Ensure there is at least some onNext events before un-subscription happens - onNextLatch.countDown(); - } + .doOnNext(_ -> { + // Ensure there is at least some onNext events before un-subscription happens + onNextLatch.countDown(); }) - .doOnDispose(new Action() { - @Override - public void run() { - // Test that lower stream will be notified for un-subscription - lowerLatch.countDown(); - lowerCount.incrementAndGet(); - } + .doOnDispose(() -> { + // Test that lower stream will be notified for un-subscription + lowerLatch.countDown(); + lowerCount.incrementAndGet(); }) .publish() .refCount(); @@ -161,12 +142,9 @@ public void noReentrantDispose() { final AtomicInteger disposeCalled = new AtomicInteger(); final BehaviorSubject s = BehaviorSubject.create(); - s.doOnDispose(new Action() { - @Override - public void run() throws Exception { - disposeCalled.incrementAndGet(); - s.onNext(2); - } + s.doOnDispose(() -> { + disposeCalled.incrementAndGet(); + s.onNext(2); }) .firstOrError() .subscribe() diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFilterTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFilterTest.java index 68f60ef10b..505495e497 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFilterTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFilterTest.java @@ -21,7 +21,6 @@ import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.exceptions.TestException; -import io.reactivex.rxjava4.functions.*; import io.reactivex.rxjava4.internal.functions.Functions; import io.reactivex.rxjava4.operators.QueueFuseable; import io.reactivex.rxjava4.subjects.UnicastSubject; @@ -32,13 +31,7 @@ public class ObservableFilterTest extends RxJavaTest { @Test public void filter() { Observable w = Observable.just("one", "two", "three"); - Observable observable = w.filter(new Predicate() { - - @Override - public boolean test(String t1) { - return t1.equals("two"); - } - }); + Observable observable = w.filter(t1 -> t1.equals("two")); Observer observer = TestHelper.mockObserver(); @@ -58,12 +51,7 @@ public void dispose() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable o) throws Exception { - return o.filter(Functions.alwaysTrue()); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(o -> o.filter(Functions.alwaysTrue())); } @Test @@ -71,12 +59,7 @@ public void fusedSync() { TestObserverEx to = new TestObserverEx<>(QueueFuseable.ANY); Observable.range(1, 5) - .filter(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - return v % 2 == 0; - } - }) + .filter(v -> v % 2 == 0) .subscribe(to); to.assertFusionMode(QueueFuseable.SYNC) @@ -90,12 +73,7 @@ public void fusedAsync() { UnicastSubject us = UnicastSubject.create(); us - .filter(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - return v % 2 == 0; - } - }) + .filter(v -> v % 2 == 0) .subscribe(to); TestHelper.emit(us, 1, 2, 3, 4, 5); @@ -109,12 +87,7 @@ public void fusedReject() { TestObserverEx to = new TestObserverEx<>(QueueFuseable.ANY | QueueFuseable.BOUNDARY); Observable.range(1, 5) - .filter(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - return v % 2 == 0; - } - }) + .filter(v -> v % 2 == 0) .subscribe(to); to.assertFusionMode(QueueFuseable.NONE) @@ -124,11 +97,8 @@ public boolean test(Integer v) throws Exception { @Test public void filterThrows() { Observable.range(1, 5) - .filter(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - throw new TestException(); - } + .filter(_ -> { + throw new TestException(); }) .test() .assertFailure(TestException.class); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFirstTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFirstTest.java index b1f3be1cf6..92507ce01e 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFirstTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFirstTest.java @@ -31,12 +31,7 @@ public class ObservableFirstTest extends RxJavaTest { SingleObserver wo; MaybeObserver wm; - private static final Predicate IS_D = new Predicate() { - @Override - public boolean test(String value) { - return "d".equals(value); - } - }; + private static final Predicate IS_D = "d"::equals; @Before public void before() { @@ -131,12 +126,7 @@ public void firstWithEmptyObservable() { @Test public void firstWithPredicateObservable() { Observable o = Observable.just(1, 2, 3, 4, 5, 6) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .firstElement().toObservable(); Observer observer = TestHelper.mockObserver(); @@ -151,12 +141,7 @@ public boolean test(Integer t1) { @Test public void firstWithPredicateAndOneElementObservable() { Observable o = Observable.just(1, 2) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .firstElement().toObservable(); Observer observer = TestHelper.mockObserver(); @@ -171,12 +156,7 @@ public boolean test(Integer t1) { @Test public void firstWithPredicateAndEmptyObservable() { Observable o = Observable.just(1) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .firstElement().toObservable(); Observer observer = TestHelper.mockObserver(); @@ -232,12 +212,7 @@ public void firstOrDefaultWithEmptyObservable() { @Test public void firstOrDefaultWithPredicateObservable() { Observable o = Observable.just(1, 2, 3, 4, 5, 6) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .first(8).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -252,12 +227,7 @@ public boolean test(Integer t1) { @Test public void firstOrDefaultWithPredicateAndOneElementObservable() { Observable o = Observable.just(1, 2) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .first(4).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -272,12 +242,7 @@ public boolean test(Integer t1) { @Test public void firstOrDefaultWithPredicateAndEmptyObservable() { Observable o = Observable.just(1) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .first(2).toObservable(); Observer observer = TestHelper.mockObserver(); @@ -366,12 +331,7 @@ public void firstWithEmpty() { @Test public void firstWithPredicate() { Maybe o = Observable.just(1, 2, 3, 4, 5, 6) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .firstElement(); o.subscribe(wm); @@ -384,12 +344,7 @@ public boolean test(Integer t1) { @Test public void firstWithPredicateAndOneElement() { Maybe o = Observable.just(1, 2) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .firstElement(); o.subscribe(wm); @@ -402,12 +357,7 @@ public boolean test(Integer t1) { @Test public void firstWithPredicateAndEmpty() { Maybe o = Observable.just(1) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .firstElement(); o.subscribe(wm); @@ -456,12 +406,7 @@ public void firstOrDefaultWithEmpty() { @Test public void firstOrDefaultWithPredicate() { Single o = Observable.just(1, 2, 3, 4, 5, 6) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .first(8); o.subscribe(wo); @@ -474,12 +419,7 @@ public boolean test(Integer t1) { @Test public void firstOrDefaultWithPredicateAndOneElement() { Single o = Observable.just(1, 2) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .first(4); o.subscribe(wo); @@ -492,12 +432,7 @@ public boolean test(Integer t1) { @Test public void firstOrDefaultWithPredicateAndEmpty() { Single o = Observable.just(1) - .filter(new Predicate() { - @Override - public boolean test(Integer t1) { - return t1 % 2 == 0; - } - }) + .filter(t1 -> t1 % 2 == 0) .first(2); o.subscribe(wo); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapCompletableTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapCompletableTest.java index 77f5aec2e4..ea6af9b005 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapCompletableTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapCompletableTest.java @@ -36,12 +36,7 @@ public class ObservableFlatMapCompletableTest extends RxJavaTest { @Test public void normalObservable() { Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }).toObservable() + .flatMapCompletable(_ -> Completable.complete()).toObservable() .test() .assertResult(); } @@ -51,11 +46,8 @@ public void mapperThrowsObservable() { PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - throw new TestException(); - } + .flatMapCompletable(_ -> { + throw new TestException(); }).toObservable() .test(); @@ -73,12 +65,7 @@ public void mapperReturnsNullObservable() { PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return null; - } - }).toObservable() + .flatMapCompletable(_ -> null).toObservable() .test(); assertTrue(ps.hasObservers()); @@ -93,12 +80,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalDelayErrorObservable() { Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }, true).toObservable() + .flatMapCompletable(_ -> Completable.complete(), true).toObservable() .test() .assertResult(); } @@ -106,12 +88,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalAsyncObservable() { Observable.range(1, 1000) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Observable.range(1, 100).subscribeOn(Schedulers.computation()).ignoreElements(); - } - }).toObservable() + .flatMapCompletable(_ -> Observable.range(1, 100).subscribeOn(Schedulers.computation()).ignoreElements()).toObservable() .test() .awaitDone(5, TimeUnit.SECONDS) .assertResult(); @@ -120,12 +97,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalDelayErrorAllObservable() { TestObserverEx to = Observable.range(1, 10).concatWith(Observable.error(new TestException())) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.error(new TestException()); - } - }, true).toObservable() + .flatMapCompletable(_ -> Completable.error(new TestException()), true).toObservable() .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class); @@ -139,12 +111,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalDelayInnerErrorAllObservable() { TestObserverEx to = Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.error(new TestException()); - } - }, true).toObservable() + .flatMapCompletable(_ -> Completable.error(new TestException()), true).toObservable() .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class); @@ -158,12 +125,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalNonDelayErrorOuterObservable() { Observable.range(1, 10).concatWith(Observable.error(new TestException())) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }, false).toObservable() + .flatMapCompletable(_ -> Completable.complete(), false).toObservable() .test() .assertFailure(TestException.class); } @@ -173,12 +135,7 @@ public void fusedObservable() { TestObserverEx to = new TestObserverEx<>(QueueFuseable.ANY); Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }).toObservable() + .flatMapCompletable(_ -> Completable.complete()).toObservable() .subscribe(to); to @@ -190,23 +147,13 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void disposedObservable() { TestHelper.checkDisposed(Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }).toObservable()); + .flatMapCompletable(_ -> Completable.complete()).toObservable()); } @Test public void normal() { Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }) + .flatMapCompletable(_ -> Completable.complete()) .test() .assertResult(); } @@ -216,11 +163,8 @@ public void mapperThrows() { PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - throw new TestException(); - } + .flatMapCompletable(_ -> { + throw new TestException(); }) .test(); @@ -238,12 +182,7 @@ public void mapperReturnsNull() { PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return null; - } - }) + .flatMapCompletable(_ -> null) .test(); assertTrue(ps.hasObservers()); @@ -258,12 +197,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalDelayError() { Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }, true) + .flatMapCompletable(_ -> Completable.complete(), true) .test() .assertResult(); } @@ -271,12 +205,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalAsync() { Observable.range(1, 1000) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Observable.range(1, 100).subscribeOn(Schedulers.computation()).ignoreElements(); - } - }) + .flatMapCompletable(_ -> Observable.range(1, 100).subscribeOn(Schedulers.computation()).ignoreElements()) .test() .awaitDone(5, TimeUnit.SECONDS) .assertResult(); @@ -285,12 +214,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalDelayErrorAll() { TestObserverEx to = Observable.range(1, 10).concatWith(Observable.error(new TestException())) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.error(new TestException()); - } - }, true) + .flatMapCompletable(_ -> Completable.error(new TestException()), true) .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class); @@ -304,12 +228,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalDelayInnerErrorAll() { TestObserverEx to = Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.error(new TestException()); - } - }, true) + .flatMapCompletable(_ -> Completable.error(new TestException()), true) .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class); @@ -323,12 +242,7 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void normalNonDelayErrorOuter() { Observable.range(1, 10).concatWith(Observable.error(new TestException())) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }, false) + .flatMapCompletable(_ -> Completable.complete(), false) .test() .assertFailure(TestException.class); } @@ -338,12 +252,7 @@ public void fused() { TestObserverEx to = new TestObserverEx<>(QueueFuseable.ANY); Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }) + .flatMapCompletable(_ -> Completable.complete()) .toObservable() .subscribe(to); @@ -356,32 +265,22 @@ public CompletableSource apply(Integer v) throws Exception { @Test public void disposed() { TestHelper.checkDisposed(Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - })); + .flatMapCompletable(_ -> Completable.complete())); } @Test public void innerObserver() { Observable.range(1, 3) - .flatMapCompletable(new Function() { + .flatMapCompletable(_ -> new Completable() { @Override - public CompletableSource apply(Integer v) throws Exception { - return new Completable() { - @Override - protected void subscribeActual(CompletableObserver observer) { - observer.onSubscribe(Disposable.empty()); + protected void subscribeActual(CompletableObserver observer) { + observer.onSubscribe(Disposable.empty()); - assertFalse(((Disposable)observer).isDisposed()); + assertFalse(((Disposable)observer).isDisposed()); - ((Disposable)observer).dispose(); + ((Disposable)observer).dispose(); - assertTrue(((Disposable)observer).isDisposed()); - } - }; + assertTrue(((Disposable)observer).isDisposed()); } }) .test(); @@ -389,28 +288,13 @@ protected void subscribeActual(CompletableObserver observer) { @Test public void badSource() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable o) throws Exception { - return o.flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }); - } - }, false, 1, null); + TestHelper.checkBadSourceObservable(o -> o.flatMapCompletable(_ -> Completable.complete()), false, 1, null); } @Test public void fusedInternalsObservable() { Observable.range(1, 10) - .flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }) + .flatMapCompletable(_ -> Completable.complete()) .toObservable() .subscribe(new Observer() { @Override @@ -442,21 +326,16 @@ public void onComplete() { @Test public void innerObserverObservable() { Observable.range(1, 3) - .flatMapCompletable(new Function() { + .flatMapCompletable(_ -> new Completable() { @Override - public CompletableSource apply(Integer v) throws Exception { - return new Completable() { - @Override - protected void subscribeActual(CompletableObserver observer) { - observer.onSubscribe(Disposable.empty()); + protected void subscribeActual(CompletableObserver observer) { + observer.onSubscribe(Disposable.empty()); - assertFalse(((Disposable)observer).isDisposed()); + assertFalse(((Disposable)observer).isDisposed()); - ((Disposable)observer).dispose(); + ((Disposable)observer).dispose(); - assertTrue(((Disposable)observer).isDisposed()); - } - }; + assertTrue(((Disposable)observer).isDisposed()); } }) .toObservable() @@ -465,47 +344,19 @@ protected void subscribeActual(CompletableObserver observer) { @Test public void badSourceObservable() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable o) throws Exception { - return o.flatMapCompletable(new Function() { - @Override - public CompletableSource apply(Integer v) throws Exception { - return Completable.complete(); - } - }).toObservable(); - } - }, false, 1, null); + TestHelper.checkBadSourceObservable(o -> o.flatMapCompletable(_ -> Completable.complete()).toObservable(), false, 1, null); } @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter() { - @Override - public Completable apply(Observable upstream) { - return upstream.flatMapCompletable(new Function() { - @Override - public Completable apply(Integer v) throws Throwable { - return Completable.complete().hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter) upstream -> + upstream.flatMapCompletable((Function) _ -> Completable.complete().hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter() { - @Override - public Completable apply(Observable upstream) { - return upstream.flatMapCompletable(new Function() { - @Override - public Completable apply(Integer v) throws Throwable { - return Completable.complete().hide(); - } - }, true); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter) upstream -> + upstream.flatMapCompletable((Function) _ -> Completable.complete().hide(), true)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapMaybeTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapMaybeTest.java index c0f2a9cfd6..68f57c8376 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapMaybeTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapMaybeTest.java @@ -36,12 +36,7 @@ public class ObservableFlatMapMaybeTest extends RxJavaTest { @Test public void normal() { Observable.range(1, 10) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.just(v); - } - }) + .flatMapMaybe((Function>) Maybe::just) .test() .assertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); } @@ -49,12 +44,7 @@ public MaybeSource apply(Integer v) throws Exception { @Test public void normalEmpty() { Observable.range(1, 10) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.empty(); - } - }) + .flatMapMaybe((Function>) _ -> Maybe.empty()) .test() .assertResult(); } @@ -62,12 +52,7 @@ public MaybeSource apply(Integer v) throws Exception { @Test public void normalDelayError() { Observable.range(1, 10) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.just(v); - } - }, true) + .flatMapMaybe((Function>) Maybe::just, true) .test() .assertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); } @@ -75,12 +60,7 @@ public MaybeSource apply(Integer v) throws Exception { @Test public void normalAsync() { TestObserverEx to = Observable.range(1, 10) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.just(v).subscribeOn(Schedulers.computation()); - } - }) + .flatMapMaybe((Function>) v -> Maybe.just(v).subscribeOn(Schedulers.computation())) .to(TestHelper.testConsumer()) .awaitDone(5, TimeUnit.SECONDS) .assertSubscribed() @@ -95,11 +75,8 @@ public void mapperThrowsObservable() { PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - throw new TestException(); - } + .flatMapMaybe((Function>) _ -> { + throw new TestException(); }) .test(); @@ -117,12 +94,7 @@ public void mapperReturnsNullObservable() { PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return null; - } - }) + .flatMapMaybe((Function>) _ -> null) .test(); assertTrue(ps.hasObservers()); @@ -138,12 +110,7 @@ public MaybeSource apply(Integer v) throws Exception { public void normalDelayErrorAll() { TestObserverEx to = Observable.range(1, 10) .concatWith(Observable.error(new TestException())) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.error(new TestException()); - } - }, true) + .flatMapMaybe((Function>) _ -> Maybe.error(new TestException()), true) .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class); @@ -157,12 +124,7 @@ public MaybeSource apply(Integer v) throws Exception { @Test public void takeAsync() { TestObserverEx to = Observable.range(1, 10) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.just(v).subscribeOn(Schedulers.computation()); - } - }) + .flatMapMaybe((Function>) v -> Maybe.just(v).subscribeOn(Schedulers.computation())) .take(2) .to(TestHelper.testConsumer()) .awaitDone(5, TimeUnit.SECONDS) @@ -177,12 +139,7 @@ public MaybeSource apply(Integer v) throws Exception { @Test public void take() { Observable.range(1, 10) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.just(v); - } - }) + .flatMapMaybe((Function>) Maybe::just) .take(2) .test() .assertResult(1, 2); @@ -190,17 +147,9 @@ public MaybeSource apply(Integer v) throws Exception { @Test public void middleError() { - Observable.fromArray(new String[]{"1", "a", "2"}).flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(final String s) throws NumberFormatException { - //return Single.just(Integer.valueOf(s)); //This works - return Maybe.fromCallable(new Callable() { - @Override - public Integer call() throws NumberFormatException { - return Integer.valueOf(s); - } - }); - } + Observable.fromArray(new String[]{"1", "a", "2"}).flatMapMaybe((Function>) s -> { + //return Single.just(Integer.valueOf(s)); //This works + return Maybe.fromCallable(() -> Integer.valueOf(s)); }) .test() .assertFailure(NumberFormatException.class, 1); @@ -209,12 +158,7 @@ public Integer call() throws NumberFormatException { @Test public void asyncFlatten() { Observable.range(1, 1000) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.just(1).subscribeOn(Schedulers.computation()); - } - }) + .flatMapMaybe((Function>) _ -> Maybe.just(1).subscribeOn(Schedulers.computation())) .take(500) .to(TestHelper.testConsumer()) .awaitDone(5, TimeUnit.SECONDS) @@ -227,12 +171,7 @@ public MaybeSource apply(Integer v) throws Exception { @Test public void asyncFlattenNone() { Observable.range(1, 1000) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.empty().subscribeOn(Schedulers.computation()); - } - }) + .flatMapMaybe((Function>) _ -> Maybe.empty().subscribeOn(Schedulers.computation())) .take(500) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -244,14 +183,11 @@ public void successError() { final PublishSubject ps = PublishSubject.create(); TestObserver to = Observable.range(1, 2) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - if (v == 2) { - return ps.singleElement(); - } - return Maybe.error(new TestException()); + .flatMapMaybe((Function>) v -> { + if (v == 2) { + return ps.singleElement(); } + return Maybe.error(new TestException()); }, true) .test(); @@ -267,14 +203,11 @@ public void completeError() { final PublishSubject ps = PublishSubject.create(); TestObserver to = Observable.range(1, 2) - .flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - if (v == 2) { - return ps.singleElement(); - } - return Maybe.error(new TestException()); + .flatMapMaybe((Function>) v -> { + if (v == 2) { + return ps.singleElement(); } + return Maybe.error(new TestException()); }, true) .test(); @@ -286,12 +219,7 @@ public MaybeSource apply(Integer v) throws Exception { @Test public void disposed() { - TestHelper.checkDisposed(PublishSubject.create().flatMapMaybe(new Function>() { - @Override - public MaybeSource apply(Integer v) throws Exception { - return Maybe.empty(); - } - })); + TestHelper.checkDisposed(PublishSubject.create().flatMapMaybe((Function>) _ -> Maybe.empty())); } @Test @@ -310,12 +238,7 @@ public void innerSuccessCompletesAfterMain() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable f) throws Exception { - return f.flatMapMaybe(Functions.justFunction(Maybe.just(2))); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(f -> f.flatMapMaybe(Functions.justFunction(Maybe.just(2)))); } @Test @@ -379,12 +302,7 @@ public void onNext(Integer t) { }; Observable.just(ps1, ps2) - .flatMapMaybe(new Function, MaybeSource>() { - @Override - public MaybeSource apply(PublishSubject v) throws Exception { - return v.singleElement(); - } - }) + .flatMapMaybe((Function, MaybeSource>) Observable::singleElement) .subscribe(to); ps1.onNext(1); @@ -411,12 +329,7 @@ public void onNext(Integer t) { }; Observable.just(ps1, ps2, ps3) - .flatMapMaybe(new Function, MaybeSource>() { - @Override - public MaybeSource apply(PublishSubject v) throws Exception { - return v.singleElement(); - } - }) + .flatMapMaybe((Function, MaybeSource>) Observable::singleElement) .subscribe(to); ps1.onNext(1); @@ -431,21 +344,16 @@ public MaybeSource apply(PublishSubject v) throws Exception { public void disposeInner() { final TestObserver to = new TestObserver<>(); - Observable.just(1).flatMapMaybe(new Function>() { + Observable.just(1).flatMapMaybe((Function>) _ -> new Maybe() { @Override - public MaybeSource apply(Integer v) throws Exception { - return new Maybe() { - @Override - protected void subscribeActual(MaybeObserver observer) { - observer.onSubscribe(Disposable.empty()); + protected void subscribeActual(MaybeObserver observer) { + observer.onSubscribe(Disposable.empty()); - assertFalse(((Disposable)observer).isDisposed()); + assertFalse(((Disposable)observer).isDisposed()); - to.dispose(); + to.dispose(); - assertTrue(((Disposable)observer).isDisposed()); - } - }; + assertTrue(((Disposable)observer).isDisposed()); } }) .subscribe(to); @@ -456,32 +364,14 @@ protected void subscribeActual(MaybeObserver observer) { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.flatMapMaybe(new Function>() { - @Override - public Maybe apply(Integer v) throws Throwable { - return Maybe.just(v).hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.flatMapMaybe((Function>) v -> Maybe.just(v).hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.flatMapMaybe(new Function>() { - @Override - public Maybe apply(Integer v) throws Throwable { - return Maybe.just(v).hide(); - } - }, true); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.flatMapMaybe((Function>) v -> Maybe.just(v).hide(), true)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapSingleTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapSingleTest.java index 5d908ffd8b..c6252d3d68 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapSingleTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapSingleTest.java @@ -36,12 +36,7 @@ public class ObservableFlatMapSingleTest extends RxJavaTest { @Test public void normal() { Observable.range(1, 10) - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return Single.just(v); - } - }) + .flatMapSingle((Function>) Single::just) .test() .assertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); } @@ -49,12 +44,7 @@ public SingleSource apply(Integer v) throws Exception { @Test public void normalDelayError() { Observable.range(1, 10) - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return Single.just(v); - } - }, true) + .flatMapSingle((Function>) Single::just, true) .test() .assertResult(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); } @@ -62,12 +52,7 @@ public SingleSource apply(Integer v) throws Exception { @Test public void normalAsync() { TestObserverEx to = Observable.range(1, 10) - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return Single.just(v).subscribeOn(Schedulers.computation()); - } - }) + .flatMapSingle((Function>) v -> Single.just(v).subscribeOn(Schedulers.computation())) .to(TestHelper.testConsumer()) .awaitDone(5, TimeUnit.SECONDS) .assertSubscribed() @@ -82,11 +67,8 @@ public void mapperThrowsObservable() { PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - throw new TestException(); - } + .flatMapSingle((Function>) _ -> { + throw new TestException(); }) .test(); @@ -104,12 +86,7 @@ public void mapperReturnsNullObservable() { PublishSubject ps = PublishSubject.create(); TestObserver to = ps - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return null; - } - }) + .flatMapSingle((Function>) _ -> null) .test(); assertTrue(ps.hasObservers()); @@ -124,12 +101,7 @@ public SingleSource apply(Integer v) throws Exception { @Test public void normalDelayErrorAll() { TestObserverEx to = Observable.range(1, 10).concatWith(Observable.error(new TestException())) - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return Single.error(new TestException()); - } - }, true) + .flatMapSingle((Function>) _ -> Single.error(new TestException()), true) .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class); @@ -143,12 +115,7 @@ public SingleSource apply(Integer v) throws Exception { @Test public void takeAsync() { TestObserverEx to = Observable.range(1, 10) - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return Single.just(v).subscribeOn(Schedulers.computation()); - } - }) + .flatMapSingle((Function>) v -> Single.just(v).subscribeOn(Schedulers.computation())) .take(2) .to(TestHelper.testConsumer()) .awaitDone(5, TimeUnit.SECONDS) @@ -163,12 +130,7 @@ public SingleSource apply(Integer v) throws Exception { @Test public void take() { Observable.range(1, 10) - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return Single.just(v); - } - }) + .flatMapSingle((Function>) Single::just) .take(2) .test() .assertResult(1, 2); @@ -176,17 +138,9 @@ public SingleSource apply(Integer v) throws Exception { @Test public void middleError() { - Observable.fromArray(new String[]{"1", "a", "2"}).flatMapSingle(new Function>() { - @Override - public SingleSource apply(final String s) throws NumberFormatException { - //return Single.just(Integer.valueOf(s)); //This works - return Single.fromCallable(new Callable() { - @Override - public Integer call() throws NumberFormatException { - return Integer.valueOf(s); - } - }); - } + Observable.fromArray(new String[]{"1", "a", "2"}).flatMapSingle((Function>) s -> { + //return Single.just(Integer.valueOf(s)); //This works + return Single.fromCallable(() -> Integer.valueOf(s)); }) .test() .assertFailure(NumberFormatException.class, 1); @@ -195,12 +149,7 @@ public Integer call() throws NumberFormatException { @Test public void asyncFlatten() { Observable.range(1, 1000) - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return Single.just(1).subscribeOn(Schedulers.computation()); - } - }) + .flatMapSingle((Function>) _ -> Single.just(1).subscribeOn(Schedulers.computation())) .take(500) .to(TestHelper.testConsumer()) .awaitDone(5, TimeUnit.SECONDS) @@ -215,14 +164,11 @@ public void successError() { final PublishSubject ps = PublishSubject.create(); TestObserver to = Observable.range(1, 2) - .flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - if (v == 2) { - return ps.singleOrError(); - } - return Single.error(new TestException()); + .flatMapSingle((Function>) v -> { + if (v == 2) { + return ps.singleOrError(); } + return Single.error(new TestException()); }, true) .test(); @@ -235,12 +181,7 @@ public SingleSource apply(Integer v) throws Exception { @Test public void disposed() { - TestHelper.checkDisposed(PublishSubject.create().flatMapSingle(new Function>() { - @Override - public SingleSource apply(Integer v) throws Exception { - return Single.just(1); - } - })); + TestHelper.checkDisposed(PublishSubject.create().flatMapSingle((Function>) _ -> Single.just(1))); } @Test @@ -259,12 +200,7 @@ public void innerSuccessCompletesAfterMain() { @Test public void doubleOnSubscribe() { - TestHelper.checkDoubleOnSubscribeObservable(new Function, ObservableSource>() { - @Override - public ObservableSource apply(Observable f) throws Exception { - return f.flatMapSingle(Functions.justFunction(Single.just(2))); - } - }); + TestHelper.checkDoubleOnSubscribeObservable(f -> f.flatMapSingle(Functions.justFunction(Single.just(2)))); } @Test @@ -328,12 +264,7 @@ public void onNext(Integer t) { }; Observable.just(ps1, ps2) - .flatMapSingle(new Function, SingleSource>() { - @Override - public SingleSource apply(PublishSubject v) throws Exception { - return v.singleOrError(); - } - }) + .flatMapSingle((Function, SingleSource>) Observable::singleOrError) .subscribe(to); ps1.onNext(1); @@ -346,21 +277,16 @@ public SingleSource apply(PublishSubject v) throws Exception { public void disposeInner() { final TestObserver to = new TestObserver<>(); - Observable.just(1).flatMapSingle(new Function>() { + Observable.just(1).flatMapSingle((Function>) _ -> new Single() { @Override - public SingleSource apply(Integer v) throws Exception { - return new Single() { - @Override - protected void subscribeActual(SingleObserver observer) { - observer.onSubscribe(Disposable.empty()); + protected void subscribeActual(SingleObserver observer) { + observer.onSubscribe(Disposable.empty()); - assertFalse(((Disposable)observer).isDisposed()); + assertFalse(((Disposable)observer).isDisposed()); - to.dispose(); + to.dispose(); - assertTrue(((Disposable)observer).isDisposed()); - } - }; + assertTrue(((Disposable)observer).isDisposed()); } }) .subscribe(to); @@ -371,32 +297,14 @@ protected void subscribeActual(SingleObserver observer) { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.flatMapSingle(new Function>() { - @Override - public Single apply(Integer v) throws Throwable { - return Single.just(v).hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.flatMapSingle((Function>) v -> Single.just(v).hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.flatMapSingle(new Function>() { - @Override - public Single apply(Integer v) throws Throwable { - return Single.just(v).hide(); - } - }, true); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.flatMapSingle((Function>) v -> Single.just(v).hide(), true)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapTest.java index 909b8b3ec1..21e73dcdeb 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlatMapTest.java @@ -45,19 +45,8 @@ public void normal() { final List list = Arrays.asList(1, 2, 3); - Function> func = new Function>() { - @Override - public List apply(Integer t1) { - return list; - } - }; - BiFunction resFunc = new BiFunction() { - - @Override - public Integer apply(Integer t1, Integer t2) { - return t1 | t2; - } - }; + Function> func = _ -> list; + BiFunction resFunc = (t1, t2) -> t1 | t2; List source = Arrays.asList(16, 32, 64); @@ -76,19 +65,10 @@ public Integer apply(Integer t1, Integer t2) { public void collectionFunctionThrows() { Observer o = TestHelper.mockObserver(); - Function> func = new Function>() { - @Override - public List apply(Integer t1) { - throw new TestException(); - } - }; - BiFunction resFunc = new BiFunction() { - - @Override - public Integer apply(Integer t1, Integer t2) { - return t1 | t2; - } + Function> func = _ -> { + throw new TestException(); }; + BiFunction resFunc = (t1, t2) -> t1 | t2; List source = Arrays.asList(16, 32, 64); @@ -105,18 +85,9 @@ public void resultFunctionThrows() { final List list = Arrays.asList(1, 2, 3); - Function> func = new Function>() { - @Override - public List apply(Integer t1) { - return list; - } - }; - BiFunction resFunc = new BiFunction() { - - @Override - public Integer apply(Integer t1, Integer t2) { - throw new TestException(); - } + Function> func = _ -> list; + BiFunction resFunc = (_, _) -> { + throw new TestException(); }; List source = Arrays.asList(16, 32, 64); @@ -132,19 +103,8 @@ public Integer apply(Integer t1, Integer t2) { public void mergeError() { Observer o = TestHelper.mockObserver(); - Function> func = new Function>() { - @Override - public Observable apply(Integer t1) { - return Observable.error(new TestException()); - } - }; - BiFunction resFunc = new BiFunction() { - - @Override - public Integer apply(Integer t1, Integer t2) { - return t1 | t2; - } - }; + Function> func = _ -> Observable.error(new TestException()); + BiFunction resFunc = (t1, t2) -> t1 | t2; List source = Arrays.asList(16, 32, 64); @@ -156,23 +116,11 @@ public Integer apply(Integer t1, Integer t2) { } Function just(final R value) { - return new Function() { - - @Override - public R apply(T t1) { - return value; - } - }; + return _ -> value; } Supplier just0(final R value) { - return new Supplier() { - - @Override - public R get() { - return value; - } - }; + return () -> value; } @Test @@ -223,20 +171,14 @@ Observable. error(new RuntimeException("Forced failure!")) } Supplier funcThrow0(R r) { - return new Supplier() { - @Override - public R get() { - throw new TestException(); - } + return () -> { + throw new TestException(); }; } Function funcThrow(T t, R r) { - return new Function() { - @Override - public R apply(T t) { - throw new TestException(); - } + return _ -> { + throw new TestException(); }; } @@ -308,22 +250,16 @@ public void flatMapTransformsMergeException() { } private static Observable composer(Observable source, final AtomicInteger subscriptionCount, final int m) { - return source.doOnSubscribe(new Consumer() { - @Override - public void accept(Disposable d) { - int n = subscriptionCount.getAndIncrement(); - if (n >= m) { - Assert.fail("Too many subscriptions! " + (n + 1)); - } - } - }).doOnComplete(new Action() { - @Override - public void run() { - int n = subscriptionCount.decrementAndGet(); - if (n < 0) { - Assert.fail("Too many unsubscriptions! " + (n - 1)); - } - } + return source.doOnSubscribe(_ -> { + int n = subscriptionCount.getAndIncrement(); + if (n >= m) { + Assert.fail("Too many subscriptions! " + (n + 1)); + } + }).doOnComplete(() -> { + int n = subscriptionCount.decrementAndGet(); + if (n < 0) { + Assert.fail("Too many unsubscriptions! " + (n - 1)); + } }); } @@ -332,13 +268,8 @@ public void flatMapMaxConcurrent() { final int m = 4; final AtomicInteger subscriptionCount = new AtomicInteger(); Observable source = Observable.range(1, 10) - .flatMap(new Function>() { - @Override - public Observable apply(Integer t1) { - return composer(Observable.range(t1 * 10, 2), subscriptionCount, m) - .subscribeOn(Schedulers.computation()); - } - }, m); + .flatMap((Function>) t1 -> composer(Observable.range(t1 * 10, 2), subscriptionCount, m) + .subscribeOn(Schedulers.computation()), m); TestObserver to = new TestObserver<>(); @@ -358,18 +289,8 @@ public void flatMapSelectorMaxConcurrent() { final int m = 4; final AtomicInteger subscriptionCount = new AtomicInteger(); Observable source = Observable.range(1, 10) - .flatMap(new Function>() { - @Override - public Observable apply(Integer t1) { - return composer(Observable.range(t1 * 10, 2), subscriptionCount, m) - .subscribeOn(Schedulers.computation()); - } - }, new BiFunction() { - @Override - public Integer apply(Integer t1, Integer t2) { - return t1 * 1000 + t2; - } - }, m); + .flatMap((Function>) t1 -> composer(Observable.range(t1 * 10, 2), subscriptionCount, m) + .subscribeOn(Schedulers.computation()), (t1, t2) -> t1 * 1000 + t2, m); TestObserver to = new TestObserver<>(); @@ -482,12 +403,7 @@ public void flatMapIntPassthruAsync() { for (int i = 0; i < 1000; i++) { TestObserver to = new TestObserver<>(); - Observable.range(1, 1000).flatMap(new Function>() { - @Override - public Observable apply(Integer t) { - return Observable.just(1).subscribeOn(Schedulers.computation()); - } - }).subscribe(to); + Observable.range(1, 1000).flatMap((Function>) _ -> Observable.just(1).subscribeOn(Schedulers.computation())).subscribe(to); to.awaitDone(5, TimeUnit.SECONDS); to.assertNoErrors(); @@ -501,12 +417,7 @@ public void flatMapTwoNestedSync() { for (final int n : new int[] { 1, 1000, 1000000 }) { TestObserver to = new TestObserver<>(); - Observable.just(1, 2).flatMap(new Function>() { - @Override - public Observable apply(Integer t) { - return Observable.range(1, n); - } - }).subscribe(to); + Observable.just(1, 2).flatMap((Function>) _ -> Observable.range(1, n)).subscribe(to); System.out.println("flatMapTwoNestedSync >> @ " + n); to.assertNoErrors(); @@ -518,17 +429,7 @@ public Observable apply(Integer t) { @Test public void flatMapBiMapper() { Observable.just(1) - .flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.just(v * 10); - } - }, new BiFunction() { - @Override - public Integer apply(Integer a, Integer b) throws Exception { - return a + b; - } - }, true) + .flatMap((Function>) v -> Observable.just(v * 10), Integer::sum, true) .test() .assertResult(11); } @@ -536,17 +437,7 @@ public Integer apply(Integer a, Integer b) throws Exception { @Test public void flatMapBiMapperWithError() { Observable.just(1) - .flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.just(v * 10).concatWith(Observable.error(new TestException())); - } - }, new BiFunction() { - @Override - public Integer apply(Integer a, Integer b) throws Exception { - return a + b; - } - }, true) + .flatMap((Function>) v -> Observable.just(v * 10).concatWith(Observable.error(new TestException())), Integer::sum, true) .test() .assertFailure(TestException.class, 11); } @@ -554,29 +445,14 @@ public Integer apply(Integer a, Integer b) throws Exception { @Test public void flatMapBiMapperMaxConcurrency() { Observable.just(1, 2) - .flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.just(v * 10); - } - }, new BiFunction() { - @Override - public Integer apply(Integer a, Integer b) throws Exception { - return a + b; - } - }, true, 1) + .flatMap((Function>) v -> Observable.just(v * 10), Integer::sum, true, 1) .test() .assertResult(11, 22); } @Test public void flatMapEmpty() { - assertSame(Observable.empty(), Observable.empty().flatMap(new Function>() { - @Override - public ObservableSource apply(Object v) throws Exception { - return Observable.just(v); - } - })); + assertSame(Observable.empty(), Observable.empty().flatMap((Function>) Observable::just)); } @Test @@ -602,11 +478,8 @@ public void mergeScalarEmpty() { @Test public void mergeScalarError() { - Observable.merge(Observable.just(Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - throw new TestException(); - } + Observable.merge(Observable.just(Observable.fromCallable(() -> { + throw new TestException(); })).hide()) .test() .assertFailure(TestException.class); @@ -665,19 +538,9 @@ public void innerCompleteCancelRace() { final TestObserver to = Observable.merge(Observable.just(ps)).test(); - Runnable r1 = new Runnable() { - @Override - public void run() { - ps.onComplete(); - } - }; + Runnable r1 = ps::onComplete; - Runnable r2 = new Runnable() { - @Override - public void run() { - to.dispose(); - } - }; + Runnable r2 = to::dispose; TestHelper.race(r1, r2); } @@ -686,17 +549,9 @@ public void run() { @Test public void fusedInnerThrows() { Observable.just(1).hide() - .flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(1, 2).map(new Function() { - @Override - public Object apply(Integer w) throws Exception { - throw new TestException(); - } - }); - } - }) + .flatMap((Function>) _ -> Observable.range(1, 2).map(_ -> { + throw new TestException(); + })) .test() .assertFailure(TestException.class); } @@ -704,17 +559,9 @@ public Object apply(Integer w) throws Exception { @Test public void fusedInnerThrows2() { TestObserverEx to = Observable.range(1, 2).hide() - .flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) throws Exception { - return Observable.range(1, 2).map(new Function() { - @Override - public Integer apply(Integer w) throws Exception { - throw new TestException(); - } - }); - } - }, true) + .flatMap((Function>) _ -> Observable.range(1, 2).map((Function) _ -> { + throw new TestException(); + }), true) .to(TestHelper.testConsumer()) .assertFailure(CompositeException.class); @@ -729,18 +576,8 @@ public Integer apply(Integer w) throws Exception { public void noCrossBoundaryFusion() { for (int i = 0; i < 500; i++) { TestObserver to = Observable.merge( - Observable.just(1).observeOn(Schedulers.single()).map(new Function() { - @Override - public Object apply(Integer v) throws Exception { - return Thread.currentThread().getName().substring(0, 4); - } - }), - Observable.just(1).observeOn(Schedulers.computation()).map(new Function() { - @Override - public Object apply(Integer v) throws Exception { - return Thread.currentThread().getName().substring(0, 4); - } - }) + Observable.just(1).observeOn(Schedulers.single()).map((Function) _ -> Thread.currentThread().getName().substring(0, 4)), + Observable.just(1).observeOn(Schedulers.computation()).map((Function) _ -> Thread.currentThread().getName().substring(0, 4)) ) .test() .awaitDone(5, TimeUnit.SECONDS) @@ -763,18 +600,8 @@ public void cancelScalarDrainRace() { final TestObserver to = ps.flatMap(Functions.>identity()).test(); - Runnable r1 = new Runnable() { - @Override - public void run() { - to.dispose(); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - ps.onComplete(); - } - }; + Runnable r1 = to::dispose; + Runnable r2 = ps::onComplete; TestHelper.race(r1, r2); @@ -801,19 +628,11 @@ public void cancelDrainRace() { ps.onNext(just); ps.onNext(just2); - Runnable r1 = new Runnable() { - @Override - public void run() { - just2.onNext(1); - to.dispose(); - } - }; - Runnable r2 = new Runnable() { - @Override - public void run() { - just.onNext(1); - } + Runnable r1 = () -> { + just2.onNext(1); + to.dispose(); }; + Runnable r2 = () -> just.onNext(1); TestHelper.race(r1, r2); @@ -828,17 +647,7 @@ public void run() { @Test public void iterableMapperFunctionReturnsNull() { Observable.just(1) - .flatMapIterable(new Function>() { - @Override - public Iterable apply(Integer v) throws Exception { - return null; - } - }, new BiFunction() { - @Override - public Object apply(Integer v, Object w) throws Exception { - return v; - } - }) + .flatMapIterable((Function>) _ -> null, (BiFunction) (v, _) -> v) .to(TestHelper.testConsumer()) .assertFailureAndMessage(NullPointerException.class, "The mapper returned a null Iterable"); } @@ -846,17 +655,7 @@ public Object apply(Integer v, Object w) throws Exception { @Test public void combinerMapperFunctionReturnsNull() { Observable.just(1) - .flatMap(new Function>() { - @Override - public Observable apply(Integer v) throws Exception { - return null; - } - }, new BiFunction() { - @Override - public Object apply(Integer v, Object w) throws Exception { - return v; - } - }) + .flatMap((Function>) _ -> null, (BiFunction) (v, _) -> v) .to(TestHelper.testConsumer()) .assertFailureAndMessage(NullPointerException.class, "The mapper returned a null ObservableSource"); } @@ -865,39 +664,23 @@ public Object apply(Integer v, Object w) throws Exception { public void failingFusedInnerCancelsSource() { final AtomicInteger counter = new AtomicInteger(); Observable.range(1, 5) - .doOnNext(new Consumer() { + .doOnNext(_ -> counter.getAndIncrement()) + .flatMap((Function>) _ -> Observable.fromIterable(() -> new Iterator() { @Override - public void accept(Integer v) throws Exception { - counter.getAndIncrement(); + public boolean hasNext() { + return true; } - }) - .flatMap(new Function>() { + @Override - public Observable apply(Integer v) - throws Exception { - return Observable.fromIterable(new Iterable() { - @Override - public Iterator iterator() { - return new Iterator() { - @Override - public boolean hasNext() { - return true; - } - - @Override - public Integer next() { - throw new TestException(); - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - }); + public Integer next() { + throw new TestException(); } - }) + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } + })) .test() .assertFailure(TestException.class); @@ -910,13 +693,7 @@ public void scalarQueueNoOverflow() { try { final PublishSubject ps = PublishSubject.create(); - TestObserver to = ps.flatMap(new Function>() { - @Override - public Observable apply(Integer v) - throws Exception { - return Observable.just(v + 1); - } - }, 1) + TestObserver to = ps.flatMap((Function>) v -> Observable.just(v + 1), 1) .subscribeWith(new TestObserver() { @Override public void onNext(Integer t) { @@ -946,13 +723,7 @@ public void onNext(Integer t) { public void scalarQueueNoOverflowHidden() { final PublishSubject ps = PublishSubject.create(); - TestObserver to = ps.flatMap(new Function>() { - @Override - public Observable apply(Integer v) - throws Exception { - return Observable.just(v + 1).hide(); - } - }, 1) + TestObserver to = ps.flatMap((Function>) v -> Observable.just(v + 1).hide(), 1) .subscribeWith(new TestObserver() { @Override public void onNext(Integer t) { @@ -978,23 +749,15 @@ public void fusedSourceCrashResumeWithNextSource() { @SuppressWarnings("resource") ObservableFlatMap.MergeObserver merger = - new ObservableFlatMap.MergeObserver<>(to, new Function>() { - @Override - public Observable apply(Integer t) - throws Exception { - if (t == 0) { - return fusedSource - .map(new Function() { - @Override - public Integer apply(Integer v) - throws Exception { - throw new TestException(); - } - }) - .compose(TestHelper.observableStripBoundary()); - } - return Observable.range(10 * t, 5); + new ObservableFlatMap.MergeObserver<>(to, (Function>) t -> { + if (t == 0) { + return fusedSource + .map((Function) _ -> { + throw new TestException(); + }) + .compose(TestHelper.observableStripBoundary()); } + return Observable.range(10 * t, 5); }, true, Integer.MAX_VALUE, 128); merger.onSubscribe(Disposable.empty()); @@ -1021,21 +784,13 @@ public void maxConcurrencySustained() { PublishSubject ps4 = PublishSubject.create(); TestObserver to = Observable.just(ps1, ps2, ps3, ps4) - .flatMap(new Function, ObservableSource>() { - @Override - public ObservableSource apply(PublishSubject v) throws Exception { - return v; - } - }, 2) - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - if (v == 1) { - // this will make sure the drain loop detects two completed - // inner sources and replaces them with fresh ones - ps1.onComplete(); - ps2.onComplete(); - } + .flatMap((Function, ObservableSource>) v -> v, 2) + .doOnNext(v -> { + if (v == 1) { + // this will make sure the drain loop detects two completed + // inner sources and replaces them with fresh ones + ps1.onComplete(); + ps2.onComplete(); } }) .test(); @@ -1055,32 +810,14 @@ public void accept(Integer v) throws Exception { @Test public void undeliverableUponCancel() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.flatMap(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.flatMap((Function>) v -> Observable.just(v).hide())); } @Test public void undeliverableUponCancelDelayError() { - TestHelper.checkUndeliverableUponCancel(new ObservableConverter>() { - @Override - public Observable apply(Observable upstream) { - return upstream.flatMap(new Function>() { - @Override - public Observable apply(Integer v) throws Throwable { - return Observable.just(v).hide(); - } - }, true); - } - }); + TestHelper.checkUndeliverableUponCancel((ObservableConverter>) upstream -> + upstream.flatMap((Function>) v -> Observable.just(v).hide(), true)); } @Test diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlattenIterableTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlattenIterableTest.java index 52cf7952fd..fe08f0fa52 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlattenIterableTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFlattenIterableTest.java @@ -31,64 +31,33 @@ public class ObservableFlattenIterableTest extends RxJavaTest { @Test public void dispose() { - TestHelper.checkDisposed(PublishSubject.create().flatMapIterable(new Function>() { - @Override - public Iterable apply(Object v) throws Exception { - return Arrays.asList(10, 20); - } - })); + TestHelper.checkDisposed(PublishSubject.create().flatMapIterable((Function>) _ -> Arrays.asList(10, 20))); } @Test public void badSource() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable o) throws Exception { - return o.flatMapIterable(new Function>() { - @Override - public Iterable apply(Object v) throws Exception { - return Arrays.asList(10, 20); - } - }); - } - }, false, 1, 1, 10, 20); + TestHelper.checkBadSourceObservable(o -> o.flatMapIterable((Function>) _ -> Arrays.asList(10, 20)), false, 1, 1, 10, 20); } @Test public void failingInnerCancelsSource() { final AtomicInteger counter = new AtomicInteger(); Observable.range(1, 5) - .doOnNext(new Consumer() { + .doOnNext(_ -> counter.getAndIncrement()) + .flatMapIterable((Function>) _ -> (Iterable) () -> new Iterator() { @Override - public void accept(Integer v) throws Exception { - counter.getAndIncrement(); + public boolean hasNext() { + return true; } - }) - .flatMapIterable(new Function>() { - @Override - public Iterable apply(Integer v) - throws Exception { - return new Iterable() { - @Override - public Iterator iterator() { - return new Iterator() { - @Override - public boolean hasNext() { - return true; - } - @Override - public Integer next() { - throw new TestException(); - } + @Override + public Integer next() { + throw new TestException(); + } - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - }; - } - }; + @Override + public void remove() { + throw new UnsupportedOperationException(); } }) .test() diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableForEachTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableForEachTest.java index 30a30ad2bf..52cdda76a6 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableForEachTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableForEachTest.java @@ -23,7 +23,6 @@ import io.reactivex.rxjava4.core.RxJavaTest; import io.reactivex.rxjava4.disposables.Disposable; import io.reactivex.rxjava4.exceptions.*; -import io.reactivex.rxjava4.functions.*; import io.reactivex.rxjava4.internal.functions.Functions; import io.reactivex.rxjava4.plugins.RxJavaPlugins; import io.reactivex.rxjava4.subjects.PublishSubject; @@ -36,18 +35,8 @@ public void forEachWile() { final List list = new ArrayList<>(); Observable.range(1, 5) - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - list.add(v); - } - }) - .forEachWhile(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - return v < 3; - } - }); + .doOnNext(list::add) + .forEachWhile(v -> v < 3); assertEquals(Arrays.asList(1, 2, 3), list); } @@ -57,35 +46,15 @@ public void forEachWileWithError() { final List list = new ArrayList<>(); Observable.range(1, 5).concatWith(Observable.error(new TestException())) - .doOnNext(new Consumer() { - @Override - public void accept(Integer v) throws Exception { - list.add(v); - } - }) - .forEachWhile(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - return true; - } - }, new Consumer() { - @Override - public void accept(Throwable e) throws Exception { - list.add(100); - } - }); + .doOnNext(list::add) + .forEachWhile(_ -> true, _ -> list.add(100)); assertEquals(Arrays.asList(1, 2, 3, 4, 5, 100), list); } @Test public void badSource() { - TestHelper.checkBadSourceObservable(new Function, Object>() { - @Override - public Object apply(Observable f) throws Exception { - return f.forEachWhile(Functions.alwaysTrue()); - } - }, false, 1, 1, (Object[])null); + TestHelper.checkBadSourceObservable(f -> f.forEachWhile(Functions.alwaysTrue()), false, 1, 1, (Object[])null); } @Test @@ -105,11 +74,8 @@ public void dispose() { public void whilePredicateThrows() { List errors = TestHelper.trackPluginErrors(); try { - Observable.just(1).forEachWhile(new Predicate() { - @Override - public boolean test(Integer v) throws Exception { - throw new TestException(); - } + Observable.just(1).forEachWhile(_ -> { + throw new TestException(); }); TestHelper.assertError(errors, 0, OnErrorNotImplementedException.class); @@ -125,11 +91,8 @@ public void whileErrorThrows() { List errors = TestHelper.trackPluginErrors(); try { Observable.error(new TestException("Outer")) - .forEachWhile(Functions.alwaysTrue(), new Consumer() { - @Override - public void accept(Throwable v) throws Exception { - throw new TestException("Inner"); - } + .forEachWhile(Functions.alwaysTrue(), _ -> { + throw new TestException("Inner"); }); TestHelper.assertError(errors, 0, CompositeException.class); @@ -148,11 +111,8 @@ public void whileCompleteThrows() { List errors = TestHelper.trackPluginErrors(); try { Observable.just(1).forEachWhile(Functions.alwaysTrue(), Functions.emptyConsumer(), - new Action() { - @Override - public void run() throws Exception { - throw new TestException(); - } + () -> { + throw new TestException(); }); TestHelper.assertUndeliverable(errors, 0, TestException.class); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromActionTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromActionTest.java index 12bdbd3ffd..b71c8da16e 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromActionTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromActionTest.java @@ -35,12 +35,7 @@ public class ObservableFromActionTest extends RxJavaTest { public void fromAction() { final AtomicInteger atomicInteger = new AtomicInteger(); - Observable.fromAction(new Action() { - @Override - public void run() throws Exception { - atomicInteger.incrementAndGet(); - } - }) + Observable.fromAction(atomicInteger::incrementAndGet) .test() .assertResult(); @@ -51,12 +46,7 @@ public void run() throws Exception { public void fromActionTwice() { final AtomicInteger atomicInteger = new AtomicInteger(); - Action run = new Action() { - @Override - public void run() throws Exception { - atomicInteger.incrementAndGet(); - } - }; + Action run = atomicInteger::incrementAndGet; Observable.fromAction(run) .test() @@ -75,12 +65,7 @@ public void run() throws Exception { public void fromActionInvokesLazy() { final AtomicInteger atomicInteger = new AtomicInteger(); - Observable source = Observable.fromAction(new Action() { - @Override - public void run() throws Exception { - atomicInteger.incrementAndGet(); - } - }); + Observable source = Observable.fromAction(atomicInteger::incrementAndGet); assertEquals(0, atomicInteger.get()); @@ -93,11 +78,8 @@ public void run() throws Exception { @Test public void fromActionThrows() { - Observable.fromAction(new Action() { - @Override - public void run() throws Exception { - throw new UnsupportedOperationException(); - } + Observable.fromAction(() -> { + throw new UnsupportedOperationException(); }) .test() .assertFailure(UnsupportedOperationException.class); @@ -108,12 +90,7 @@ public void run() throws Exception { public void callable() throws Throwable { final int[] counter = { 0 }; - Observable m = Observable.fromAction(new Action() { - @Override - public void run() throws Exception { - counter[0]++; - } - }); + Observable m = Observable.fromAction(() -> counter[0]++); assertTrue(m.getClass().toString(), m instanceof Supplier); @@ -129,12 +106,9 @@ public void noErrorLoss() throws Exception { final CountDownLatch cdl1 = new CountDownLatch(1); final CountDownLatch cdl2 = new CountDownLatch(1); - TestObserver to = Observable.fromAction(new Action() { - @Override - public void run() throws Exception { - cdl1.countDown(); - cdl2.await(5, TimeUnit.SECONDS); - } + TestObserver to = Observable.fromAction(() -> { + cdl1.countDown(); + cdl2.await(5, TimeUnit.SECONDS); }).subscribeOn(Schedulers.single()).test(); assertTrue(cdl1.await(5, TimeUnit.SECONDS)); @@ -168,12 +142,7 @@ public void disposedUpfront() throws Throwable { public void cancelWhileRunning() { final TestObserver to = new TestObserver<>(); - Observable.fromAction(new Action() { - @Override - public void run() throws Exception { - to.dispose(); - } - }) + Observable.fromAction(to::dispose) .subscribeWith(to) .assertEmpty(); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromCallableTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromCallableTest.java index fb41f5928e..b091e97ffb 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromCallableTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromCallableTest.java @@ -21,13 +21,11 @@ import java.util.concurrent.*; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.disposables.Disposable; import io.reactivex.rxjava4.exceptions.TestException; -import io.reactivex.rxjava4.functions.Function; import io.reactivex.rxjava4.observers.TestObserver; import io.reactivex.rxjava4.plugins.RxJavaPlugins; import io.reactivex.rxjava4.schedulers.Schedulers; @@ -96,22 +94,19 @@ public void shouldNotDeliverResultIfSubscriberUnsubscribedBeforeEmission() throw final CountDownLatch funcLatch = new CountDownLatch(1); final CountDownLatch observerLatch = new CountDownLatch(1); - when(func.call()).thenAnswer(new Answer() { - @Override - public String answer(InvocationOnMock invocation) throws Throwable { - observerLatch.countDown(); + when(func.call()).thenAnswer((Answer) _ -> { + observerLatch.countDown(); - try { - funcLatch.await(); - } catch (InterruptedException e) { - // It's okay, unsubscription causes Thread interruption + try { + funcLatch.await(); + } catch (InterruptedException e) { + // It's okay, unsubscription causes Thread interruption - // Restoring interruption status of the Thread - Thread.currentThread().interrupt(); - } - - return "should_not_be_delivered"; + // Restoring interruption status of the Thread + Thread.currentThread().interrupt(); } + + return "should_not_be_delivered"; }); Observable fromCallableObservable = Observable.fromCallable(func); @@ -145,11 +140,8 @@ public String answer(InvocationOnMock invocation) throws Throwable { public void shouldAllowToThrowCheckedException() { final Exception checkedException = new Exception("test exception"); - Observable fromCallableObservable = Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - throw checkedException; - } + Observable fromCallableObservable = Observable.fromCallable(() -> { + throw checkedException; }); Observer observer = TestHelper.mockObserver(); @@ -165,18 +157,7 @@ public Object call() throws Exception { public void fusedFlatMapExecution() { final int[] calls = { 0 }; - Observable.just(1).flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - return ++calls[0]; - } - }); - } - }) + Observable.just(1).flatMap(_ -> Observable.fromCallable((Callable) () -> ++calls[0])) .test() .assertResult(1); @@ -187,18 +168,7 @@ public Object call() throws Exception { public void fusedFlatMapExecutionHidden() { final int[] calls = { 0 }; - Observable.just(1).hide().flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - return ++calls[0]; - } - }); - } - }) + Observable.just(1).hide().flatMap(_ -> Observable.fromCallable((Callable) () -> ++calls[0])) .test() .assertResult(1); @@ -207,36 +177,14 @@ public Object call() throws Exception { @Test public void fusedFlatMapNull() { - Observable.just(1).flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - return null; - } - }); - } - }) + Observable.just(1).flatMap(_ -> Observable.fromCallable(() -> null)) .test() .assertFailure(NullPointerException.class); } @Test public void fusedFlatMapNullHidden() { - Observable.just(1).hide().flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - return null; - } - }); - } - }) + Observable.just(1).hide().flatMap(_ -> Observable.fromCallable(() -> null)) .test() .assertFailure(NullPointerException.class); } @@ -244,12 +192,9 @@ public Object call() throws Exception { @Test public void disposedOnArrival() { final int[] count = { 0 }; - Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - count[0]++; - return 1; - } + Observable.fromCallable((Callable) () -> { + count[0]++; + return 1; }) .test(true) .assertEmpty(); @@ -261,12 +206,9 @@ public Object call() throws Exception { public void disposedOnCall() { final TestObserver to = new TestObserver<>(); - Observable.fromCallable(new Callable() { - @Override - public Integer call() throws Exception { - to.dispose(); - return 1; - } + Observable.fromCallable(() -> { + to.dispose(); + return 1; }) .subscribe(to); @@ -279,12 +221,9 @@ public void disposedOnCallThrows() { try { final TestObserver to = new TestObserver<>(); - Observable.fromCallable(new Callable() { - @Override - public Integer call() throws Exception { - to.dispose(); - throw new TestException(); - } + Observable.fromCallable((Callable) () -> { + to.dispose(); + throw new TestException(); }) .subscribe(to); @@ -298,12 +237,7 @@ public Integer call() throws Exception { @Test public void take() { - Observable.fromCallable(new Callable() { - @Override - public Object call() throws Exception { - return 1; - } - }) + Observable.fromCallable((Callable) () -> 1) .take(1) .test() .assertResult(1); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromCompletableTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromCompletableTest.java index 8e78e8bee6..b535912853 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromCompletableTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromCompletableTest.java @@ -36,12 +36,7 @@ public class ObservableFromCompletableTest extends RxJavaTest { public void fromCompletable() { final AtomicInteger atomicInteger = new AtomicInteger(); - Observable.fromCompletable(Completable.fromAction(new Action() { - @Override - public void run() throws Exception { - atomicInteger.incrementAndGet(); - } - })) + Observable.fromCompletable(Completable.fromAction(atomicInteger::incrementAndGet)) .test() .assertResult(); @@ -52,12 +47,7 @@ public void run() throws Exception { public void fromCompletableTwice() { final AtomicInteger atomicInteger = new AtomicInteger(); - Action run = new Action() { - @Override - public void run() throws Exception { - atomicInteger.incrementAndGet(); - } - }; + Action run = atomicInteger::incrementAndGet; Observable.fromCompletable(Completable.fromAction(run)) .test() @@ -76,12 +66,7 @@ public void run() throws Exception { public void fromCompletableInvokesLazy() { final AtomicInteger atomicInteger = new AtomicInteger(); - Observable source = Observable.fromCompletable(Completable.fromAction(new Action() { - @Override - public void run() throws Exception { - atomicInteger.incrementAndGet(); - } - })); + Observable source = Observable.fromCompletable(Completable.fromAction(atomicInteger::incrementAndGet)); assertEquals(0, atomicInteger.get()); @@ -94,11 +79,8 @@ public void run() throws Exception { @Test public void fromCompletableThrows() { - Observable.fromCompletable(Completable.fromAction(new Action() { - @Override - public void run() throws Exception { - throw new UnsupportedOperationException(); - } + Observable.fromCompletable(Completable.fromAction(() -> { + throw new UnsupportedOperationException(); })) .test() .assertFailure(UnsupportedOperationException.class); @@ -111,12 +93,9 @@ public void noErrorLoss() throws Exception { final CountDownLatch cdl1 = new CountDownLatch(1); final CountDownLatch cdl2 = new CountDownLatch(1); - TestObserver to = Observable.fromCompletable(Completable.fromAction(new Action() { - @Override - public void run() throws Exception { - cdl1.countDown(); - cdl2.await(5, TimeUnit.SECONDS); - } + TestObserver to = Observable.fromCompletable(Completable.fromAction(() -> { + cdl1.countDown(); + cdl2.await(5, TimeUnit.SECONDS); })).subscribeOn(Schedulers.single()).test(); assertTrue(cdl1.await(5, TimeUnit.SECONDS)); @@ -150,12 +129,7 @@ public void disposedUpfront() throws Throwable { public void cancelWhileRunning() { final TestObserver to = new TestObserver<>(); - Observable.fromCompletable(Completable.fromAction(new Action() { - @Override - public void run() throws Exception { - to.dispose(); - } - })) + Observable.fromCompletable(Completable.fromAction(to::dispose)) .subscribeWith(to) .assertEmpty(); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromIterableTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromIterableTest.java index f64a680f61..f753b57a4e 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromIterableTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromIterableTest.java @@ -57,29 +57,22 @@ public void listIterable() { */ @Test public void rawIterable() { - Iterable it = new Iterable() { + Iterable it = () -> new Iterator() { - @Override - public Iterator iterator() { - return new Iterator() { - - int i; + int i; - @Override - public boolean hasNext() { - return i < 3; - } - - @Override - public String next() { - return String.valueOf(++i); - } + @Override + public boolean hasNext() { + return i < 3; + } - @Override - public void remove() { - } + @Override + public String next() { + return String.valueOf(++i); + } - }; + @Override + public void remove() { } }; @@ -141,35 +134,29 @@ public void subscribeMultipleTimes() { @Test public void doesNotCallIteratorHasNextMoreThanRequiredWithBackpressure() { final AtomicBoolean called = new AtomicBoolean(false); - Iterable iterable = new Iterable() { + Iterable iterable = () -> new Iterator() { + + int count = 1; + + @Override + public void remove() { + // ignore + } @Override - public Iterator iterator() { - return new Iterator() { - - int count = 1; - - @Override - public void remove() { - // ignore - } - - @Override - public boolean hasNext() { - if (count > 1) { - called.set(true); - return false; - } - return true; - } - - @Override - public Integer next() { - return count++; - } - - }; + public boolean hasNext() { + if (count > 1) { + called.set(true); + return false; + } + return true; } + + @Override + public Integer next() { + return count++; + } + }; Observable.fromIterable(iterable).take(1).subscribe(); assertFalse(called.get()); @@ -178,35 +165,29 @@ public Integer next() { @Test public void doesNotCallIteratorHasNextMoreThanRequiredFastPath() { final AtomicBoolean called = new AtomicBoolean(false); - Iterable iterable = new Iterable() { + Iterable iterable = () -> new Iterator() { + + @Override + public void remove() { + // ignore + } + + int count = 1; @Override - public Iterator iterator() { - return new Iterator() { - - @Override - public void remove() { - // ignore - } - - int count = 1; - - @Override - public boolean hasNext() { - if (count > 1) { - called.set(true); - return false; - } - return true; - } - - @Override - public Integer next() { - return count++; - } - - }; + public boolean hasNext() { + if (count > 1) { + called.set(true); + return false; + } + return true; } + + @Override + public Integer next() { + return count++; + } + }; Observable.fromIterable(iterable).subscribe(new DefaultObserver() { @@ -234,12 +215,7 @@ public void fusionWithConcatMap() { TestObserver to = new TestObserver<>(); Observable.fromIterable(Arrays.asList(1, 2, 3, 4)).concatMap( - new Function>() { - @Override - public ObservableSource apply(Integer v) { - return Observable.range(v, 2); - } - }).subscribe(to); + (Function>) v -> Observable.range(v, 2)).subscribe(to); to.assertValues(1, 2, 2, 3, 3, 4, 4, 5); to.assertNoErrors(); @@ -264,30 +240,25 @@ public void hasNext2Throws() { public void hasNextCancels() { final TestObserver to = new TestObserver<>(); - Observable.fromIterable(new Iterable() { + Observable.fromIterable(() -> new Iterator() { + int count; + + @Override + public boolean hasNext() { + if (++count == 2) { + to.dispose(); + } + return true; + } + + @Override + public Integer next() { + return 1; + } + @Override - public Iterator iterator() { - return new Iterator() { - int count; - - @Override - public boolean hasNext() { - if (++count == 2) { - to.dispose(); - } - return true; - } - - @Override - public Integer next() { - return 1; - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - }; + public void remove() { + throw new UnsupportedOperationException(); } }) .subscribe(to); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromRunnableTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromRunnableTest.java index 73ac0441f4..e7b7a62852 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromRunnableTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromRunnableTest.java @@ -36,12 +36,7 @@ public class ObservableFromRunnableTest extends RxJavaTest { public void fromRunnable() { final AtomicInteger atomicInteger = new AtomicInteger(); - Observable.fromRunnable(new Runnable() { - @Override - public void run() { - atomicInteger.incrementAndGet(); - } - }) + Observable.fromRunnable(atomicInteger::incrementAndGet) .test() .assertResult(); @@ -52,12 +47,7 @@ public void run() { public void fromRunnableTwice() { final AtomicInteger atomicInteger = new AtomicInteger(); - Runnable run = new Runnable() { - @Override - public void run() { - atomicInteger.incrementAndGet(); - } - }; + Runnable run = atomicInteger::incrementAndGet; Observable.fromRunnable(run) .test() @@ -76,12 +66,7 @@ public void run() { public void fromRunnableInvokesLazy() { final AtomicInteger atomicInteger = new AtomicInteger(); - Observable source = Observable.fromRunnable(new Runnable() { - @Override - public void run() { - atomicInteger.incrementAndGet(); - } - }); + Observable source = Observable.fromRunnable(atomicInteger::incrementAndGet); assertEquals(0, atomicInteger.get()); @@ -94,11 +79,8 @@ public void run() { @Test public void fromRunnableThrows() { - Observable.fromRunnable(new Runnable() { - @Override - public void run() { - throw new UnsupportedOperationException(); - } + Observable.fromRunnable(() -> { + throw new UnsupportedOperationException(); }) .test() .assertFailure(UnsupportedOperationException.class); @@ -109,12 +91,7 @@ public void run() { public void callable() throws Throwable { final int[] counter = { 0 }; - Observable m = Observable.fromRunnable(new Runnable() { - @Override - public void run() { - counter[0]++; - } - }); + Observable m = Observable.fromRunnable(() -> counter[0]++); assertTrue(m.getClass().toString(), m instanceof Supplier); @@ -130,16 +107,13 @@ public void noErrorLoss() throws Exception { final CountDownLatch cdl1 = new CountDownLatch(1); final CountDownLatch cdl2 = new CountDownLatch(1); - TestObserver to = Observable.fromRunnable(new Runnable() { - @Override - public void run() { - cdl1.countDown(); - try { - cdl2.await(5, TimeUnit.SECONDS); - } catch (InterruptedException e) { - e.printStackTrace(); - throw new TestException(e); - } + TestObserver to = Observable.fromRunnable(() -> { + cdl1.countDown(); + try { + cdl2.await(5, TimeUnit.SECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + throw new TestException(e); } }).subscribeOn(Schedulers.single()).test(); @@ -174,12 +148,7 @@ public void disposedUpfront() throws Throwable { public void cancelWhileRunning() { final TestObserver to = new TestObserver<>(); - Observable.fromRunnable(new Runnable() { - @Override - public void run() { - to.dispose(); - } - }) + Observable.fromRunnable(to::dispose) .subscribeWith(to) .assertEmpty(); diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromSupplierTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromSupplierTest.java index 4128d7a6ad..a9dd52b082 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromSupplierTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableFromSupplierTest.java @@ -21,7 +21,6 @@ import java.util.concurrent.CountDownLatch; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import io.reactivex.rxjava4.core.*; @@ -96,22 +95,19 @@ public void shouldNotDeliverResultIfSubscriberUnsubscribedBeforeEmission() throw final CountDownLatch funcLatch = new CountDownLatch(1); final CountDownLatch observerLatch = new CountDownLatch(1); - when(func.get()).thenAnswer(new Answer() { - @Override - public String answer(InvocationOnMock invocation) throws Throwable { - observerLatch.countDown(); + when(func.get()).thenAnswer((Answer) _ -> { + observerLatch.countDown(); - try { - funcLatch.await(); - } catch (InterruptedException e) { - // It's okay, unsubscription causes Thread interruption + try { + funcLatch.await(); + } catch (InterruptedException e) { + // It's okay, unsubscription causes Thread interruption - // Restoring interruption status of the Thread - Thread.currentThread().interrupt(); - } - - return "should_not_be_delivered"; + // Restoring interruption status of the Thread + Thread.currentThread().interrupt(); } + + return "should_not_be_delivered"; }); Observable fromSupplierObservable = Observable.fromSupplier(func); @@ -145,11 +141,8 @@ public String answer(InvocationOnMock invocation) throws Throwable { public void shouldAllowToThrowCheckedException() { final Exception checkedException = new Exception("test exception"); - Observable fromSupplierObservable = Observable.fromSupplier(new Supplier() { - @Override - public Object get() throws Exception { - throw checkedException; - } + Observable fromSupplierObservable = Observable.fromSupplier(() -> { + throw checkedException; }); Observer observer = TestHelper.mockObserver(); @@ -165,18 +158,7 @@ public Object get() throws Exception { public void fusedFlatMapExecution() { final int[] calls = { 0 }; - Observable.just(1).flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.fromSupplier(new Supplier() { - @Override - public Object get() throws Exception { - return ++calls[0]; - } - }); - } - }) + Observable.just(1).flatMap(_ -> Observable.fromSupplier((Supplier) () -> ++calls[0])) .test() .assertResult(1); @@ -187,18 +169,7 @@ public Object get() throws Exception { public void fusedFlatMapExecutionHidden() { final int[] calls = { 0 }; - Observable.just(1).hide().flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.fromSupplier(new Supplier() { - @Override - public Object get() throws Exception { - return ++calls[0]; - } - }); - } - }) + Observable.just(1).hide().flatMap(_ -> Observable.fromSupplier((Supplier) () -> ++calls[0])) .test() .assertResult(1); @@ -207,36 +178,14 @@ public Object get() throws Exception { @Test public void fusedFlatMapNull() { - Observable.just(1).flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.fromSupplier(new Supplier() { - @Override - public Object get() throws Exception { - return null; - } - }); - } - }) + Observable.just(1).flatMap(_ -> Observable.fromSupplier(() -> null)) .test() .assertFailure(NullPointerException.class); } @Test public void fusedFlatMapNullHidden() { - Observable.just(1).hide().flatMap(new Function>() { - @Override - public ObservableSource apply(Integer v) - throws Exception { - return Observable.fromSupplier(new Supplier() { - @Override - public Object get() throws Exception { - return null; - } - }); - } - }) + Observable.just(1).hide().flatMap(_ -> Observable.fromSupplier(() -> null)) .test() .assertFailure(NullPointerException.class); } @@ -244,12 +193,9 @@ public Object get() throws Exception { @Test public void disposedOnArrival() { final int[] count = { 0 }; - Observable.fromSupplier(new Supplier() { - @Override - public Object get() throws Exception { - count[0]++; - return 1; - } + Observable.fromSupplier((Supplier) () -> { + count[0]++; + return 1; }) .test(true) .assertEmpty(); @@ -261,12 +207,9 @@ public Object get() throws Exception { public void disposedOnCall() { final TestObserver to = new TestObserver<>(); - Observable.fromSupplier(new Supplier() { - @Override - public Integer get() throws Exception { - to.dispose(); - return 1; - } + Observable.fromSupplier(() -> { + to.dispose(); + return 1; }) .subscribe(to); @@ -279,12 +222,9 @@ public void disposedOnCallThrows() { try { final TestObserver to = new TestObserver<>(); - Observable.fromSupplier(new Supplier() { - @Override - public Integer get() throws Exception { - to.dispose(); - throw new TestException(); - } + Observable.fromSupplier((Supplier) () -> { + to.dispose(); + throw new TestException(); }) .subscribe(to); @@ -298,12 +238,7 @@ public Integer get() throws Exception { @Test public void take() { - Observable.fromSupplier(new Supplier() { - @Override - public Object get() throws Exception { - return 1; - } - }) + Observable.fromSupplier((Supplier) () -> 1) .take(1) .test() .assertResult(1); diff --git a/src/test/java/io/reactivex/rxjava4/observable/ObservableCombineLatestTests.java b/src/test/java/io/reactivex/rxjava4/observable/ObservableCombineLatestTests.java index cce6905f72..e3722c1d60 100644 --- a/src/test/java/io/reactivex/rxjava4/observable/ObservableCombineLatestTests.java +++ b/src/test/java/io/reactivex/rxjava4/observable/ObservableCombineLatestTests.java @@ -37,24 +37,9 @@ public void covarianceOfCombineLatest() { Observable. combineLatest(horrors, ratings, combine); } - BiFunction combine = new BiFunction() { - @Override - public ExtendedResult apply(Media m, Rating r) { - return new ExtendedResult(); - } - }; - - Consumer action = new Consumer() { - @Override - public void accept(Result t1) { - System.out.println("Result: " + t1); - } - }; - - Consumer extendedAction = new Consumer() { - @Override - public void accept(ExtendedResult t1) { - System.out.println("Result: " + t1); - } - }; + BiFunction combine = (_, _) -> new ExtendedResult(); + + Consumer action = t1 -> System.out.println("Result: " + t1); + + Consumer extendedAction = t1 -> System.out.println("Result: " + t1); } diff --git a/src/test/java/io/reactivex/rxjava4/observable/ObservableCovarianceTest.java b/src/test/java/io/reactivex/rxjava4/observable/ObservableCovarianceTest.java index 61a4ad1365..ef6627c5a0 100644 --- a/src/test/java/io/reactivex/rxjava4/observable/ObservableCovarianceTest.java +++ b/src/test/java/io/reactivex/rxjava4/observable/ObservableCovarianceTest.java @@ -44,12 +44,7 @@ public void covarianceOfFrom() { @Test public void sortedList() { - Comparator sortFunction = new Comparator() { - @Override - public int compare(Media t1, Media t2) { - return 1; - } - }; + Comparator sortFunction = (_, _) -> 1; // this one would work without the covariance generics Observable o = Observable.just(new Movie(), new TVSeason(), new Album()); @@ -65,43 +60,13 @@ public void groupByCompose() { Observable movies = Observable.just(new HorrorMovie(), new ActionMovie(), new Movie()); TestObserverEx to = new TestObserverEx<>(); movies - .groupBy(new Function() { - @Override - public Object apply(Movie v) { - return v.getClass(); - } - }) - .doOnNext(new Consumer>() { - @Override - public void accept(GroupedObservable g) { - System.out.println(g.getKey()); - } - }) - .flatMap(new Function, Observable>() { - @Override - public Observable apply(GroupedObservable g) { - return g - .doOnNext(new Consumer() { - @Override - public void accept(Movie pv) { - System.out.println(pv); - } - }) - .compose(new ObservableTransformer() { - @Override - public Observable apply(Observable m) { - return m.concatWith(Observable.just(new ActionMovie())); - } - } - ) - .map(new Function() { - @Override - public String apply(Movie v) { - return v.toString(); - } - }); - } - }) + .groupBy((Function) Movie::getClass) + .doOnNext(g -> System.out.println(g.getKey())) + .flatMap((Function, Observable>) g -> g + .doOnNext(System.out::println) + .compose(m -> m.concatWith(Observable.just(new ActionMovie())) + ) + .map(Object::toString)) .subscribe(to); to.assertTerminated(); to.assertNoErrors(); @@ -113,41 +78,21 @@ public String apply(Movie v) { @Test public void covarianceOfCompose() { Observable movie = Observable.just(new HorrorMovie()); - Observable movie2 = movie.compose(new ObservableTransformer() { - @Override - public Observable apply(Observable t) { - return Observable.just(new Movie()); - } - }); + Observable movie2 = movie.compose(t -> Observable.just(new Movie())); } @SuppressWarnings("unused") @Test public void covarianceOfCompose2() { Observable movie = Observable. just(new HorrorMovie()); - Observable movie2 = movie.compose(new ObservableTransformer() { - @Override - public Observable apply(Observable t) { - return Observable.just(new HorrorMovie()); - } - }); + Observable movie2 = movie.compose(t -> Observable.just(new HorrorMovie())); } @SuppressWarnings("unused") @Test public void covarianceOfCompose3() { Observable movie = Observable.just(new HorrorMovie()); - Observable movie2 = movie.compose(new ObservableTransformer() { - @Override - public Observable apply(Observable t) { - return Observable.just(new HorrorMovie()).map(new Function() { - @Override - public HorrorMovie apply(HorrorMovie v) { - return v; - } - }); - } - } + Observable movie2 = movie.compose(t -> Observable.just(new HorrorMovie()).map(v -> v) ); } @@ -155,17 +100,7 @@ public HorrorMovie apply(HorrorMovie v) { @Test public void covarianceOfCompose4() { Observable movie = Observable.just(new HorrorMovie()); - Observable movie2 = movie.compose(new ObservableTransformer() { - @Override - public Observable apply(Observable t1) { - return t1.map(new Function() { - @Override - public HorrorMovie apply(HorrorMovie v) { - return v; - } - }); - } - }); + Observable movie2 = movie.compose(t1 -> t1.map(v -> v)); } @Test @@ -176,45 +111,37 @@ public void composeWithDeltaLogic() { movies.compose(deltaTransformer); } - static Function>, Observable> calculateDelta = new Function>, Observable>() { - @Override - public Observable apply(List> listOfLists) { - if (listOfLists.size() == 1) { - return Observable.fromIterable(listOfLists.get(0)); - } else { - // diff the two - List newList = listOfLists.get(1); - List oldList = new ArrayList<>(listOfLists.get(0)); - - Set delta = new LinkedHashSet<>(); - delta.addAll(newList); - // remove all that match in old - delta.removeAll(oldList); + static Function>, Observable> calculateDelta = listOfLists -> { + if (listOfLists.size() == 1) { + return Observable.fromIterable(listOfLists.get(0)); + } else { + // diff the two + List newList = listOfLists.get(1); + List oldList = new ArrayList<>(listOfLists.get(0)); - // filter oldList to those that aren't in the newList - oldList.removeAll(newList); + Set delta = new LinkedHashSet<>(); + delta.addAll(newList); + // remove all that match in old + delta.removeAll(oldList); - // for all left in the oldList we'll create DROP events - for (@SuppressWarnings("unused") Movie old : oldList) { - delta.add(new Movie()); - } + // filter oldList to those that aren't in the newList + oldList.removeAll(newList); - return Observable.fromIterable(delta); + // for all left in the oldList we'll create DROP events + for (@SuppressWarnings("unused") Movie old : oldList) { + delta.add(new Movie()); } - } - }; - static ObservableTransformer, Movie> deltaTransformer = new ObservableTransformer, Movie>() { - @Override - public Observable apply(Observable> movieList) { - return movieList - .startWithItem(new ArrayList<>()) - .buffer(2, 1) - .skip(1) - .flatMap(calculateDelta); + return Observable.fromIterable(delta); } }; + static ObservableTransformer, Movie> deltaTransformer = movieList -> movieList + .startWithItem(new ArrayList<>()) + .buffer(2, 1) + .skip(1) + .flatMap(calculateDelta); + /* * Most tests are moved into their applicable classes such as [Operator]Tests.java */ diff --git a/src/test/java/io/reactivex/rxjava4/observable/ObservableDoOnTest.java b/src/test/java/io/reactivex/rxjava4/observable/ObservableDoOnTest.java index 1919f4b3a5..833b3cd0a7 100644 --- a/src/test/java/io/reactivex/rxjava4/observable/ObservableDoOnTest.java +++ b/src/test/java/io/reactivex/rxjava4/observable/ObservableDoOnTest.java @@ -21,19 +21,13 @@ import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.exceptions.TestException; -import io.reactivex.rxjava4.functions.*; public class ObservableDoOnTest extends RxJavaTest { @Test public void doOnEach() { final AtomicReference r = new AtomicReference<>(); - String output = Observable.just("one").doOnNext(new Consumer() { - @Override - public void accept(String v) { - r.set(v); - } - }).blockingSingle(); + String output = Observable.just("one").doOnNext(r::set).blockingSingle(); assertEquals("one", output); assertEquals("one", r.get()); @@ -45,12 +39,7 @@ public void doOnError() { Throwable t = null; try { Observable. error(new RuntimeException("an error")) - .doOnError(new Consumer() { - @Override - public void accept(Throwable v) { - r.set(v); - } - }).blockingSingle(); + .doOnError(r::set).blockingSingle(); fail("expected exception, not a return value"); } catch (Throwable e) { t = e; @@ -63,12 +52,7 @@ public void accept(Throwable v) { @Test public void doOnCompleted() { final AtomicBoolean r = new AtomicBoolean(); - String output = Observable.just("one").doOnComplete(new Action() { - @Override - public void run() { - r.set(true); - } - }).blockingSingle(); + String output = Observable.just("one").doOnComplete(() -> r.set(true)).blockingSingle(); assertEquals("one", output); assertTrue(r.get()); @@ -77,12 +61,7 @@ public void run() { @Test public void doOnTerminateComplete() { final AtomicBoolean r = new AtomicBoolean(); - String output = Observable.just("one").doOnTerminate(new Action() { - @Override - public void run() { - r.set(true); - } - }).blockingSingle(); + String output = Observable.just("one").doOnTerminate(() -> r.set(true)).blockingSingle(); assertEquals("one", output); assertTrue(r.get()); @@ -92,12 +71,7 @@ public void run() { @Test public void doOnTerminateError() { final AtomicBoolean r = new AtomicBoolean(); - Observable.error(new TestException()).doOnTerminate(new Action() { - @Override - public void run() { - r.set(true); - } - }) + Observable.error(new TestException()).doOnTerminate(() -> r.set(true)) .test() .assertFailure(TestException.class); assertTrue(r.get()); From b199281fac55be1c749a3149a072502c1a04e58b Mon Sep 17 00:00:00 2001 From: akarnokd Date: Mon, 22 Jun 2026 23:18:50 +0200 Subject: [PATCH 2/2] Fix style error --- .../operators/observable/ObservableBlockingTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBlockingTest.java b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBlockingTest.java index a2d02299b6..641d7aaa2c 100644 --- a/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBlockingTest.java +++ b/src/test/java/io/reactivex/rxjava4/internal/operators/observable/ObservableBlockingTest.java @@ -215,18 +215,18 @@ public void disposeUpFront() { @Test public void delayed() throws Exception { final TestObserver to = new TestObserver<>(); - final AtomicReference> s = new AtomicReference<>(); + final AtomicReference> obsRef = new AtomicReference<>(); Schedulers.single().scheduleDirect(() -> { to.dispose(); - s.get().onNext(1); + obsRef.get().onNext(1); }, 200, TimeUnit.MILLISECONDS); new Observable() { @Override protected void subscribeActual(Observer observer) { observer.onSubscribe(Disposable.empty()); - s.set(observer); + obsRef.set(observer); } }.blockingSubscribe(to);