Beispiel #1
0
 /** @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 $interval
 * @param $resolve
 *
 * @return \generator
 */
function throttle(int $interval, $resolve) : \generator
{
    return time::throttle($interval, $resolve);
}