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); }
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); } }