izzum\statemachine\StateTest::shouldBeAbleToSetCallable PHP 메소드

shouldBeAbleToSetCallable() 공개 메소드

    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());
    }