/** * @dataProvider containerProvider * @param RuntimeContainer $container */ 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); }