function testUnder() { $transition = new Transition('A', 'B'); $transition->setStates(array('A', 'C', 'D', 'F')); $transition->addGuard('atMost', 4, array('C', 'D', 'E', 'F', 'G')); $this->assertEquals(array(), $transition->explain()); }
function testImpossibleCondition() { $transition = new Transition('A', 'B'); $transition->setStates(array('A', 'C', 'D', 'F')); $transition->addGuard('atLeast', 4, array('C', 'D', 'E')); $this->assertEquals(array(array('class' => 'invalid', 'count' => 4, 'set' => array('C', 'D', 'E'))), $transition->explain()); }
function getAvailableTransitions( $object, $type = null ) { $states = $this->getCurrentStates($object, $type); $transitions = $this->getTransitionsFromStates($states); $transitions = Perms::filter( array('type' => 'transition'), 'object', $transitions, array('object' => 'transitionId'), 'trigger_transition' ); foreach ( $transitions as & $tr ) { $object = new Transition($tr['from'], $tr['to']); $object->setStates($states); foreach ( $tr['guards'] as $guard ) { call_user_func_array(array($object, 'addGuard' ), $guard); } $tr['enabled'] = $object->isReady(); $tr['explain'] = $object->explain(); } return $transitions; }