/** @dataProvider valueDataProvider */ public function testDelayGeneratorCreator($value) { static $index = 0; $this->given($timeout = 500, $current = 0, $this->function->microtime = function () use($timeout, &$current) { $value = $current; $current += $timeout / 1000; return $value; }, $creator = function ($limit, $value) { while ($limit-- > 0) { yield; } return (function () use($value) { yield; return $value; })(); })->then->object($generator = testedClass::delay($timeout, $creator(3, $value)))->isInstanceOf(\generator::class)->variable(async\runtime::await($generator))->isIdenticalTo($value)->function('microtime')->wasCalledWithArguments(true)->exactly(++$index * 2); }
/** * @api * * @param int $timeout * @param mixed $resolve * * @return \generator */ function delay(int $timeout, $resolve = null) : \generator { return time::delay($timeout, $resolve); }