public function testCaseCreate_BehavesAsIntended($container)
{
$core = $this->createCore();
$loop = $this->createLoop();
$model = $container->getModel();
$model->setCore($core);
$model->setLoop($loop);
$events = [];
$addEvent = function ($name) use(&$events) {
$events[] = $name;
};
$awaitEvent = function ($name) use($container, $addEvent) {
$container->on($name, function () use($name, $addEvent) {
$addEvent($name);
});
};
$awaitEvent('beforeCreate');
$awaitEvent('create');
$awaitEvent('afterCreate');
$awaitEvent('beforeStart');
$awaitEvent('start');
$awaitEvent('afterStart');
$container->once('create', function () use($loop) {
$loop->stop();
});
$container->create()->then($this->expectCallableOnce());
$this->assertSame(['beforeCreate', 'create', 'afterCreate', 'beforeStart', 'start', 'afterStart'], $events);
unset($container);
unset($model);
unset($loop);
unset($core);
}