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

catchError_does_not_lose_subscription() public method

does not lose subscription to underlying observable
    public function catchError_does_not_lose_subscription()
    {
        $subscribes = 0;
        $unsubscribes = 0;
        $tracer = Observable::create(function () use(&$subscribes, &$unsubscribes) {
            ++$subscribes;
            return new CallbackDisposable(function () use(&$unsubscribes) {
                ++$unsubscribes;
            });
        });
        // Try it without catchError()
        $s = $tracer->subscribe(new CallbackObserver());
        $this->assertEquals($subscribes, 1, '1 subscribes');
        $this->assertEquals($unsubscribes, 0, '0 unsubscribes');
        $s->dispose();
        $this->assertEquals($subscribes, 1, 'After dispose: 1 subscribes');
        $this->assertEquals($unsubscribes, 1, 'After dispose: 1 unsubscribes');
        // And now try again with catchError(function()):
        $subscribes = 0;
        $unsubscribes = 0;
        $s = $tracer->catchError(function () {
            return Observable::never();
        })->subscribe(new CallbackObserver());
        $this->assertEquals($subscribes, 1, 'catchError(Observable): 1 subscribes');
        $this->assertEquals($unsubscribes, 0, 'catchError(Observable): 0 unsubscribes');
        $s->dispose();
        $this->assertEquals($subscribes, 1, 'catchError(Observable): After dispose: 1 subscribes');
        $this->assertEquals($unsubscribes, 1, 'catchError(Observable): After dispose: 1 unsubscribes');
    }