public function testNext() { $rule = new Rule(); $object = new Situation(new Table(), $rule); $this->assertFalse($object->next()); $nextRule = new Rule(); $rule->setRight([$nextRule]); $this->assertSame($nextRule, $object->next()); }
public function testGetKey() { $state = new SituationSet(); $ruleA = new Rule(); $ruleA->setId(12); $ruleB = new Rule(); $ruleB->setId(13); $state->add(new Situation(new Table(), $ruleA, 1)); $state->add(new Situation(new Table(), $ruleB, 2)); $this->assertEquals('12.1|13.2', $state->getKey()); $this->assertEquals('12.1|13.2', $state->getKey()); }
/** * @param Syntax $syntax * * @return array */ public function addRules(Syntax $syntax) { $tokens = []; foreach ($syntax->getRules() as $token) { foreach ($token->getExpressions() as $expression) { $rule = new Rule(); $rule->setLeft($token->getName()); $rule->setRight($expression->getTokens()); $rule->setCallback($expression->getCallback()); $this->left->getRuleSet($token->getName())->addRule($rule); $this->ordered->addRule($rule); foreach ($rule->getRight() as $right) { $this->right->getRuleSet($right)->addRule($rule); $tokens[] = $right; } } } $tokens = array_unique($tokens); return $tokens; }
/** * @return string|bool */ public function next() { return $this->rule->getByMarker($this->marker); }