get the transition for this state that can be triggered by an event code.
public getTransitionsTriggeredByEvent ( string $event ) : |
||
$event | string | the event code that can trigger a transition (mealy machine) |
return |
/** * @test */ public function shouldReturnTransitionForEvent() { $a = new State('a'); $b = new State('b'); $c = new State('c'); $d = new State('d'); $tab = new Transition($a, $b); $tac = new Transition($a, $c); $tbc = new Transition($b, $c); $tba = new Transition($b, $a, 'b-a'); $tbb = new Transition($b, $b, 'event-self'); // self transition $tda = new Transition($d, $a, 'possible-to-handle-more-than-one-from-d'); $tdc = new Transition($d, $c, 'possible-to-handle-more-than-one-from-d'); $this->assertEquals(array($tba), $b->getTransitionsTriggeredByEvent('b-a')); $this->assertEquals(array($tbb), $b->getTransitionsTriggeredByEvent('event-self')); $this->assertEquals(array($tbc), $b->getTransitionsTriggeredByEvent('b_to_c'), 'default name is transition name'); $this->assertEquals(array($tab), $a->getTransitionsTriggeredByEvent('a_to_b'), 'default name is transition name'); $this->assertEquals(array($tda, $tdc), $d->getTransitionsTriggeredByEvent('possible-to-handle-more-than-one-from-d')); $this->assertEquals(array(), $a->getTransitionsTriggeredByEvent('b-a')); $this->assertEquals(array(), $a->getTransitionsTriggeredByEvent('even-self')); $this->assertEquals(array(), $a->getTransitionsTriggeredByEvent('event-self')); $this->assertEquals(array(), $b->getTransitionsTriggeredByEvent('bogus')); $this->assertEquals(array(), $a->getTransitionsTriggeredByEvent('bogus')); $this->assertEquals(array(), $c->getTransitionsTriggeredByEvent('bogus')); $this->assertEquals(array(), $c->getTransitionsTriggeredByEvent('event-self')); $this->assertEquals(array(), $c->getTransitionsTriggeredByEvent('b-a')); }