public function eventloop_schedule_recursive()
{
$loop = Factory::create();
$scheduler = new EventLoopScheduler($loop);
$actionCalled = false;
$count = 0;
$action = function ($reschedule) use(&$actionCalled, &$count, $loop) {
$actionCalled = true;
$count++;
if ($count < 5) {
$reschedule();
return;
}
$loop->stop();
};
$disposable = $scheduler->scheduleRecursive($action);
$this->assertInstanceOf('Rx\\DisposableInterface', $disposable);
$this->assertFalse($actionCalled);
$this->assertEquals(0, $count);
$loop->run();
$this->assertEquals(5, $count);
$this->assertTrue($actionCalled);
}