public function testProtectedApiStartLoop_RestartsLoop_WhenNeeded()
{
$loop = $this->getMock(Loop::class, [], [], '', false);
$loop->expects($this->twice())->method('start');
$cnt = 0;
$runtime = $this->createModel([], ['getLoop']);
$runtime->expects($this->twice())->method('getLoop')->will($this->returnCallback(function () use(&$cnt, $loop, $runtime) {
$cnt++;
$next = $cnt % 2 === 1 ? RuntimeModel::LOOP_STATE_STARTED : RuntimeModel::LOOP_STATE_STOPPED;
$this->setProtectedProperty($runtime, 'loopNextState', $next);
return $loop;
}));
$next = RuntimeModel::LOOP_STATE_STARTED;
$this->setProtectedProperty($runtime, 'loopNextState', [$next]);
$this->callProtectedMethod($runtime, 'startLoop');
}