Search in sources :

Example 1 with BehaviorSubject

use of io.reactivex.rxjava3.subjects.BehaviorSubject in project RxJava by ReactiveX.

the class ObservableMapOptionalTest method mapperChashConditional.

@Test
public void mapperChashConditional() {
    BehaviorSubject<Integer> source = BehaviorSubject.createDefault(1);
    source.mapOptional(v -> {
        throw new TestException();
    }).filter(v -> true).test().assertFailure(TestException.class);
    assertFalse(source.hasObservers());
}
Also used : QueueFuseable(io.reactivex.rxjava3.operators.QueueFuseable) TestHelper(io.reactivex.rxjava3.testsupport.TestHelper) Function(io.reactivex.rxjava3.functions.Function) io.reactivex.rxjava3.subjects(io.reactivex.rxjava3.subjects) TestException(io.reactivex.rxjava3.exceptions.TestException) Assert.assertFalse(org.junit.Assert.assertFalse) Disposable(io.reactivex.rxjava3.disposables.Disposable) Optional(java.util.Optional) Test(org.junit.Test) io.reactivex.rxjava3.core(io.reactivex.rxjava3.core) TestException(io.reactivex.rxjava3.exceptions.TestException) Test(org.junit.Test)

Example 2 with BehaviorSubject

use of io.reactivex.rxjava3.subjects.BehaviorSubject in project RxJava by ReactiveX.

the class BehaviorSubjectTest method onSubscribe.

@Test
public void onSubscribe() {
    BehaviorSubject<Object> p = BehaviorSubject.create();
    Disposable bs = Disposable.empty();
    p.onSubscribe(bs);
    assertFalse(bs.isDisposed());
    p.onComplete();
    bs = Disposable.empty();
    p.onSubscribe(bs);
    assertTrue(bs.isDisposed());
}
Also used : BehaviorDisposable(io.reactivex.rxjava3.subjects.BehaviorSubject.BehaviorDisposable)

Example 3 with BehaviorSubject

use of io.reactivex.rxjava3.subjects.BehaviorSubject in project RxJava by ReactiveX.

the class SerializedSubjectTest method behaviorSubjectError.

@Test
public void behaviorSubjectError() {
    BehaviorSubject<Integer> async = BehaviorSubject.create();
    TestException te = new TestException();
    async.onError(te);
    Subject<Integer> serial = async.toSerialized();
    assertFalse(serial.hasObservers());
    assertFalse(serial.hasComplete());
    assertTrue(serial.hasThrowable());
    assertSame(te, serial.getThrowable());
    assertNull(async.getValue());
    assertFalse(async.hasValue());
}
Also used : TestException(io.reactivex.rxjava3.exceptions.TestException) RxJavaTest(io.reactivex.rxjava3.core.RxJavaTest) Test(org.junit.Test)

Example 4 with BehaviorSubject

use of io.reactivex.rxjava3.subjects.BehaviorSubject in project a-medic-log by rh-id.

the class LogPage method createView.

@Override
protected View createView(Activity activity, ViewGroup container) {
    View view = activity.getLayoutInflater().inflate(R.layout.page_log, container, false);
    ViewGroup rootLayout = view.findViewById(R.id.root_layout);
    ViewGroup containerAppBar = view.findViewById(R.id.container_app_bar);
    mAppBarSV.setTitle(activity.getString(R.string.title_log_file));
    containerAppBar.addView(mAppBarSV.buildView(activity, rootLayout));
    ProgressBar progressBar = view.findViewById(R.id.progress_circular);
    View noRecord = view.findViewById(R.id.no_record);
    ScrollView scrollView = view.findViewById(R.id.scroll_view);
    TextView textView = view.findViewById(R.id.text_content);
    Provider provider = BaseApplication.of(activity).getProvider();
    if (mSvProvider != null) {
        mSvProvider.dispose();
    }
    mSvProvider = Provider.createProvider(activity.getApplicationContext(), new RxProviderModule());
    FileHelper fileHelper = provider.get(FileHelper.class);
    File logFile = fileHelper.getLogFile();
    FloatingActionButton fabClear = view.findViewById(R.id.fab_clear);
    FloatingActionButton fabShare = view.findViewById(R.id.fab_share);
    fabShare.setOnClickListener(v -> {
        try {
            UiUtils.shareFile(activity, logFile, activity.getString(R.string.share_log_file));
        } catch (Throwable e) {
            provider.get(ILogger.class).e(TAG, activity.getString(R.string.error_sharing_log_file), e);
        }
    });
    BehaviorSubject<File> subject = BehaviorSubject.createDefault(logFile);
    fabClear.setOnClickListener(view1 -> {
        fileHelper.clearLogFile();
        provider.get(ILogger.class).i(TAG, activity.getString(R.string.log_file_deleted));
        provider.get(Handler.class).post(() -> subject.onNext(logFile));
    });
    mSvProvider.get(RxDisposer.class).add("readLogFile", subject.observeOn(Schedulers.from(BaseApplication.of(activity).getProvider().get(ExecutorService.class))).map(file -> {
        if (!file.exists()) {
            return "";
        } else {
            StringBuilder stringBuilder = new StringBuilder();
            BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
            char[] buff = new char[2048];
            int b = bufferedReader.read(buff);
            while (b != -1) {
                stringBuilder.append(buff);
                b = bufferedReader.read(buff);
            }
            return stringBuilder.toString();
        }
    }).observeOn(AndroidSchedulers.mainThread()).subscribe(s -> {
        progressBar.setVisibility(View.GONE);
        textView.setText(s);
        if (s.isEmpty()) {
            noRecord.setVisibility(View.VISIBLE);
            scrollView.setVisibility(View.GONE);
            fabShare.setVisibility(View.GONE);
            fabClear.setVisibility(View.GONE);
        } else {
            noRecord.setVisibility(View.GONE);
            scrollView.setVisibility(View.VISIBLE);
            scrollView.post(() -> scrollView.fullScroll(View.FOCUS_DOWN));
            fabShare.setVisibility(View.VISIBLE);
            fabClear.setVisibility(View.VISIBLE);
        }
    }));
    return view;
}
Also used : FileHelper(m.co.rh.id.a_medic_log.base.provider.FileHelper) ProgressBar(android.widget.ProgressBar) ILogger(m.co.rh.id.alogger.ILogger) BehaviorSubject(io.reactivex.rxjava3.subjects.BehaviorSubject) AppBarSV(m.co.rh.id.a_medic_log.app.ui.component.AppBarSV) BaseApplication(m.co.rh.id.a_medic_log.base.BaseApplication) Schedulers(io.reactivex.rxjava3.schedulers.Schedulers) NavInject(m.co.rh.id.anavigator.annotation.NavInject) UiUtils(m.co.rh.id.a_medic_log.app.util.UiUtils) Handler(android.os.Handler) FloatingActionButton(com.google.android.material.floatingactionbutton.FloatingActionButton) View(android.view.View) RxProviderModule(m.co.rh.id.a_medic_log.app.provider.RxProviderModule) ExecutorService(java.util.concurrent.ExecutorService) StatefulView(m.co.rh.id.anavigator.StatefulView) Provider(m.co.rh.id.aprovider.Provider) ViewGroup(android.view.ViewGroup) File(java.io.File) AndroidSchedulers(io.reactivex.rxjava3.android.schedulers.AndroidSchedulers) TextView(android.widget.TextView) ScrollView(android.widget.ScrollView) RxDisposer(m.co.rh.id.a_medic_log.app.rx.RxDisposer) R(m.co.rh.id.a_medic_log.R) BufferedReader(java.io.BufferedReader) FileReader(java.io.FileReader) Activity(android.app.Activity) ViewGroup(android.view.ViewGroup) Handler(android.os.Handler) View(android.view.View) StatefulView(m.co.rh.id.anavigator.StatefulView) TextView(android.widget.TextView) ScrollView(android.widget.ScrollView) RxDisposer(m.co.rh.id.a_medic_log.app.rx.RxDisposer) Provider(m.co.rh.id.aprovider.Provider) FileHelper(m.co.rh.id.a_medic_log.base.provider.FileHelper) ScrollView(android.widget.ScrollView) RxProviderModule(m.co.rh.id.a_medic_log.app.provider.RxProviderModule) BufferedReader(java.io.BufferedReader) FloatingActionButton(com.google.android.material.floatingactionbutton.FloatingActionButton) TextView(android.widget.TextView) ILogger(m.co.rh.id.alogger.ILogger) FileReader(java.io.FileReader) ProgressBar(android.widget.ProgressBar) File(java.io.File)

Example 5 with BehaviorSubject

use of io.reactivex.rxjava3.subjects.BehaviorSubject in project RxJava by ReactiveX.

the class ObservableDoOnUnsubscribeTest method noReentrantDispose.

@Test
public void noReentrantDispose() {
    final AtomicInteger disposeCalled = new AtomicInteger();
    final BehaviorSubject<Integer> s = BehaviorSubject.create();
    s.doOnDispose(new Action() {

        @Override
        public void run() throws Exception {
            disposeCalled.incrementAndGet();
            s.onNext(2);
        }
    }).firstOrError().subscribe().dispose();
    assertEquals(1, disposeCalled.get());
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) RxJavaTest(io.reactivex.rxjava3.core.RxJavaTest) Test(org.junit.Test)

Aggregations

TestException (io.reactivex.rxjava3.exceptions.TestException)5 Test (org.junit.Test)3 RxJavaTest (io.reactivex.rxjava3.core.RxJavaTest)2 Disposable (io.reactivex.rxjava3.disposables.Disposable)2 BehaviorSubject (io.reactivex.rxjava3.subjects.BehaviorSubject)2 Activity (android.app.Activity)1 Handler (android.os.Handler)1 View (android.view.View)1 ViewGroup (android.view.ViewGroup)1 ProgressBar (android.widget.ProgressBar)1 ScrollView (android.widget.ScrollView)1 TextView (android.widget.TextView)1 FloatingActionButton (com.google.android.material.floatingactionbutton.FloatingActionButton)1 Txn (com.radixdlt.atom.Txn)1 BFTCommittedUpdate (com.radixdlt.consensus.bft.BFTCommittedUpdate)1 PreparedVertex (com.radixdlt.consensus.bft.PreparedVertex)1 TestInvariant (com.radixdlt.harness.simulation.TestInvariant)1 NodeEvents (com.radixdlt.harness.simulation.monitors.NodeEvents)1 RunningNetwork (com.radixdlt.harness.simulation.network.SimulationNodes.RunningNetwork)1 AndroidSchedulers (io.reactivex.rxjava3.android.schedulers.AndroidSchedulers)1