The following issues were found

src/main/java/io/reactivex/rxjava3/internal/operators/flowable/FlowableSequenceEqualSingle.java
36 issues
Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 31

              import io.reactivex.rxjava3.plugins.RxJavaPlugins;

public final class FlowableSequenceEqualSingle<T> extends Single<Boolean> implements FuseToFlowable<Boolean> {
    final Publisher<? extends T> first;
    final Publisher<? extends T> second;
    final BiPredicate<? super T, ? super T> comparer;
    final int prefetch;

    public FlowableSequenceEqualSingle(Publisher<? extends T> first, Publisher<? extends T> second,

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 32

              
public final class FlowableSequenceEqualSingle<T> extends Single<Boolean> implements FuseToFlowable<Boolean> {
    final Publisher<? extends T> first;
    final Publisher<? extends T> second;
    final BiPredicate<? super T, ? super T> comparer;
    final int prefetch;

    public FlowableSequenceEqualSingle(Publisher<? extends T> first, Publisher<? extends T> second,
            BiPredicate<? super T, ? super T> comparer, int prefetch) {

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 33

              public final class FlowableSequenceEqualSingle<T> extends Single<Boolean> implements FuseToFlowable<Boolean> {
    final Publisher<? extends T> first;
    final Publisher<? extends T> second;
    final BiPredicate<? super T, ? super T> comparer;
    final int prefetch;

    public FlowableSequenceEqualSingle(Publisher<? extends T> first, Publisher<? extends T> second,
            BiPredicate<? super T, ? super T> comparer, int prefetch) {
        this.first = first;

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 34

                  final Publisher<? extends T> first;
    final Publisher<? extends T> second;
    final BiPredicate<? super T, ? super T> comparer;
    final int prefetch;

    public FlowableSequenceEqualSingle(Publisher<? extends T> first, Publisher<? extends T> second,
            BiPredicate<? super T, ? super T> comparer, int prefetch) {
        this.first = first;
        this.second = second;

            

Reported by PMD.

The class 'EqualCoordinator' has a Standard Cyclomatic Complexity of 4 (Highest = 19).
Design

Line: 56

                      return RxJavaPlugins.onAssembly(new FlowableSequenceEqual<>(first, second, comparer, prefetch));
    }

    static final class EqualCoordinator<T>
    extends AtomicInteger
    implements Disposable, EqualCoordinatorHelper {

        private static final long serialVersionUID = -6178010334400373240L;


            

Reported by PMD.

The class 'EqualCoordinator' has a Modified Cyclomatic Complexity of 4 (Highest = 19).
Design

Line: 56

                      return RxJavaPlugins.onAssembly(new FlowableSequenceEqual<>(first, second, comparer, prefetch));
    }

    static final class EqualCoordinator<T>
    extends AtomicInteger
    implements Disposable, EqualCoordinatorHelper {

        private static final long serialVersionUID = -6178010334400373240L;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 62

              
        private static final long serialVersionUID = -6178010334400373240L;

        final SingleObserver<? super Boolean> downstream;

        final BiPredicate<? super T, ? super T> comparer;

        final EqualSubscriber<T> first;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 64

              
        final SingleObserver<? super Boolean> downstream;

        final BiPredicate<? super T, ? super T> comparer;

        final EqualSubscriber<T> first;

        final EqualSubscriber<T> second;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 66

              
        final BiPredicate<? super T, ? super T> comparer;

        final EqualSubscriber<T> first;

        final EqualSubscriber<T> second;

        final AtomicThrowable errors;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 68

              
        final EqualSubscriber<T> first;

        final EqualSubscriber<T> second;

        final AtomicThrowable errors;

        T v1;


            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/flowable/FlowableSwitchIfEmptyTest.java
36 issues
A method/constructor should not explicitly throw java.lang.Exception
Design

Line: 34

              public class FlowableSwitchIfEmptyTest extends RxJavaTest {

    @Test
    public void switchWhenNotEmpty() throws Exception {
        final AtomicBoolean subscribed = new AtomicBoolean(false);
        final Flowable<Integer> flowable = Flowable.just(4)
                .switchIfEmpty(Flowable.just(2)
                .doOnSubscribe(new Consumer<Subscription>() {
                    @Override

            

Reported by PMD.

Unit tests should not contain more than 1 assert(s).
Design

Line: 34

              public class FlowableSwitchIfEmptyTest extends RxJavaTest {

    @Test
    public void switchWhenNotEmpty() throws Exception {
        final AtomicBoolean subscribed = new AtomicBoolean(false);
        final Flowable<Integer> flowable = Flowable.just(4)
                .switchIfEmpty(Flowable.just(2)
                .doOnSubscribe(new Consumer<Subscription>() {
                    @Override

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 45

                                  }
                }));

        assertEquals(4, flowable.blockingSingle().intValue());
        assertFalse(subscribed.get());
    }

    @Test
    public void switchWhenEmpty() throws Exception {

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 45

                                  }
                }));

        assertEquals(4, flowable.blockingSingle().intValue());
        assertFalse(subscribed.get());
    }

    @Test
    public void switchWhenEmpty() throws Exception {

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 46

                              }));

        assertEquals(4, flowable.blockingSingle().intValue());
        assertFalse(subscribed.get());
    }

    @Test
    public void switchWhenEmpty() throws Exception {
        final Flowable<Integer> flowable = Flowable.<Integer>empty()

            

Reported by PMD.

A method/constructor should not explicitly throw java.lang.Exception
Design

Line: 50

                  }

    @Test
    public void switchWhenEmpty() throws Exception {
        final Flowable<Integer> flowable = Flowable.<Integer>empty()
                .switchIfEmpty(Flowable.fromIterable(Arrays.asList(42)));

        assertEquals(42, flowable.blockingSingle().intValue());
    }

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 51

              
    @Test
    public void switchWhenEmpty() throws Exception {
        final Flowable<Integer> flowable = Flowable.<Integer>empty()
                .switchIfEmpty(Flowable.fromIterable(Arrays.asList(42)));

        assertEquals(42, flowable.blockingSingle().intValue());
    }


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 51

              
    @Test
    public void switchWhenEmpty() throws Exception {
        final Flowable<Integer> flowable = Flowable.<Integer>empty()
                .switchIfEmpty(Flowable.fromIterable(Arrays.asList(42)));

        assertEquals(42, flowable.blockingSingle().intValue());
    }


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 54

                      final Flowable<Integer> flowable = Flowable.<Integer>empty()
                .switchIfEmpty(Flowable.fromIterable(Arrays.asList(42)));

        assertEquals(42, flowable.blockingSingle().intValue());
    }

    @Test
    public void switchWithProducer() throws Exception {
        final AtomicBoolean emitted = new AtomicBoolean(false);

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 54

                      final Flowable<Integer> flowable = Flowable.<Integer>empty()
                .switchIfEmpty(Flowable.fromIterable(Arrays.asList(42)));

        assertEquals(42, flowable.blockingSingle().intValue());
    }

    @Test
    public void switchWithProducer() throws Exception {
        final AtomicBoolean emitted = new AtomicBoolean(false);

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/completable/CompletableAndThenCompletableTest.java
36 issues
System.out.println is used
Design

Line: 163

                                              try {
                                    Thread.sleep(30);
                                } catch (InterruptedException e) {
                                    System.out.println("Interrupted! " + Thread.currentThread());
                                    interrupted[0] = true;
                                }
                            }
                        }))
                        .subscribe(new Action() {

            

Reported by PMD.

This class has too many methods, consider refactoring it.
Design

Line: 30

              import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.testsupport.TestHelper;

public class CompletableAndThenCompletableTest extends RxJavaTest {
    @Test
    public void andThenCompletableCompleteComplete() {
        Completable.complete()
                .andThen(Completable.complete())
                .test()

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 32

              
public class CompletableAndThenCompletableTest extends RxJavaTest {
    @Test
    public void andThenCompletableCompleteComplete() {
        Completable.complete()
                .andThen(Completable.complete())
                .test()
                .assertComplete();
    }

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 33

              public class CompletableAndThenCompletableTest extends RxJavaTest {
    @Test
    public void andThenCompletableCompleteComplete() {
        Completable.complete()
                .andThen(Completable.complete())
                .test()
                .assertComplete();
    }


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 33

              public class CompletableAndThenCompletableTest extends RxJavaTest {
    @Test
    public void andThenCompletableCompleteComplete() {
        Completable.complete()
                .andThen(Completable.complete())
                .test()
                .assertComplete();
    }


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 33

              public class CompletableAndThenCompletableTest extends RxJavaTest {
    @Test
    public void andThenCompletableCompleteComplete() {
        Completable.complete()
                .andThen(Completable.complete())
                .test()
                .assertComplete();
    }


            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 40

                  }

    @Test
    public void andThenCompletableCompleteError() {
        Completable.complete()
                .andThen(Completable.error(new TestException("test")))
                .to(TestHelper.testConsumer())
                .assertNotComplete()
                .assertNoValues()

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 51

                  }

    @Test
    public void andThenCompletableCompleteNever() {
        Completable.complete()
                .andThen(Completable.never())
                .test()
                .assertNoValues()
                .assertNoErrors()

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 52

              
    @Test
    public void andThenCompletableCompleteNever() {
        Completable.complete()
                .andThen(Completable.never())
                .test()
                .assertNoValues()
                .assertNoErrors()
                .assertNotComplete();

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 52

              
    @Test
    public void andThenCompletableCompleteNever() {
        Completable.complete()
                .andThen(Completable.never())
                .test()
                .assertNoValues()
                .assertNoErrors()
                .assertNotComplete();

            

Reported by PMD.

src/main/java/io/reactivex/rxjava3/internal/operators/observable/ObservableSequenceEqualSingle.java
36 issues
Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 28

              import io.reactivex.rxjava3.plugins.RxJavaPlugins;

public final class ObservableSequenceEqualSingle<T> extends Single<Boolean> implements FuseToObservable<Boolean> {
    final ObservableSource<? extends T> first;
    final ObservableSource<? extends T> second;
    final BiPredicate<? super T, ? super T> comparer;
    final int bufferSize;

    public ObservableSequenceEqualSingle(ObservableSource<? extends T> first, ObservableSource<? extends T> second,

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 29

              
public final class ObservableSequenceEqualSingle<T> extends Single<Boolean> implements FuseToObservable<Boolean> {
    final ObservableSource<? extends T> first;
    final ObservableSource<? extends T> second;
    final BiPredicate<? super T, ? super T> comparer;
    final int bufferSize;

    public ObservableSequenceEqualSingle(ObservableSource<? extends T> first, ObservableSource<? extends T> second,
                                   BiPredicate<? super T, ? super T> comparer, int bufferSize) {

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 30

              public final class ObservableSequenceEqualSingle<T> extends Single<Boolean> implements FuseToObservable<Boolean> {
    final ObservableSource<? extends T> first;
    final ObservableSource<? extends T> second;
    final BiPredicate<? super T, ? super T> comparer;
    final int bufferSize;

    public ObservableSequenceEqualSingle(ObservableSource<? extends T> first, ObservableSource<? extends T> second,
                                   BiPredicate<? super T, ? super T> comparer, int bufferSize) {
        this.first = first;

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 31

                  final ObservableSource<? extends T> first;
    final ObservableSource<? extends T> second;
    final BiPredicate<? super T, ? super T> comparer;
    final int bufferSize;

    public ObservableSequenceEqualSingle(ObservableSource<? extends T> first, ObservableSource<? extends T> second,
                                   BiPredicate<? super T, ? super T> comparer, int bufferSize) {
        this.first = first;
        this.second = second;

            

Reported by PMD.

The class 'EqualCoordinator' has a Modified Cyclomatic Complexity of 4 (Highest = 18).
Design

Line: 53

                      return RxJavaPlugins.onAssembly(new ObservableSequenceEqual<>(first, second, comparer, bufferSize));
    }

    static final class EqualCoordinator<T> extends AtomicInteger implements Disposable {

        private static final long serialVersionUID = -6178010334400373240L;
        final SingleObserver<? super Boolean> downstream;
        final BiPredicate<? super T, ? super T> comparer;
        final ArrayCompositeDisposable resources;

            

Reported by PMD.

The class 'EqualCoordinator' has a Standard Cyclomatic Complexity of 4 (Highest = 18).
Design

Line: 53

                      return RxJavaPlugins.onAssembly(new ObservableSequenceEqual<>(first, second, comparer, bufferSize));
    }

    static final class EqualCoordinator<T> extends AtomicInteger implements Disposable {

        private static final long serialVersionUID = -6178010334400373240L;
        final SingleObserver<? super Boolean> downstream;
        final BiPredicate<? super T, ? super T> comparer;
        final ArrayCompositeDisposable resources;

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 56

                  static final class EqualCoordinator<T> extends AtomicInteger implements Disposable {

        private static final long serialVersionUID = -6178010334400373240L;
        final SingleObserver<? super Boolean> downstream;
        final BiPredicate<? super T, ? super T> comparer;
        final ArrayCompositeDisposable resources;
        final ObservableSource<? extends T> first;
        final ObservableSource<? extends T> second;
        final EqualObserver<T>[] observers;

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 57

              
        private static final long serialVersionUID = -6178010334400373240L;
        final SingleObserver<? super Boolean> downstream;
        final BiPredicate<? super T, ? super T> comparer;
        final ArrayCompositeDisposable resources;
        final ObservableSource<? extends T> first;
        final ObservableSource<? extends T> second;
        final EqualObserver<T>[] observers;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 58

                      private static final long serialVersionUID = -6178010334400373240L;
        final SingleObserver<? super Boolean> downstream;
        final BiPredicate<? super T, ? super T> comparer;
        final ArrayCompositeDisposable resources;
        final ObservableSource<? extends T> first;
        final ObservableSource<? extends T> second;
        final EqualObserver<T>[] observers;

        volatile boolean cancelled;

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 59

                      final SingleObserver<? super Boolean> downstream;
        final BiPredicate<? super T, ? super T> comparer;
        final ArrayCompositeDisposable resources;
        final ObservableSource<? extends T> first;
        final ObservableSource<? extends T> second;
        final EqualObserver<T>[] observers;

        volatile boolean cancelled;


            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/flowable/FlowableFromCompletableTest.java
35 issues
JUnit assertions should include a message
Design

Line: 47

                          .test()
            .assertResult();

        assertEquals(1, atomicInteger.get());
    }

    @Test
    public void fromCompletableTwice() {
        final AtomicInteger atomicInteger = new AtomicInteger();

            

Reported by PMD.

Unit tests should not contain more than 1 assert(s).
Design

Line: 51

                  }

    @Test
    public void fromCompletableTwice() {
        final AtomicInteger atomicInteger = new AtomicInteger();

        Action run = new Action() {
            @Override
            public void run() throws Exception {

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 61

                          }
        };

        Flowable.fromCompletable(Completable.fromAction(run))
            .test()
            .assertResult();

        assertEquals(1, atomicInteger.get());


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 61

                          }
        };

        Flowable.fromCompletable(Completable.fromAction(run))
            .test()
            .assertResult();

        assertEquals(1, atomicInteger.get());


            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 65

                          .test()
            .assertResult();

        assertEquals(1, atomicInteger.get());

        Flowable.fromCompletable(Completable.fromAction(run))
            .test()
            .assertResult();


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 67

              
        assertEquals(1, atomicInteger.get());

        Flowable.fromCompletable(Completable.fromAction(run))
            .test()
            .assertResult();

        assertEquals(2, atomicInteger.get());
    }

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 67

              
        assertEquals(1, atomicInteger.get());

        Flowable.fromCompletable(Completable.fromAction(run))
            .test()
            .assertResult();

        assertEquals(2, atomicInteger.get());
    }

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 71

                          .test()
            .assertResult();

        assertEquals(2, atomicInteger.get());
    }

    @Test
    public void fromCompletableInvokesLazy() {
        final AtomicInteger atomicInteger = new AtomicInteger();

            

Reported by PMD.

Unit tests should not contain more than 1 assert(s).
Design

Line: 75

                  }

    @Test
    public void fromCompletableInvokesLazy() {
        final AtomicInteger atomicInteger = new AtomicInteger();

        Flowable<Object> source = Flowable.fromCompletable(Completable.fromAction(new Action() {
            @Override
            public void run() throws Exception {

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 85

                          }
        }));

        assertEquals(0, atomicInteger.get());

        source
            .test()
            .assertResult();


            

Reported by PMD.

src/main/java/io/reactivex/rxjava3/internal/operators/mixed/ObservableConcatMapMaybe.java
35 issues
Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 38

               */
public final class ObservableConcatMapMaybe<T, R> extends Observable<R> {

    final Observable<T> source;

    final Function<? super T, ? extends MaybeSource<? extends R>> mapper;

    final ErrorMode errorMode;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 40

              
    final Observable<T> source;

    final Function<? super T, ? extends MaybeSource<? extends R>> mapper;

    final ErrorMode errorMode;

    final int prefetch;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 42

              
    final Function<? super T, ? extends MaybeSource<? extends R>> mapper;

    final ErrorMode errorMode;

    final int prefetch;

    public ObservableConcatMapMaybe(Observable<T> source,
            Function<? super T, ? extends MaybeSource<? extends R>> mapper,

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 44

              
    final ErrorMode errorMode;

    final int prefetch;

    public ObservableConcatMapMaybe(Observable<T> source,
            Function<? super T, ? extends MaybeSource<? extends R>> mapper,
                    ErrorMode errorMode, int prefetch) {
        this.source = source;

            

Reported by PMD.

The class 'ConcatMapMaybeMainObserver' has a Modified Cyclomatic Complexity of 3 (Highest = 14).
Design

Line: 62

                      }
    }

    static final class ConcatMapMaybeMainObserver<T, R>
    extends ConcatMapXMainObserver<T> {

        private static final long serialVersionUID = -9140123220065488293L;

        final Observer<? super R> downstream;

            

Reported by PMD.

The class 'ConcatMapMaybeMainObserver' has a Standard Cyclomatic Complexity of 3 (Highest = 14).
Design

Line: 62

                      }
    }

    static final class ConcatMapMaybeMainObserver<T, R>
    extends ConcatMapXMainObserver<T> {

        private static final long serialVersionUID = -9140123220065488293L;

        final Observer<? super R> downstream;

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 67

              
        private static final long serialVersionUID = -9140123220065488293L;

        final Observer<? super R> downstream;

        final Function<? super T, ? extends MaybeSource<? extends R>> mapper;

        final ConcatMapMaybeObserver<R> inner;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 69

              
        final Observer<? super R> downstream;

        final Function<? super T, ? extends MaybeSource<? extends R>> mapper;

        final ConcatMapMaybeObserver<R> inner;

        R item;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 71

              
        final Function<? super T, ? extends MaybeSource<? extends R>> mapper;

        final ConcatMapMaybeObserver<R> inner;

        R item;

        volatile int state;


            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 73

              
        final ConcatMapMaybeObserver<R> inner;

        R item;

        volatile int state;

        /** No inner MaybeSource is running. */
        static final int STATE_INACTIVE = 0;

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/maybe/MaybeUnsubscribeOnTest.java
35 issues
Unit tests should not contain more than 1 assert(s).
Design

Line: 33

              public class MaybeUnsubscribeOnTest extends RxJavaTest {

    @Test
    public void normal() throws Exception {
        PublishProcessor<Integer> pp = PublishProcessor.create();

        final String[] name = { null };

        final CountDownLatch cdl = new CountDownLatch(1);

            

Reported by PMD.

A method/constructor should not explicitly throw java.lang.Exception
Design

Line: 33

              public class MaybeUnsubscribeOnTest extends RxJavaTest {

    @Test
    public void normal() throws Exception {
        PublishProcessor<Integer> pp = PublishProcessor.create();

        final String[] name = { null };

        final CountDownLatch cdl = new CountDownLatch(1);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 43

                      pp.doOnCancel(new Action() {
            @Override
            public void run() throws Exception {
                name[0] = Thread.currentThread().getName();
                cdl.countDown();
            }
        })
        .singleElement()
        .unsubscribeOn(Schedulers.single())

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 52

                      .test(true)
        ;

        assertTrue(cdl.await(5, TimeUnit.SECONDS));

        int times = 10;

        while (times-- > 0 && pp.hasSubscribers()) {
            Thread.sleep(100);

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 56

              
        int times = 10;

        while (times-- > 0 && pp.hasSubscribers()) {
            Thread.sleep(100);
        }

        assertFalse(pp.hasSubscribers());


            

Reported by PMD.

Avoid assignments in operands
Error

Line: 56

              
        int times = 10;

        while (times-- > 0 && pp.hasSubscribers()) {
            Thread.sleep(100);
        }

        assertFalse(pp.hasSubscribers());


            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 60

                          Thread.sleep(100);
        }

        assertFalse(pp.hasSubscribers());

        assertNotEquals(Thread.currentThread().getName(), name[0]);
    }

    @Test

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 60

                          Thread.sleep(100);
        }

        assertFalse(pp.hasSubscribers());

        assertNotEquals(Thread.currentThread().getName(), name[0]);
    }

    @Test

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 62

              
        assertFalse(pp.hasSubscribers());

        assertNotEquals(Thread.currentThread().getName(), name[0]);
    }

    @Test
    public void just() {
        Maybe.just(1)

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 66

                  }

    @Test
    public void just() {
        Maybe.just(1)
        .unsubscribeOn(Schedulers.single())
        .test()
        .assertResult(1);
    }

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/maybe/MaybeDoFinallyTest.java
35 issues
This class has too many methods, consider refactoring it.
Design

Line: 30

              import io.reactivex.rxjava3.subjects.PublishSubject;
import io.reactivex.rxjava3.testsupport.TestHelper;

public class MaybeDoFinallyTest extends RxJavaTest implements Action {

    int calls;

    @Override
    public void run() throws Exception {

            

Reported by PMD.

Found non-transient, non-static member. Please mark as transient or provide accessors.
Error

Line: 32

              
public class MaybeDoFinallyTest extends RxJavaTest implements Action {

    int calls;

    @Override
    public void run() throws Exception {
        calls++;
    }

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 41

              
    @Test
    public void normalJust() {
        Maybe.just(1)
        .doFinally(this)
        .test()
        .assertResult(1);

        assertEquals(1, calls);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 41

              
    @Test
    public void normalJust() {
        Maybe.just(1)
        .doFinally(this)
        .test()
        .assertResult(1);

        assertEquals(1, calls);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 41

              
    @Test
    public void normalJust() {
        Maybe.just(1)
        .doFinally(this)
        .test()
        .assertResult(1);

        assertEquals(1, calls);

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 46

                      .test()
        .assertResult(1);

        assertEquals(1, calls);
    }

    @Test
    public void normalEmpty() {
        Maybe.empty()

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 51

              
    @Test
    public void normalEmpty() {
        Maybe.empty()
        .doFinally(this)
        .test()
        .assertResult();

        assertEquals(1, calls);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 51

              
    @Test
    public void normalEmpty() {
        Maybe.empty()
        .doFinally(this)
        .test()
        .assertResult();

        assertEquals(1, calls);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 51

              
    @Test
    public void normalEmpty() {
        Maybe.empty()
        .doFinally(this)
        .test()
        .assertResult();

        assertEquals(1, calls);

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 56

                      .test()
        .assertResult();

        assertEquals(1, calls);
    }

    @Test
    public void normalError() {
        Maybe.error(new TestException())

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/maybe/MaybeSwitchIfEmptySingleTest.java
35 issues
JUnit tests should include assert() or fail()
Design

Line: 31

              public class MaybeSwitchIfEmptySingleTest extends RxJavaTest {

    @Test
    public void nonEmpty() {
        Maybe.just(1).switchIfEmpty(Single.just(2)).test().assertResult(1);
    }

    @Test
    public void empty() {

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 32

              
    @Test
    public void nonEmpty() {
        Maybe.just(1).switchIfEmpty(Single.just(2)).test().assertResult(1);
    }

    @Test
    public void empty() {
        Maybe.<Integer>empty().switchIfEmpty(Single.just(2)).test().assertResult(2);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 32

              
    @Test
    public void nonEmpty() {
        Maybe.just(1).switchIfEmpty(Single.just(2)).test().assertResult(1);
    }

    @Test
    public void empty() {
        Maybe.<Integer>empty().switchIfEmpty(Single.just(2)).test().assertResult(2);

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 32

              
    @Test
    public void nonEmpty() {
        Maybe.just(1).switchIfEmpty(Single.just(2)).test().assertResult(1);
    }

    @Test
    public void empty() {
        Maybe.<Integer>empty().switchIfEmpty(Single.just(2)).test().assertResult(2);

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 36

                  }

    @Test
    public void empty() {
        Maybe.<Integer>empty().switchIfEmpty(Single.just(2)).test().assertResult(2);
    }

    @Test
    public void error() {

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 37

              
    @Test
    public void empty() {
        Maybe.<Integer>empty().switchIfEmpty(Single.just(2)).test().assertResult(2);
    }

    @Test
    public void error() {
        Maybe.<Integer>error(new TestException()).switchIfEmpty(Single.just(2))

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 37

              
    @Test
    public void empty() {
        Maybe.<Integer>empty().switchIfEmpty(Single.just(2)).test().assertResult(2);
    }

    @Test
    public void error() {
        Maybe.<Integer>error(new TestException()).switchIfEmpty(Single.just(2))

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 37

              
    @Test
    public void empty() {
        Maybe.<Integer>empty().switchIfEmpty(Single.just(2)).test().assertResult(2);
    }

    @Test
    public void error() {
        Maybe.<Integer>error(new TestException()).switchIfEmpty(Single.just(2))

            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 37

              
    @Test
    public void empty() {
        Maybe.<Integer>empty().switchIfEmpty(Single.just(2)).test().assertResult(2);
    }

    @Test
    public void error() {
        Maybe.<Integer>error(new TestException()).switchIfEmpty(Single.just(2))

            

Reported by PMD.

JUnit tests should include assert() or fail()
Design

Line: 41

                  }

    @Test
    public void error() {
        Maybe.<Integer>error(new TestException()).switchIfEmpty(Single.just(2))
        .test().assertFailure(TestException.class);
    }

    @Test

            

Reported by PMD.

src/test/java/io/reactivex/rxjava3/internal/operators/mixed/MaybeFlatMapObservableTest.java
35 issues
Unit tests should not contain more than 1 assert(s).
Design

Line: 31

              public class MaybeFlatMapObservableTest extends RxJavaTest {

    @Test
    public void cancelMain() {
        MaybeSubject<Integer> ms = MaybeSubject.create();
        PublishSubject<Integer> ps = PublishSubject.create();

        TestObserver<Integer> to = ms.flatMapObservable(Functions.justFunction(ps))
                .test();

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 35

                      MaybeSubject<Integer> ms = MaybeSubject.create();
        PublishSubject<Integer> ps = PublishSubject.create();

        TestObserver<Integer> to = ms.flatMapObservable(Functions.justFunction(ps))
                .test();

        assertTrue(ms.hasObservers());
        assertFalse(ps.hasObservers());


            

Reported by PMD.

Potential violation of Law of Demeter (method chain calls)
Design

Line: 35

                      MaybeSubject<Integer> ms = MaybeSubject.create();
        PublishSubject<Integer> ps = PublishSubject.create();

        TestObserver<Integer> to = ms.flatMapObservable(Functions.justFunction(ps))
                .test();

        assertTrue(ms.hasObservers());
        assertFalse(ps.hasObservers());


            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 38

                      TestObserver<Integer> to = ms.flatMapObservable(Functions.justFunction(ps))
                .test();

        assertTrue(ms.hasObservers());
        assertFalse(ps.hasObservers());

        to.dispose();

        assertFalse(ms.hasObservers());

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 38

                      TestObserver<Integer> to = ms.flatMapObservable(Functions.justFunction(ps))
                .test();

        assertTrue(ms.hasObservers());
        assertFalse(ps.hasObservers());

        to.dispose();

        assertFalse(ms.hasObservers());

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 39

                              .test();

        assertTrue(ms.hasObservers());
        assertFalse(ps.hasObservers());

        to.dispose();

        assertFalse(ms.hasObservers());
        assertFalse(ps.hasObservers());

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 39

                              .test();

        assertTrue(ms.hasObservers());
        assertFalse(ps.hasObservers());

        to.dispose();

        assertFalse(ms.hasObservers());
        assertFalse(ps.hasObservers());

            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 41

                      assertTrue(ms.hasObservers());
        assertFalse(ps.hasObservers());

        to.dispose();

        assertFalse(ms.hasObservers());
        assertFalse(ps.hasObservers());
    }


            

Reported by PMD.

Potential violation of Law of Demeter (object not created locally)
Design

Line: 43

              
        to.dispose();

        assertFalse(ms.hasObservers());
        assertFalse(ps.hasObservers());
    }

    @Test
    public void cancelOther() {

            

Reported by PMD.

JUnit assertions should include a message
Design

Line: 43

              
        to.dispose();

        assertFalse(ms.hasObservers());
        assertFalse(ps.hasObservers());
    }

    @Test
    public void cancelOther() {

            

Reported by PMD.