/** * @return array */ public function generateFile_dataProvider() { $sm = new StateMachine(new EventDispatcher()); $sm->addTransition(new StateMachine\Transition\GenericTransition('foo'), new StateMachine\State('test'), new StateMachine\State('test2')); $sm->addTransition(new StateMachine\Transition\GenericTransition('foo2'), new StateMachine\State('test2'), new StateMachine\State('test')); $sm2 = new StateMachine(new EventDispatcher()); $sm2->addTransition(new StateMachine\Transition\GenericTransition('foo'), new StateMachine\State('test'), new StateMachine\State('test2')); $sm2->addTransition(new StateMachine\Transition\GenericTransition('foo2'), new StateMachine\State('test2'), new StateMachine\State('test3')); $sm2->addTransition(new StateMachine\Transition\GenericTransition('foo2'), new StateMachine\State('test'), new StateMachine\State('test3')); return array(array($sm), array($sm), array($this->initOrderStateMachine())); }
/** * @param StateMachine $stateMachine * @return string */ public function generateDotFileData(StateMachine $stateMachine) { $this->nodeLabels = array(); $this->nodeIndex = 'a'; $return = "digraph {\n\t\t\t\r\n"; $states = $stateMachine->getStates(); $object = new DummyStateObject(); foreach ($states as $state) { $object->setState($state); $nextStates = $stateMachine->getNextStates($object); foreach ($nextStates as $nextState) { $transitionName = $stateMachine->getTransitionName($state, $nextState); $return .= $this->getNodeIndex($state->getName()) . ' -> ' . $this->getNodeIndex($nextState->getName()) . ' [label="' . $transitionName . '"]' . ";\r\n"; } } $return .= "\r\n"; foreach ($this->nodeLabels as $nodeIndex => $nodeLabel) { $return .= '"' . $nodeIndex . '" [label="' . $nodeLabel . '"]' . "\r\n"; } $return .= "\r\n"; $return .= '}'; return $return; }