Rx\Functional\Operator\SelectTest::map_with_index_dispose_inside_selector PHP Method

map_with_index_dispose_inside_selector() public method

    public function map_with_index_dispose_inside_selector()
    {
        $xs = $this->createHotObservable([onNext(100, 4), onNext(200, 3), onNext(500, 2), onNext(600, 1)]);
        $invoked = 0;
        $results = $this->scheduler->createObserver();
        $d = new SerialDisposable();
        $d->setDisposable($xs->mapWithIndex(function ($index, $x) use(&$invoked, $d) {
            $invoked++;
            if ($this->scheduler->getClock() > 400) {
                $d->dispose();
            }
            return $x + $index * 10;
        })->subscribe($results));
        $this->scheduler->scheduleAbsolute(TestScheduler::DISPOSED, function () use($d) {
            $d->dispose();
        });
        $this->scheduler->start();
        $this->assertMessages([onNext(100, 4), onNext(200, 13)], $results->getMessages());
        $this->assertSubscriptions([subscribe(0, 500)], $xs->getSubscriptions());
        $this->assertEquals(3, $invoked);
    }