/** * Test the possilbe math functions defined for filter option */ public function testMathFunctions() { try { $odataUriExpression = 'round(Price) eq 200.60'; $parser = new ExpressionParser2($odataUriExpression, $this->_northWindMetadata->resolveResourceSet('Orders')->getResourceType(), null); $expressionTree = $parser->parseFilter(); $expressionProcessor = new ExpressionProcessor($expressionTree, new PHPExpressionProvider('$lt')); $actualPHPExpression = $expressionProcessor->processExpression(); $expectedPHPExpression = '(!(is_null($lt->Price)) && (round($lt->Price) == 200.60))'; $this->AssertEquals($actualPHPExpression, $expectedPHPExpression); $odataUriExpression = 'ceiling(floor(Price) add 5) eq 345.90'; $parser->resetParser($odataUriExpression); $expressionProcessor->setExpression($parser->parseFilter()); $actualPHPExpression = $expressionProcessor->processExpression(); $expectedPHPExpression = '(!(is_null($lt->Price)) && (ceil((floor($lt->Price) + 5)) == 345.90))'; $this->AssertEquals($actualPHPExpression, $expectedPHPExpression); } catch (ODataException $exception) { $this->fail('An unexpected ODataException has been raised.' . $exception->getMessage()); } }