protected function getMetadata(O\Expression $expression) { if (!isset($this->metadata[$expression])) { throw new TypeException('Cannot get metadata for expression of type \'%s\': the expression has no associated metadata', $expression->getType()); } return $this->metadata[$expression]; }
/** * @dataProvider expressions */ public function testExpressionWalkerPassesTheCorrectParameters(O\Expression $expression) { $called = false; $expressionWalker = new O\DynamicExpressionWalker([$expression->getType() => function ($walkedExpression, $calledWalker) use($expression, &$called, &$expressionWalker) { $called = true; $this->assertSame($expression, $walkedExpression); $this->assertSame($expressionWalker, $calledWalker); }]); $expressionWalker->walk($expression); $this->assertTrue($called); }
/** * @param string $name * @param mixed[] $arguments * * @return O\MethodCallExpression */ protected function newMethod($name, array $arguments = []) { return O\Expression::methodCall($this->expression, O\Expression::value($name), array_map([O\Expression::getType(), 'argument'], array_map([O\Expression::getType(), 'value'], $arguments))); }
public function testOptimizeQueryReturnsExpression() { $this->assertInstanceOf(O\Expression::getType(), $this->queryResultsCollection->optimizeQuery($this->queryable->getExpression())); $this->assertInstanceOf(O\Expression::getType(), $this->queryResultsCollection->optimizeQuery($this->queryable->take(1)->select('strlen')->getExpression())); }