iter\IterRewindableTest::testRewindableGenerator PHP Метод

testRewindableGenerator() публичный Метод

    public function testRewindableGenerator()
    {
        // Make sure that send() and throw() work with rewindable generator
        $genFn = makeRewindable(function () {
            $startValue = yield;
            try {
                for (;;) {
                    (yield $startValue++);
                }
            } catch (\Exception $e) {
                (yield 'end');
            }
        });
        /** @var rewindable\_RewindableGenerator $gen */
        $gen = $genFn();
        for ($i = 0; $i < 2; ++$i) {
            $gen->rewind();
            $gen->send(10);
            $this->assertEquals(10, $gen->current());
            $gen->next();
            $this->assertEquals(11, $gen->current());
            $gen->next();
            $this->assertEquals(12, $gen->current());
            $gen->throw(new \Exception());
            $this->assertEquals('end', $gen->current());
        }
    }