function it_throw_exception_if_evaluator_does_not_exists()
 {
     $evaluator = new RegexEvaluator();
     $condition = new Condition();
     $condition->setType($evaluator->getName());
     $this->shouldThrow('DeviceDetectorIO\\DeviceDetector\\Exception\\EvaluatorNotFoundException')->during('resolve', array($condition));
 }
 function it_return_next_position()
 {
     $rule = new Rule();
     $condition = new Condition();
     $condition->setPosition(0);
     $occurence1 = new Occurrence($rule, $condition, new Node('', 1, NodeInterface::TYPE_SPACE));
     $condition = new Condition();
     $condition->setPosition(1);
     $occurence2 = new Occurrence($rule, $condition, new Node('', 2, NodeInterface::TYPE_SPACE));
     $this->add($occurence1);
     $this->add($occurence2);
     $this->getNext($occurence1)->shouldBeEqualTo($occurence2);
     $this->getNext($occurence2)->shouldReturn(false);
 }
Example #3
0
 function it_find_occurrences(RepositoryInterface $repository, ComparerInterface $comparer, UserAgentTokenizedToken $token, Rule $rule)
 {
     $this->beConstructedWith($repository, $comparer);
     $node1 = new Node('chrome', 0, Node::TYPE_TEXT);
     $node2 = new Node('/', 1, Node::TYPE_TEXT);
     $node3 = new Node('12.05b', 2, Node::TYPE_TEXT);
     $token->getData()->shouldBeCalled()->willReturn(array($node1, $node2, $node3));
     $condition = new Condition();
     $condition->setPosition(0);
     $conditions = new \ArrayIterator(array($condition));
     $rule->getConditions()->shouldBeCalled()->willReturn($conditions);
     $repository->getIndexableRulesByUserAgentToken(Argument::exact($token->getWrappedObject()))->shouldBeCalled()->willReturn(array($rule));
     $comparer->areEquals(Argument::exact($node1), Argument::exact($condition))->shouldBeCalled()->willReturn(true);
     $comparer->areEquals(Argument::exact($node2), Argument::exact($condition))->shouldBeCalled()->willReturn(false);
     $comparer->areEquals(Argument::exact($node3), Argument::exact($condition))->shouldBeCalled()->willReturn(true);
     $occurrences = $this->find($token);
     $occurrences->shouldBeAnInstanceOf('DeviceDetectorIO\\DeviceDetector\\Rule\\Occurrence\\Occurrences');
     $firstOccurrences = $occurrences->getFirstOccurrences();
     $firstOccurrences->shouldHaveCount(2);
 }
 /**
  * @param array $configuration
  * @param RuleInterface $rule
  */
 private function handleConditions(array $configuration, RuleInterface $rule)
 {
     foreach ($configuration['conditions'] as $position => $conditionConfiguration) {
         $condition = new Condition();
         $condition->setType($conditionConfiguration['type']);
         $condition->setValue($conditionConfiguration['value']);
         $condition->setStrategy(isset($conditionConfiguration['strategy']) ? $conditionConfiguration['strategy'] : ConditionInterface::STRATEGY_NEXT);
         $condition->setPosition($position);
         $condition->setDynamicCapabilities(isset($conditionConfiguration['capabilities']) ? $conditionConfiguration['capabilities'] : array());
         $rule->addCondition($condition);
     }
 }