izzum\statemachine\State::getTransitionsTriggeredByEvent PHP Method

getTransitionsTriggeredByEvent() public method

get the transition for this state that can be triggered by an event code.
public getTransitionsTriggeredByEvent ( string $event ) : Transition[]
$event string the event code that can trigger a transition (mealy machine)
return Transition[]
    public function getTransitionsTriggeredByEvent($event)
    {
        $output = array();
        foreach ($this->getTransitions() as $transition) {
            if ($transition->isTriggeredBy($event)) {
                $output[] = $transition;
            }
        }
        return $output;
    }

Usage Example

 /**
  * @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'));
 }