Exemple #1
0
 public function testEvaluateConditions()
 {
     // Base Case
     $state = new State('dummy');
     $conditionOne = new Condition(function ($context) {
         return $context->getLabel() === 'fresh';
     }, 'one');
     $conditionTwo = new Condition(function ($context) {
         return $context->getNum() <= 1;
     }, 'two', 'three');
     $one = new State('one');
     $two = new State('two');
     $three = new State('three');
     $conditionOne->setTrueState($one);
     $conditionTwo->setTrueState($two);
     $conditionTwo->setFalseState($three);
     $state->addCondition($conditionOne);
     $state->addCondition($conditionTwo);
     $context = new DummyContext();
     $context->setLabel('fresh');
     // One
     $this->assertEquals('one', $state->evaluateConditions($context)->getName());
     // Two
     $context->setLabel('soggy');
     $this->assertEquals('two', $state->evaluateConditions($context)->getName());
     // Three
     $context->increment();
     $this->assertEquals('three', $state->evaluateConditions($context)->getName());
 }