/** * Converts instance of \ArrayAccess to key => value array entry * * @param \ArrayAccess $object * * @return array|null * @throws \Prophecy\Exception\InvalidArgumentException */ private function convertArrayAccessToEntry(\ArrayAccess $object) { if (!$this->key instanceof ExactValueToken) { throw new InvalidArgumentException(sprintf('You can only use exact value tokens to match key of ArrayAccess object' . PHP_EOL . 'But you used `%s`.', $this->key)); } $key = $this->key->getValue(); return $object->offsetExists($key) ? array($key => $object[$key]) : array(); }
/** * @param \Prophecy\Argument\Token\TokenInterface $token1 * @param \Prophecy\Argument\Token\TokenInterface $token2 */ function it_does_not_score_if_either_of_tokens_does_not_score($token1, $token2) { $token1->scoreArgument(1)->willReturn(10); $token1->scoreArgument(2)->willReturn(false); $token2->scoreArgument(1)->willReturn(false); $token2->scoreArgument(2)->willReturn(10); $this->beConstructedWith(array($token1, $token2)); $this->scoreArgument(1)->shouldReturn(false); $this->scoreArgument(2)->shouldReturn(false); }
function it_should_calculate_score_until_last_token(TokenInterface $token1, TokenInterface $token2, TokenInterface $token3) { $token1->scoreArgument('one')->willReturn(3); $token1->isLast()->willReturn(false); $token2->scoreArgument(2)->willReturn(7); $token2->isLast()->willReturn(true); $token3->scoreArgument($obj = new \stdClass())->willReturn(10); $token3->isLast()->willReturn(false); $this->beConstructedWith(array($token1, $token2, $token3)); $this->scoreArguments(array('one', 2, $obj))->shouldReturn(10); }
function it_scores_traversable_object_from_value_token(TokenInterface $value, \Iterator $object) { $object->current()->will(function ($args, $object) { $object->valid()->willReturn(false); return 'value'; }); $object->key()->willReturn('key'); $object->rewind()->willReturn(null); $object->next()->willReturn(null); $object->valid()->willReturn(true); $value->scoreArgument('value')->willReturn(2); $this->scoreArgument($object)->shouldBe(2); }
/** * @param \Prophecy\Argument\Token\TokenInterface $value * @param \Iterator $object */ function it_scores_traversable_object_from_value_token($value, $object) { $object->current()->will(function ($args, $object) { $object->valid()->willReturn(FALSE); return 'value'; }); $object->key()->willReturn('key'); $object->rewind()->willReturn(NULL); $object->next()->willReturn(NULL); $object->valid()->willReturn(TRUE); $value->scoreArgument('value')->willReturn(2); $this->scoreArgument($object)->shouldBe(2); }
/** * @param \Prophecy\Argument\Token\ExactValueToken $key * @param \Prophecy\Argument\Token\TokenInterface $value * @param \ArrayAccess $object */ function it_does_not_score_array_accessible_object_if_key_and_value_tokens_do_not_score_same_entry($key, $value, $object) { $object->offsetExists('key')->willReturn(true); $object->offsetGet('key')->willReturn('value'); $key->getValue()->willReturn('key'); $value->scoreArgument('value')->willReturn(false); $key->scoreArgument('key')->willReturn(true); $this->scoreArgument($object)->shouldBe(false); }
/** * Returns true if preset token is last. * * @return bool|int */ public function isLast() { return $this->token->isLast(); }