/
githubmirror
/
RxJava
Обзор
Документация
Войти
/
githubmirror
/
RxJava
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
4.x
src/test/java/io/reactivex/rxjava4/single/SingleSubscribeTest.java
236 строк
7 KB
David Karnok
4.x: Convert from JUnit 4 to JUnit 6 (#8202)
30 июн 2026, 12:01
Не верифицирован
30 июн 2026, 12:01
531388f
Код
Авторство
О чём код?
/* * Copyright (c) 2016-present, RxJava Contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License is * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See * the License for the specific language governing permissions and limitations under the License. */ package io.reactivex.rxjava4.single; import static org.junit.jupiter.api.Assertions.*; import java.io.IOException; import java.util.List; import org.junit.jupiter.api.Test; import io.reactivex.rxjava4.core.*; import io.reactivex.rxjava4.disposables.Disposable; import io.reactivex.rxjava4.exceptions.*; import io.reactivex.rxjava4.functions.BiConsumer; import io.reactivex.rxjava4.internal.functions.Functions; import io.reactivex.rxjava4.plugins.RxJavaPlugins; import io.reactivex.rxjava4.subjects.PublishSubject; import io.reactivex.rxjava4.testsupport.TestHelper; public class SingleSubscribeTest extends RxJavaTest { @Test public void consumer() { final Integer[] value = { null }; Single.just(1).subscribe(v -> value[0] = v); assertEquals((Integer)1, value[0]); } @Test public void biconsumer() { final Object[] value = { null, null }; Single.just(1).subscribe((v, e) -> { value[0] = v; value[1] = e; }); assertEquals(1, value[0]); assertNull(value[1]); } @Test public void biconsumerError() { final Object[] value = { null, null }; TestException ex = new TestException(); Single.error(ex).subscribe((v, e) -> { value[0] = v; value[1] = e; }); assertNull(value[0]); assertEquals(ex, value[1]); } @Test public void subscribeThrows() { try { new Single<Integer>() /* NFI */ { @Override protected void subscribeActual(SingleObserver<? super Integer> observer) { throw new IllegalArgumentException(); } }.test(); } catch (NullPointerException ex) { if (!(ex.getCause() instanceof IllegalArgumentException)) { fail(ex.toString() + ": should have thrown NPE(IAE)"); } } } @Test public void biConsumerDispose() { PublishSubject<Integer> ps = PublishSubject.create(); Disposable d = ps.single(-99).subscribe((BiConsumer<Object, Object>) (_, _) -> { }); assertFalse(d.isDisposed()); d.dispose(); assertTrue(d.isDisposed()); assertFalse(ps.hasObservers()); } @Test public void consumerDispose() { PublishSubject<Integer> ps = PublishSubject.create(); Disposable d = ps.single(-99).subscribe(Functions.<Integer>emptyConsumer()); assertFalse(d.isDisposed()); d.dispose(); assertTrue(d.isDisposed()); assertFalse(ps.hasObservers()); } @Test public void consumerSuccessThrows() { List<Throwable> list = TestHelper.trackPluginErrors(); try { Single.just(1).subscribe(_ -> { throw new TestException(); }); TestHelper.assertUndeliverable(list, 0, TestException.class); } finally { RxJavaPlugins.reset(); } } @Test public void consumerErrorThrows() { List<Throwable> list = TestHelper.trackPluginErrors(); try { Single.<Integer>error(new TestException("Outer failure")).subscribe( Functions.<Integer>emptyConsumer(), _ -> { throw new TestException("Inner failure"); }); TestHelper.assertError(list, 0, CompositeException.class); List<Throwable> cel = TestHelper.compositeList(list.getFirst()); TestHelper.assertError(cel, 0, TestException.class, "Outer failure"); TestHelper.assertError(cel, 1, TestException.class, "Inner failure"); } finally { RxJavaPlugins.reset(); } } @Test public void biConsumerThrows() { List<Throwable> list = TestHelper.trackPluginErrors(); try { Single.just(1).subscribe((_, _) -> { throw new TestException(); }); TestHelper.assertUndeliverable(list, 0, TestException.class); } finally { RxJavaPlugins.reset(); } } @Test public void biConsumerErrorThrows() { List<Throwable> list = TestHelper.trackPluginErrors(); try { Single.<Integer>error(new TestException("Outer failure")).subscribe( (_, _) -> { throw new TestException("Inner failure"); }); TestHelper.assertError(list, 0, CompositeException.class); List<Throwable> cel = TestHelper.compositeList(list.getFirst()); TestHelper.assertError(cel, 0, TestException.class, "Outer failure"); TestHelper.assertError(cel, 1, TestException.class, "Inner failure"); } finally { RxJavaPlugins.reset(); } } @Test public void methodTestNoCancel() { PublishSubject<Integer> ps = PublishSubject.create(); ps.single(-99).test(false); assertTrue(ps.hasObservers()); } @Test public void successIsDisposed() { assertTrue(Single.just(1).subscribe().isDisposed()); } @Test public void errorIsDisposed() { assertTrue(Single.error(new TestException()).subscribe(Functions.emptyConsumer(), Functions.emptyConsumer()).isDisposed()); } @Test public void biConsumerIsDisposedOnSuccess() { final Object[] result = { null, null }; Disposable d = Single.just(1) .subscribe((t1, t2) -> { result[0] = t1; result[1] = t2; }); assertTrue(d.isDisposed(), "Not disposed?!"); assertEquals(1, result[0]); assertNull(result[1]); } @Test public void biConsumerIsDisposedOnError() { final Object[] result = { null, null }; Disposable d = Single.<Integer>error(new IOException()) .subscribe((t1, t2) -> { result[0] = t1; result[1] = t2; }); assertTrue(d.isDisposed(), "Not disposed?!"); assertNull(result[0]); assertTrue(result[1] instanceof IOException, "" + result[1]); } }