function it_break_visiting_on_certain_status(VisitorInterface $visitor, TokenPoolInterface $tokenPool, TokenInterface $token, CollatorInterface $collector)
 {
     $tokenPool->getIterator()->shouldBeCalledTimes(1)->willReturn(new \ArrayIterator(array($token->getWrappedObject())));
     $visitor->accept(Argument::exact($token->getWrappedObject()), Argument::exact($collector->getWrappedObject()))->shouldBeCalledTimes(1)->willReturn(true);
     $visitor->visit(Argument::exact($token->getWrappedObject()), Argument::exact($collector->getWrappedObject()))->shouldBeCalledTimes(1)->willReturn(VisitorInterface::STATE_FOUND);
     $this->add($visitor, -255)->shouldReturn(true);
     $this->visit($tokenPool, $collector)->shouldReturn($this);
 }
 function it_visit_token(MatcherInterface $matcher, TokenInterface $token, CollatorInterface $collator, MatcherInterface $matcher, MergingStrategyInterface $mergingStrategy, RuleInterface $rule)
 {
     $this->beConstructedWith($matcher, $mergingStrategy);
     $rules = new \ArrayIterator(array($rule->getWrappedObject()));
     $matcher->match(Argument::exact($token->getWrappedObject()))->shouldBeCalledTimes(1)->willReturn($rules);
     $mergingStrategy->merge(Argument::exact($rules), Argument::exact($collator->getWrappedObject()))->shouldBeCalledTimes(1);
     $this->visit($token, $collator)->shouldReturn(VisitorInterface::STATE_SEEKING);
 }
 function it_match_bu_using_repository_and_resolver(TokenInterface $token, RepositoryInterface $repository, ResolverInterface $resolver, Rule $rule, EvaluatorInterface $evaluator)
 {
     $this->beConstructedWith($repository, $resolver);
     $condition = new Condition();
     $conditions = array($condition);
     $rule->getConditions()->shouldBeCalled()->willReturn($conditions);
     $rules = array($rule);
     $repository->getNonIndexableRules()->shouldBeCalled()->willReturn($rules);
     $resolver->resolve(Argument::exact($condition))->shouldBeCalled()->willReturn($evaluator);
     $evaluator->evaluate(Argument::exact($token->getWrappedObject()), $condition, Argument::exact($rule->getWrappedObject()))->shouldBeCalled()->willReturn(true);
     $results = $this->match($token);
     $results->shouldReturnAnInstanceOf('\\Iterator');
     $results->shouldHaveCount(1);
     $results->shouldHaveKey($rule);
 }