public function testApiStart_BehavesAsIntended()
{
$core = $this->createCore();
$emitter = $this->createEmitter();
$model = $this->createModel($core, $emitter);
$events = [];
$addEvent = function ($name) use(&$events) {
$events[] = $name;
};
$awaitEvent = function ($name) use($emitter, $addEvent) {
$emitter->on($name, function () use($name, $addEvent) {
$addEvent($name);
});
};
$awaitEvent('beforeStart');
$awaitEvent('start');
$awaitEvent('afterStart');
$model->setState(Runtime::STATE_CREATED);
$model->start()->then($this->expectCallableOnce());
$this->assertSame(Runtime::STATE_STARTED, $model->getState());
$this->assertSame(['beforeStart', 'start', 'afterStart'], $events);
unset($model);
unset($emitter);
unset($core);
}