/**
  * Parse and generate expression from the the given odata expression.
  *
  * 
  * @param string              $text               The text expression to parse
  * @param ResourceType        $resourceType       The resource type in which
  * @param IExpressionProvider $expressionProvider Implementation of IExpressionProvider
  * 
  * @return FilterInfo
  * 
  * @throws ODataException If any error occurs while parsing the odata expression or building the php/custom expression.
  *
  */
 public static function parseExpression2($text, ResourceType $resourceType, \POData\Providers\Expression\IExpressionProvider $expressionProvider)
 {
     $expressionParser2 = new ExpressionParser2($text, $resourceType, $expressionProvider instanceof PHPExpressionProvider);
     $expressionTree = $expressionParser2->parseFilter();
     $expressionAsString = null;
     $expressionProvider->setResourceType($resourceType);
     $expressionProcessor = new ExpressionProcessor($expressionProvider);
     try {
         $expressionAsString = $expressionProcessor->processExpression($expressionTree);
     } catch (\InvalidArgumentException $invalidArgumentException) {
         throw ODataException::createInternalServerError($invalidArgumentException->getMessage());
     }
     return new FilterInfo($expressionParser2->_navigationPropertiesUsedInTheExpression, $expressionAsString);
 }
 public function testProcessUnknownAbstractExpressionType()
 {
     //Currently the expression parser just ignores expression types it doesn't know
     //TODO: maybe this should throw instead??
     $unknownExpression = \Phockito::mock('POData\\UriProcessor\\QueryProcessor\\ExpressionParser\\Expressions\\AbstractExpression');
     $expressionProcessor = new ExpressionProcessor(new PHPExpressionProvider('$lt'));
     $actual = $expressionProcessor->processExpression($unknownExpression);
     $this->assertNull($actual);
 }