Esempio n. 1
0
 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());
 }
Esempio n. 2
0
 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());
 }
Esempio n. 3
0
 /**
  * @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;
 }
Esempio n. 4
0
 /**
  * @return string|bool
  */
 public function next()
 {
     return $this->rule->getByMarker($this->marker);
 }