public function shouldBeAbleToSetCallable()
{
$context = new Context(new Identifier('123', 'foo-machine'));
$event = 'foo';
//increase the id every time the callable is called
$callable = function ($entity) {
$entity->setEntityId($entity->getEntityId() + 1);
};
//scenario 1: use constructor
$state = new State('a', State::TYPE_NORMAL, null, null, $callable, $callable);
$this->assertEquals('123', $context->getEntityId());
$state->entryAction($context);
$this->assertEquals('124', $context->getEntityId());
$state->exitAction($context);
$this->assertEquals('125', $context->getEntityId());
//scenario 2: use setters
$state = new State('b', State::TYPE_NORMAL);
$state->setEntryCallable($callable);
$state->setExitCallable($callable);
$this->assertEquals('125', $context->getEntityId());
$state->entryAction($context);
$this->assertEquals('126', $context->getEntityId());
$state->exitAction($context);
$this->assertEquals('127', $context->getEntityId());
}