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

map_and_map_Optimization() public method

    public function map_and_map_Optimization()
    {
        $invoked1 = 0;
        $invoked2 = 0;
        $xs = $this->createHotObservable([onNext(110, 1), onNext(180, 2), onNext(230, 3), onNext(270, 4), onNext(340, 5), onNext(380, 6), onNext(390, 7), onNext(450, 8), onNext(470, 9), onNext(560, 10), onNext(580, 11), onCompleted(600), onNext(610, 12), onError(620, new Exception()), onCompleted(630)]);
        $results = $this->scheduler->startWithCreate(function () use($xs, &$invoked1, &$invoked2) {
            return $xs->map(function ($x) use(&$invoked1) {
                $invoked1++;
                return $x * 2;
            })->map(function ($x) use(&$invoked2) {
                $invoked2++;
                return $x / 2;
            });
        });
        $this->assertMessages([onNext(230, 3), onNext(270, 4), onNext(340, 5), onNext(380, 6), onNext(390, 7), onNext(450, 8), onNext(470, 9), onNext(560, 10), onNext(580, 11), onCompleted(600)], $results->getMessages());
        $this->assertSubscriptions([subscribe(200, 600)], $xs->getSubscriptions());
        $this->assertEquals(9, $invoked1);
        $this->assertEquals(9, $invoked2);
    }