Rx\Functional\Operator\RepeatWhenTest::repeatWhen_next_error PHP Method

repeatWhen_next_error() public method

    public function repeatWhen_next_error()
    {
        $error = new Exception("test");
        $xs = $this->createColdObservable([onNext(10, 1), onNext(20, 2), onError(30, $error), onCompleted(40)]);
        $results = $this->scheduler->startWithCreate(function () use($xs, $error) {
            return $xs->repeatWhen(function (Observable $attempts) use($error) {
                return $attempts->scan(function ($count) use($error) {
                    if (++$count === 2) {
                        throw $error;
                    }
                    return $count;
                }, 0);
            });
        });
        $this->assertMessages([onNext(210, 1), onNext(220, 2), onError(230, $error)], $results->getMessages());
        $this->assertSubscriptions([subscribe(200, 230)], $xs->getSubscriptions());
    }