public function testRetryWhenDispose()
{
$xs = $this->createColdObservable([onNext(10, 1), onNext(20, 2), onNext(30, 3), onNext(40, 4), onCompleted(50)]);
$results = $this->scheduler->startWithDispose(function () use($xs) {
return $xs->map(function ($x) {
if ($x > 2) {
throw new \Exception();
}
return $x;
})->retryWhen(function (Observable $attempts) {
return $attempts;
});
}, 285);
$this->assertMessages([onNext(210, 1), onNext(220, 2), onNext(240, 1), onNext(250, 2), onNext(270, 1), onNext(280, 2)], $results->getMessages());
$this->assertSubscriptions([subscribe(200, 230), subscribe(230, 260), subscribe(260, 285)], $xs->getSubscriptions());
}