function testImpossibleCondition() { $transition = new Tiki_Transition('A', 'B'); $transition->setStates(array('A', 'C', 'D', 'F')); $transition->addGuard('exactly', 4, array('C', 'D', 'E')); $this->assertEquals(array(array('class' => 'invalid', 'count' => 4, 'set' => array('C', 'D', 'E'))), $transition->explain()); }
function testUnder() { $transition = new Tiki_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()); }
/** * @param $object * @param null $type * @return array */ 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 Tiki_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; }