Rx\Functional\Operator\CatchErrorTest::catchError_ThrowFromNestedCatch PHP Method

catchError_ThrowFromNestedCatch() public method

    public function catchError_ThrowFromNestedCatch()
    {
        $error = new \Exception();
        $error2 = new \InvalidArgumentException();
        $firstHandlerCalled = false;
        $secondHandlerCalled = false;
        $o1 = $this->createHotObservable([onNext(150, 1), onNext(210, 2), onError(215, $error)]);
        $o2 = $this->createHotObservable([onNext(220, 3), onError(225, $error2)]);
        $o3 = $this->createHotObservable([onNext(230, 4), onCompleted(235)]);
        $results = $this->scheduler->startWithCreate(function () use($o1, $o2, $o3, &$firstHandlerCalled, &$secondHandlerCalled, $error, $error2) {
            return $o1->catchError(function ($e) use($o2, &$firstHandlerCalled, $error) {
                $firstHandlerCalled = true;
                $this->assertSame($e, $error);
                return $o2;
            })->catchError(function ($e) use($o3, &$secondHandlerCalled, $error2) {
                $secondHandlerCalled = true;
                $this->assertSame($e, $error2);
                return $o3;
            });
        });
        $this->assertMessages([onNext(210, 2), onNext(220, 3), onNext(230, 4), onCompleted(235)], $results->getMessages());
        $this->assertTrue($firstHandlerCalled);
        $this->assertTrue($secondHandlerCalled);
    }